claude-mem:为编码智能体补上跨会话持久记忆的压缩层
claude-mem 在会话中自动记录智能体的工具调用观察,用 AI 压缩成语义摘要,并在下一次会话开始时只注入相关部分,让智能体不再每次从零开始。项目约 9.6 万星标,支持 Claude Code、OpenClaw、Codex、Gemini、OpenCode 等多种宿主,可选择自家 observer、OpenRouter、Gemini 密钥或 Anthropic 订阅做压缩。README 未给出可复现的效果评测,采用前应在自己的仓库小范围验证,并审查敏感内容的落盘与数据流向。
技术背景与问题定义
编码智能体有一个结构性缺陷:会话一结束,上下文就清零。开发者今天让智能体摸清了一个仓库的目录约定、踩过的坑和做过的取舍,明天重开会话,一切归零,只能重新解释。现有的补救办法各有代价。手写 CLAUDE.md 一类的静态说明文件,靠人维护,容易过期。把整段对话历史塞回上下文,则很快撑爆窗口,也烧掉大量 token。claude-mem 瞄准的就是这个缺口:让智能体的工作经历跨会话留存,并在下一次会话里只注入相关的部分。
项目由 thedotmack 维护,GitHub 星标约 9.6 万,话题标签覆盖 ai-memory、long-term-memory、chromadb、sqlite、rag、claude-code-plugin 等。按 README 的说法,它最初是为 Claude Code 打造的持久记忆压缩系统,现在已扩展到 OpenClaw、Codex、Gemini、Hermes、Copilot、OpenCode,以及 Grok Bot、Antigravity CLI、OMP 等宿主。需要说明:本文依据仓库 README 与元数据撰写,作者没有在本地部署运行,下文所有关于内部机制的描述都以 README 的陈述为限,没有经过独立基准测试。
核心架构与原理解析
README 把流程概括为三步:捕获、压缩、注入。第一步,系统在会话期间自动记录工具调用的观察结果(tool usage observations)。第二步,用 AI 对这些原始记录做语义压缩,生成摘要。第三步,在新会话开始时,把相关的压缩上下文送回智能体。仓库话题里出现 sqlite 与 chromadb,说明它很可能把结构化记录放在 SQLite,把语义检索放在向量库,这符合常见的混合检索设计,但具体的表结构和检索策略,本文无法从 README 摘要里确认。
接入方式是第二个值得看的设计点。对支持钩子的宿主,如 Claude Code,安装器注册插件钩子并启动一个 worker 服务,由它在后台处理观察与压缩,不阻塞主会话。对没有宿主钩子的环境,例如 Grok Bot,README 写明它改为监视聊天日志文件。这是一种务实的适配:不依赖宿主提供事件接口,代价是只能事后读取日志,实时性和结构化程度取决于日志格式。
第三个设计点是压缩由谁来做。README 给出多个“记忆提供方”选项:项目自家的 claude-mem observer、用户自己的 OpenRouter 或 Gemini 密钥、或直接使用 Anthropic 订阅额度;本地观察者可用 --provider host 显式选择。这把一个隐含成本摆到了台面上:记忆压缩本身要调用大模型,它要么消耗你的订阅额度,要么消耗第三方费用。
关键功能与实战评估
安装路径很短。通用命令是 npx claude-mem install,也可以加 --ide opencode、--ide antigravity、--ide omp、--ide grok-bot 指定宿主;在 Claude Code 内则用 /plugin marketplace add thedotmack/claude-mem 再 /plugin install claude-mem,然后重启。一个容易踩的坑,README 专门提醒:npm install -g claude-mem 只安装 SDK 或库,不会注册钩子,也不会启动 worker 服务,必须走 npx 安装器或插件命令。 另一个需要读者留意的细节是账号流程。默认安装完成后会引导你在浏览器里用邮箱魔法链接登录,登录后获得 observer 的 14 天免费试用,到期后若不订阅则自动回退到你的 Anthropic 订阅额度。想跳过登录,可以传明确的 --provider 参数、设置 CLAUDE_MEM_ONLINE_OPTIN=false,或在 CI 与非交互 shell 中运行。对注重隐私或合规的团队,这意味着需要在部署时明确选择,而不是接受默认值。 README 还描述了一个“awareness push 试点”:被判定为关键的观察,类型包括 decision、bugfix、security_alert、sensitive,会以带日期的行追加到 Grok Bot 的月度日志中,且可用 CLAUDE_MEM_GROK_BOT_AWARENESS_ENABLED=false 关闭。这里有一个值得警惕的点:sensitive 类别的内容被写进日志文件,使用者应自行核查脱敏与访问权限。
实战评估的诚实结论是:压缩后的记忆会不会漏掉关键细节、会不会把错误结论固化、检索命中率如何,README 没有给出可复现的对比数据。采用前应在自己的仓库上做小范围试跑,对比有无记忆时的任务完成质量与 token 消耗。
行业影响与未来演进
星标数接近十万,说明跨会话记忆已经是智能体工具链里需求最强的一环,mem0、supermemory、openmemory 等话题标签也表明这是一个拥挤的赛道。claude-mem 的差异点在于宿主覆盖面广,把一份记忆层挂到多种智能体之上,而不是绑定某一个产品。这对同时使用多个编码智能体的团队有吸引力,因为经验可以在工具之间流动。
但风险同样明确。其一,记忆层成为新的信任边界:它读取所有工具调用结果,其中可能含有密钥与私有代码。其二,托管默认值带来数据流向问题,是否经过第三方服务,需要用户逐项确认。其三,压缩是有损的,错误的摘要会像事实一样被反复注入。未来的演进方向,可能是可审计的记忆条目、可编辑与可删除的记忆、以及公开的评测基准。在这些出现之前,把它当作一个值得试用、需要审计的工具,比当作成熟基础设施更稳妥。
Sources
FAQ
为什么 npm install -g claude-mem 不能让记忆功能生效?
按 README,这条命令只安装 SDK 或库,不会注册插件钩子,也不会启动 worker 服务。要让记忆功能工作,必须使用 npx claude-mem install,或在 Claude Code 内用 /plugin marketplace add thedotmack/claude-mem 加 /plugin install claude-mem,然后重启。
claude-mem 的记忆压缩由谁完成,会产生什么成本?
README 列出的选项有:项目自家的 claude-mem observer(14 天免费试用,到期后若不订阅则回退到 Anthropic 订阅额度)、用户自己的 OpenRouter 或 Gemini 密钥、以及 Anthropic 订阅。压缩要调用大模型,所以成本要么来自订阅额度,要么来自第三方费用。
在没有宿主钩子的环境里它怎么采集数据?
README 以 Grok Bot 为例:没有宿主钩子时,改为监视聊天日志文件。这种方式不依赖宿主的事件接口,但只能事后读取,实时性取决于日志格式。