8.7 KiB
Claude Code 的 ReMe 长期记忆插件
先启动 ReMe 服务,再在 Claude Code 中安装 ReMe 插件,即可使用长期记忆。这是本宿主支持的集成方式。
插件统一安装自动召回、完成轮次记录、MCP 工具和内置 reme-memory Skill;ReMe 服务负责工作区中的记忆存储与整理。
插件与本地 marketplace 维护在 integrations/claude_code/,从仓库安装。
使用插件期间,保持 ReMe 服务运行。
启动 ReMe 服务 → 安装 ReMe 插件 → 在 Claude Code 中使用记忆
环境要求
- 宿主环境中有 Python 3.11+,可通过
python3执行,并已安装 FastMCP >= 3.1(ReMe 自带此依赖)。 - 当前 Claude Code 版本支持插件、
UserPromptSubmit、Stop、原生异步命令 Hook 和last_assistant_message。 - 已启动 ReMe HTTP 服务,开放
search、auto_memory、health_check,并启用 MCP。 - ReMe 服务端有可用于自动记忆提取的模型配置。默认 BM25 召回不要求 Embedding。
1. 启动 ReMe 服务
pip install "reme-ai[core]"
reme start workspace_dir=/absolute/path/to/workspace service.backend=http
默认地址为 http://127.0.0.1:2333,MCP 路径为 /mcp。HTTP 服务没有内建 API Key 鉴权,
应保持 loopback 监听或部署受保护的代理。不同 workspace 隔离记忆;不同宿主使用同一 workspace 时会共享召回。
2. 安装 ReMe 插件
在 Claude Code 中使用仓库的绝对路径:
/plugin marketplace add /absolute/path/to/ReMe/integrations/claude_code
/plugin install reme@reme-marketplace
重启 Claude Code 或重新加载已安装的插件,然后新建会话。插件安装会一并加载 Hook、MCP 连接和内置 Skill。 更新后重新安装或加载插件。
3. 在 Claude Code 中使用记忆
在新会话中询问“检查 ReMe 是否可用”,由已安装插件的工具检查服务连接;也可通过 /mcp 查看插件连接状态。
之后正常使用 Claude Code:插件在消息提交前自动召回相关记忆,每完成五轮对话分批记录一次。
需要主动查询时,可以询问“之前关于 Juniper 项目做了什么决定?请附上记忆来源”。
自动记录会把完成的用户/助手文本发送到配置的 ReMe 服务;仅需召回时,将 auto_memory 设为 false。
可选配置
使用默认服务地址时,安装插件后即可使用。需要调整下列默认行为时,再创建配置文件。
直接编辑用户配置文件即可调整地址和行为,升级插件会保留配置。文件中只需写入要覆盖的选项。
配置位于 ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/reme/config.json。首次创建时,可从仓库根目录复制示例;已有文件请直接编辑:
mkdir -p "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/reme"
cp integrations/claude_code/reme/config.example.json "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/reme/config.json"
| 配置项 | 默认值 | 作用 |
|---|---|---|
mcp_url |
http://127.0.0.1:2333/mcp |
ReMe MCP 地址;默认去掉末尾 /mcp 得到 Hook 的 HTTP 地址 |
api_url |
空字符串 | 可选 HTTP Job API 基址;MCP 使用自定义路径时需显式填写 |
auto_recall |
true |
用户提交消息时自动检索 |
auto_memory |
true |
自动捕获与提交;关闭后也不重试已有队列 |
recall_limit |
5 |
检索结果上限 |
recall_min_score |
0 |
自动召回最低分数 |
recall_timeout |
5 |
前台 HTTP 超时秒数,最大 10 |
request_timeout |
600 |
写入与 MCP 请求超时秒数,最大 600 |
memory_interval |
5 |
每批完成的对话轮数;设为 1 则逐轮提交 |
shutdown_timeout |
2 |
退出时尽力刷新队列的总秒数,最大 2 |
context_max_chars |
8000 |
召回正文字符上限 |
timezone |
Asia/Shanghai |
批次按此时区分日,应与 ReMe workspace 一致 |
例如,改用另一个端口并关闭自动记录:
{
"mcp_url": "http://127.0.0.1:2444/mcp",
"auto_memory": false,
"auto_recall": true,
"memory_interval": 1
}
MCP 和 Hook 从同一份用户配置读取地址。Hook 在下一次调用时读取修改;更改地址或 MCP 超时后,
请重新连接 MCP 或重启宿主,确保现有 MCP 进程也使用新配置。无需修改插件源码、安装缓存或重装插件。
使用自定义 MCP 路径时,例如 https://memory.example.com/tools,同时设置
api_url 为 HTTP Job API 基址,例如 https://memory.example.com/reme。
未知字段或无效值会使配置校验失败,Hook 会跳过并记录 hook_failed,不会回退到其他服务。
关闭 auto_memory 会停止自动捕获和重试,保留已有队列;显式 MCP 工具仍可使用。
修改服务地址不会把旧地址下的待提交对话发送到新服务。移除配置项即可恢复该项默认值。
插件通过宿主管理的 stdio 连接进程转发 MCP,请确保启动宿主时的 python3 环境包含 FastMCP。
如果 ReMe 服务运行在另一台机器或另一个 Python 环境,在宿主环境执行
python3 -m pip install "fastmcp>=3.1"。Hook 本身仅使用标准库。
生命周期与失败行为
UserPromptSubmit在短超时范围内同步调用search,用<reme-context>包裹有长度限制的结果,明确其为不可信历史数据。失败不阻止用户消息。- 原生异步
StopHook 从本地 transcript 提取完成轮次的用户与最终助手文本,通过 JSON Job API 分批调用auto_memory。工具输出、推理内容和注入的 ReMe 上下文不作为对话来源。服务端无需读取宿主文件。 - 使用带宿主命名空间的稳定会话和消息 ID,重复 Stop 去重;每个会话串行提交,跨日拆分批次。排除子 Agent 事件和 Hook 续写。插件不启动独立守护进程,也不自动下载依赖或启动 ReMe。
- 队列与确认收据保存在宿主的
reme/queue/,按服务地址隔离;失败或超时不会丢弃队列。SessionStart后台重试,SessionEnd在短时间预算内同步尝试刷新。 - 退出刷新是尽力而为:宿主在捕获前被强制结束时可能丢失该轮。HTTP 确认丢失时可能重复提取;稳定消息 ID 避免重复存储来源,但记忆提取是至少一次语义。未满批次或未及时完成的任务留待下次会话处理。
- 队列包含原始对话文本,请在交付完成前保留。
reme/hooks.log仅记录事件及异常类型。关闭auto_memory保留队列且停止重试。 auto_dream整理继续由 ReMe 服务管理。与 OpenClaw 常驻 Gateway 不同,短生命周期 Hook 不另建定时调度器。
验证与排查
- 在 Claude Code 中让已安装的 ReMe 插件检查连接,通过
/mcp确认插件连接状态。 - 快速验证时把
memory_interval设为1,新建会话,要求记住一条合成事实,例如“Juniper 项目每周四评审”。 - 等待后台写入,检查
reme/hooks.log的memory_saved,以及 ReMe workspace 的daily/笔记。 - 再新建一个独立会话,询问该事实,并确认回答附有 ReMe 来源路径。
自动记忆和显式检索、阅读、健康检查均由已安装的插件提供。工具缺失时,检查插件是否已安装并启用、
ReMe 服务是否运行,以及 service.jobs 是否开放所需 Job。Hook 无法加载时,请使用满足插件要求的宿主版本,
再重新安装或加载插件。
记录要求 Hook 提供 transcript_path 和 last_assistant_message,读取标准用户/助手 JSONL,
不读取私有推理;未知格式或缺失文件会跳过并记录状态,不猜测对话。
召回正常但未记录时,检查 capture_skipped、hook_failed。
从旧 Claude Code 插件迁移
0.2 版本用自动召回与客户端完成轮次捕获替换旧的脱离宿主 Stop 进程,新记录调用 auto_memory。
服务端 auto_memory_cc 仍保留兼容,已有 session/claude_code/ transcript 和笔记不改写。
新来源使用标准 {session_dir}/dialog/claude-code-<hash>.jsonl 与带命名空间的会话 ID。
不回放旧对话;请移除手工安装的重复 Stop Hook。日志从插件目录迁移到宿主 reme/hooks.log。
端到端验证时,应保持会话打开,直到出现 memory_saved。短暂的 claude -p 进程可能在异步 Hook 收到写入确认前结束;已捕获的任务会在下一次会话重试。仅看到 Markdown 笔记不代表队列已经收到确认。
源码与验证
在 ReMe 仓库运行 pytest tests/unit/test_coding_agent_plugins.py -v。测试使用隔离目录和模拟服务。
宿主行为以 Claude Code Hook 文档 为准。
ReMe 在 agentscope-ai/ReMe 开发,采用 Apache-2.0 许可证。