XERJ 设置 MCP 记忆存储路径:Agent 记忆目录的真相与完整实操指南
【免费下载链接】xerjXERJ is the new way for AI to search data. Its autoindex capability activates agents to know your data without the token waste of grep and sed. One command indexes code, docs, logs and PDFs for search, RAG, security audits and agent memory, using 40x fewer tokens than grep. Elasticsearch compatible, so existing clients just work.项目地址https://gitcode.com/GitHub_Trending/xe/xerj点击查看免费下载XERJ 的 Agent 记忆Agent Memory没有独立的存储路径设置——每一份记忆本质上是一个名为.xerj-memory-{namespace}的保留索引存放在节点数据目录node data directory中因此设置节点数据目录就等于设置了记忆落盘位置。本文将从为何没有记忆路径这一设计根源讲起结合 XERJ 源码验证完整演示如何通过--data-dir或配置文件data_dir控制记忆存储位置、如何确认记忆持久化、如何排查重启后召回为空的问题并解释 MCP 记忆服务器为何无法也不需要拥有自己的路径设置。结论先行记忆路径 节点数据目录XERJ 没有 memory 专属的存储路径。Agent 记忆不是带独立配置的独立存储每条记忆只是名为.xerj-memory-{namespace}的保留索引中的一篇普通文档而这个索引落在节点数据目录里。因此命令行用--data-dir短形式-d指定数据目录配置文件在[server]段设置data_dir记忆自动跟随两个设置是同一个设置记忆没有自己的路径参数。官方捕获验证存入一条记忆 → 完全停止节点 → 用同一数据目录重新启动 → 召回recall仍然返回该记忆及其原始 ID证明记忆确实持久化在数据目录中而非内存或 MCP 客户端侧。为什么没有记忆路径这个设置从源码看这个设计是一以贯之的。记忆 API 的实现位于 engine/crates/xerj-api/src/memory_api.rs模块头部注释明确写着每个命名空间namespace由一个保留名称下的普通 XERJ 索引承载.xerj-memory-{namespace}store/recall 复用的正是 ES 兼容面已有的文档、dense_vector、BM25 与元数据过滤代码路径——它不重新实现搜索只是一个薄适配层。保留前缀的定义在 engine/crates/xerj-common/src/types.rs#L190pub const RESERVED_INDEX_PREFIX: str .xerj-memory-; pub fn is_reserved_index(index: str) - bool { index.starts_with(RESERVED_INDEX_PREFIX) }命名空间到索引名的换算逻辑memory_api.rs中的backing_index就是把前缀拼上命名空间fn backing_index(namespace: str) - String { format!({MEMORY_PREFIX}{namespace}) }也就是说调用POST /_memory/agentmem存储一条记忆等于向.xerj-memory-agentmem这个普通索引写入一篇文档。索引在哪里由节点数据目录决定——索引数据的读写都发生在数据目录下engine/crates/xerj-storage/src/index_store.rs 中data_dir贯穿整个 IndexStoresegment 落在data_dir/segmentsWAL 落在data_dir/wal。所以给记忆单独设路径在架构上就没有落点记忆不是独立存储它就是你数据目录里的一个索引。两个设置其实是同一个--data-dir 与 data_dir控制记忆落盘位置的设置有两个入口但语义完全一致。命令行形式xerj --insecure --data-dir ./xerj-data--data-dir短形式-d指定节点数据目录示例中的--insecure表示关闭认证便于本机快速验证见下文本捕获未展示的内容记忆会跟随该路径不存在任何独立的 memory 设置。配置文件形式在 TOML 配置文件中设置[server]段[server] rest_port 8430 grpc_port 8431 es_compat_port 9430 bind_address 127.0.0.1 data_dir run-local path注意官方捕获使用的是配置文件形式并将 ES 兼容端口设为9430默认是9200后续所有 HTTP 调用都打到这个端口。从 engine/crates/xerj-common/src/config.rs#L562-L638 可以看到ServerConfig各字段的默认值rest_port默认8080原生 REST APIgrpc_port默认8081es_compat_port默认9200Elasticsearch 兼容 APIdata_dir默认./databind_address默认127.0.0.1仅回环出厂默认不对外暴露——TLS 默认关闭绑定所有网卡等于明文广播管理员密钥。所以不设置data_dir时记忆默认落在相对路径./data下用--data-dir或配置文件data_dir显式指定后记忆跟随该目录。配置文件默认模板在 engine/xerj.default.toml其中data_dir ./data。磁盘上会出现什么完成一次 store 调用后记忆索引就以普通目录的形式出现在数据目录顶层。官方捕获的目录清单如下-rw------- 1 root root 516 audit.jsonl -rw-r--r-- 1 root root 8 node.lock -rw------- 1 root root 64 .xerj_master_key drwxr-xr-x 4 root root 160 .xerj-memory-agentmem逐项说明条目角色audit.jsonl审计日志追加写入的 JSONLnode.lock节点锁文件标记该目录正被某个运行中的节点独占.xerj_master_key节点主密钥权限 600仅属主可读写.xerj-memory-agentmemagentmem命名空间的记忆索引目录数据目录里还会有 API 令牌、会话、仪表盘、用户与集群状态等其它保留目录以及你索引的全部数据segments、wal等。其中没有任何 memory 专属配置——记忆索引与普通索引共用同一套落盘机制这也是它没有独立路径的直接体现。MCP 服务器为什么无法也不需要拥有路径这是Memory MCP 忽略自定义存储路径设置这一故障表象的根源XERJ 的 MCP 服务器不向磁盘写入任何东西。从 engine/crates/xerj-mcp/src/lib.rs 的 crate 文档可以看到完整设计MCP 服务器走stdio 传输stdin/stdout 上传输换行分隔的 JSON-RPC 2.0 消息每个工具都是薄代理thin proxy构造运行中引擎已接受的请求转发到可配置的 base URL默认http://localhost:9200记忆相关工具直接映射到节点 REST 面xerj_memory_store→POST /_memory/{ns}xerj_memory_recall→POST /_memory/{ns}/_recall见build_memory_store/build_memory_recallengine/crates/xerj-mcp/src/lib.rs#L1527-L1580这个代理不增加任何自身能力——引擎返回什么包括错误就原样回传给 Agent。因此在 MCP 侧配置存储路径没有可配置的对象数据由节点持有。正确做法是两步用XERJ_URL让 MCP 服务器指向正确的节点用该节点的--data-dir/data_dir选择路径。XERJ_URL默认http://localhost:9200MCP 客户端配置示例{ mcpServers: { xerj: { command: /home/you/.local/bin/xerj, args: [mcp], env: { XERJ_URL: http://localhost:9430 } } } }若目标节点未以--insecure运行还需在env中补充XERJ_AUTH: ApiKey key密钥位于data-dir/admin.key。对于回环地址localhost / 127.0.0.1 / [::1]未提供XERJ_AUTH时服务器会自己读取本地节点写入的admin.key与xerj autoindex相同的发现机制并在 stderr 上报告所使用的文件。重启持久化验证完整走一遍官方捕获的验证流程可以用三条命令完整复现假设使用配置文件形式、ES 兼容端口9430、数据目录指向非默认路径第 1 步启动节点非默认数据目录xerj --insecure --data-dir ./xerj-data记忆跟随该路径没有独立的记忆设置。第 2 步存储一条记忆让索引落盘curl -s -XPOST http://127.0.0.1:9430/_memory/agentmem \ -H content-type: application/json \ -d {text:The deploy runbook lives in notes/01-runbook.md.,metadata:{session:A}}首次 store 会惰性创建.xerj-memory-agentmem索引memory_api.rs的ensure_backing_index索引不存在时text字段按semantic_text显式映射、维度 384stored_at按long映射若首次存储携带vector还会按该向量维度建立dense_vector字段以支持 kNN 召回。第 3 步完全停止节点再用同一数据目录启动# 停止节点CtrlC / 结束进程然后 xerj --insecure --data-dir ./xerj-data第 4 步重启后召回curl -s -XPOST http://127.0.0.1:9430/_memory/agentmem/_recall \ -H content-type: application/json \ -d {query:where is the deploy runbook,k:5}官方捕获的重启后召回结果两条记忆均被召回ID 与停止前完全一致idscored6ed79bf-7174-4a6d-9f1d-987a53045a111.45814992b00ed19-8741-49ca-8318-54e9ba8c7a580.27662587ID 不变、内容可召回说明记忆确实随数据目录持久化——这是记忆路径 数据目录最直接的证据。重启后召回为空按顺序排查四件事如果重启后召回返回空结果按下述顺序逐项检查确认数据目录一致用与之前完全相同的--data-dir或data_dir值启动节点。路径写错比如多写一个斜杠、用了相对路径的不同工作目录等于面对一个空目录。确认命名空间一致召回 URL 中的 namespace 必须与存储时一致因为/_memory/other是另一个索引。.xerj-memory-agentmem与.xerj-memory-other物理上是两个不同索引命名空间按名隔离。确认索引已落盘在数据目录清单中查找.xerj-memory-{namespace}。若目录不存在说明该命名空间从未成功存储过或数据目录不对。确认没有第二个节点占用读取node.lock。XERJ 是单节点、无副本一个数据目录只属于一个正在运行的节点若目录被其它进程持有当前节点根本无法使用它写入可能落到了别的目录。此外要记住 namespace 的合法性约束由memory_api.rs的validate_namespace强制必须以小写字母或数字开头仅允许a-z 0-9 _ - .不允许出现..且不能以-edges结尾该后缀预留给 second brain 的边索引防止把记忆写进另一个脑的边索引。安全边界与注意事项命名空间按名隔离而非按凭据隔离/_memory/*端点仅受进程级 API 密钥中间件保护管理员密钥或POST /_security/api_key铸造的密钥没有逐命名空间授权。任何能访问节点的凭据都能读写、删除所有命名空间。不要把命名空间当作互不信任租户之间的安全边界。节点锁与单节点模型node.lock保证一个数据目录同一时间只属于一个运行节点XERJ 无副本不要试图让两个节点共享一个数据目录。admin.key的位置首次启动时管理员密钥写入data_dir/admin.key导出方式为export XERJ_API_KEY$(cat data_dir/admin.key)——这与记忆路径天然一致都是数据目录。本捕获未展示的内容最后说明官方捕获验证的边界避免读者产生误解该捕获通过配置文件设置数据目录而非--data-dir命令行标志节点以--insecure运行关闭认证便于本机验证本轮验证未连接任何 MCP 客户端页面上的所有记忆调用都是对节点的纯 HTTP 请求。因此记忆随数据目录持久化的结论由节点 REST 面验证MCP 侧只是同一组端点的 stdio 代理XERJ_URL指向正确节点、节点--data-dir指向正确目录两者组合即得到完整可用的 Agent 记忆存储方案。延伸阅读跨会话的 Agent 记忆工作流coding-agent-memory-across-sessions中断的自动索引如何恢复、数据目录如何被复用resume-interrupted-autoindex-run存储与数据目录的完整说明storage赞分享【免费下载链接】xerjXERJ is the new way for AI to search data. Its autoindex capability activates agents to know your data without the token waste of grep and sed. One command indexes code, docs, logs and PDFs for search, RAG, security audits and agent memory, using 40x fewer tokens than grep. Elasticsearch compatible, so existing clients just work.项目地址https://gitcode.com/GitHub_Trending/xe/xerj点击查看免费下载相关推荐Kun 记忆记录基座规范 JSON 与可重建 SQLite 投影的混合记忆存储设计Kun 记忆记录基座规范 JSON 与可重建 SQLite 投影的混合记忆存储设计 导读 本文围绕 Kun 项目中长期记忆Memory的 记录基座mem人工智能AI 应用AI Agent多智能体工具调用Agent 工作流AI 技能MCP Clients桌面应用agents-from-scratch 第07课AI Agent记忆系统实战短期记忆与长期记忆的完整构建指南agents from scratch 第07课AI Agent记忆系统实战短期记忆与长期记忆的完整构建指南 这是 agents from scratchCherry Studio 的 Agent 文件记忆、知识库与 MCP 记忆怎么选Cherry Studio 的 Agent 文件记忆、知识库与 MCP 记忆怎么选 在 Cherry Studio v2 里给 Agent 或助手做记忆时AI应用大模型本地部署桌面应用AI Agent上一篇Fabulously Optimized让你的Minecraft游戏体验焕然一新的性能优化模组包解决方案下一篇Hermes Agent启动脚本深度优化依赖检查与错误处理架构设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

V4L2 --- 像素格式、控制参数、调试和项目化

V4L2 --- 像素格式、控制参数、调试和项目化

Video for Linux API version 2(V4L2)是 Linux 系统下用户态访问视频设备的标准内核接口,广泛应用于 USB 摄像头、MIPI CSI 工业相机、视频采集卡、ISP 处理链路等场景。 基础的 V4L2 视频采集遵循 open → QUERYCAP → S_FMT → REQBUFS → …

2026/10/17 6:27:53 阅读更多 →
Docker新手入门:一次搞懂镜像、容器与数据卷

Docker新手入门:一次搞懂镜像、容器与数据卷

Docker这个词,我在新手期听了不下三十遍。每次看到教程里"拉个镜像、起个容器"这种话,我都是一脸懵:镜像是个什么东西?容器又是什么?为什么我要多学一套新名词才能部署一个程序?后来被工作里&quo…

2026/10/17 6:27:53 阅读更多 →
复杂环境铰接式车辆轨迹优化:从运动学建模到Matlab实现

复杂环境铰接式车辆轨迹优化:从运动学建模到Matlab实现

写铰接式车辆轨迹优化这件事,最早是被一台矿用铰接自卸车逼出来的。第一次在实际巷道里调试时,我用的还是传统阿克曼模型做规划,结果车辆在窄弯处后车体直接蹭到了挡墙。那一次之后我才意识到,复杂环境中的轮式铰接车辆轨迹优化&a…

2026/10/17 6:27:53 阅读更多 →

最新新闻

AI辅助科研:赋能学术创新与高效科研成果产出的新路径探索

AI辅助科研:赋能学术创新与高效科研成果产出的新路径探索

很多2026级新生刚入学或刚转博,就被开题报告这四个字整得心力交瘁。最崩溃的不是写不出来,而是你辛辛苦苦熬夜半个月翻出来的创新点,导师看一眼就冷冷地抛回一句:这个方向十年前就有人做透了,前沿性在哪?或…

2026/10/17 6:55:01 阅读更多 →
大模型推理过程故事化透明呈现:原理、实现与落地指南

大模型推理过程故事化透明呈现:原理、实现与落地指南

AI能给出答案,却说不出自己为什么这么想。这句话几乎可以概括过去几年里我跟多数做AI落地朋友共同的痛点。模型输出越强,它内部的推理过程反而越像个黑盒;我们拿到了准确率,却拿不到一条能说给人听的、带逻辑链条的解释。最近某顶…

2026/10/17 6:55:01 阅读更多 →
7131、6293、4762、1579:同一份稿子在四个编辑器里的四个长度

7131、6293、4762、1579:同一份稿子在四个编辑器里的四个长度

7131、6293、4762、1579:同一份稿子在四个编辑器里的四个长度 昨晚我发一篇稿子,脚本的日志里跳出来四个数字。 源文件 7131 博客园 7131 简书 6293(DOM)/ 8779(服务端) 知乎…

2026/10/17 6:55:01 阅读更多 →
Java 转 Python 后端 04: GIL 机制、单线程事件循环与异步并发实战

Java 转 Python 后端 04: GIL 机制、单线程事件循环与异步并发实战

第 5 章 并发体系、异步编程与 Agent 后端实战 5.1 并发基石:GIL 机制与并发选型矩阵 Java 工程师非常熟悉 JVM 内存模型(JMM)、内核线程与 JUC 线程池,在 Java 里多线程可以轻松打满多核 CPU。而在 Python 中,首先需要…

2026/10/17 6:55:01 阅读更多 →
Python集成学习实战:从Bagging手写到LightGBM时序CV与Stacking元特征

Python集成学习实战:从Bagging手写到LightGBM时序CV与Stacking元特征

简介:这是一本面向Python开发者与机器学习实践者的集成学习速成指南,适合已掌握基础Python、NumPy及scikit-learn的中初级学习者,旨在7天内系统掌握装袋、随机森林、AdaBoost、梯度提升、投票与堆叠六大主流集成方法,解决单一模型…

2026/10/17 6:55:01 阅读更多 →
Harbor私有镜像仓库部署与运维实践:从架构到避坑指南

Harbor私有镜像仓库部署与运维实践:从架构到避坑指南

一套业务系统跑了一两年,环境中几十上百个容器,镜像分散在各台机器甚至每个人电脑里,等到要统一发版、回滚版本的时候,才发现连一个准确的镜像清单都凑不出来。这种场景我想很多团队都经历过。所以当我的某位合作伙伴第一次提出“…

2026/10/17 6:54:01 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →