编码代理的 "失忆" 问题是当前 AI 辅助开发的核心痛点。每次开启新会话,代理对代码库的上下文理解、用户的工作偏好、过往的经验教训都归零重建。这种 "一夜情" 式的交互模式严重限制了长期协作的可能性。komi-learn 与 claude-memory-compiler 等项目正在探索一种持续记忆架构,通过自我改进反馈循环和经验回放机制,让代理从交互中学习并优化策略。
三层架构设计
持续记忆系统的核心在于将会话数据转化为可检索、可复用的结构化知识。claude-memory-compiler 采用的架构可分为三层:会话捕获层、知识提取层、经验回放层。
会话捕获层通过 Claude Code 的 Hooks 机制实现自动化。在 .claude/settings.json 中配置 SessionEnd 和 PreCompact 两个触发点,确保会话结束或压缩前自动捕获完整对话记录。这种设计避免了人工标记的遗漏,捕获的原始数据以时间戳命名存入 daily/YYYY-MM-DD.md 格式。
知识提取层调用 Claude Agent SDK 对原始会话进行语义分析。不同于简单的日志存储,该层会提取关键决策、经验教训、代码模式、潜在陷阱等结构化信息。Anthropic 已明确个人使用 Claude Agent SDK 包含在现有订阅中,无需额外 API 计费。
经验回放层负责将分散的每日日志编译为可交叉引用的知识文章。compile.py 脚本将日志按概念分类存入 knowledge/concepts/、connections/、qa/ 目录,并生成 index.md 索引文件。SessionStart Hook 自动将该索引注入新会话上下文,形成记忆闭环。
可落地的配置参数
实现这一架构需要关注以下关键参数:
Hook 触发时机:SessionEnd 在会话正常结束时触发,PreCompact 作为安全网在上下文压缩前触发。建议同时配置两者,确保高价值会话不被遗漏。
编译触发条件:默认设置为本地时间 18:00 后首次会话结束时自动触发。可通过 uv run python scripts/compile.py 手动执行,适合需要即时归档的场景。
知识库规模阈值:claude-memory-compiler 明确建议,个人规模(50-500 篇文章)下使用结构化索引而非 RAG。当文章数量超过 2000 篇、索引超出上下文窗口时,才需要考虑向量检索方案。
检索策略:采用 query.py 进行索引引导检索,无需向量数据库或嵌入计算。这种方式在个人知识库场景下,利用 LLM 的语义理解能力优于简单的余弦相似度匹配。
自改进循环的工程实践
Hermes Agent 提供了另一种实现思路,通过 FTS5 全文搜索 + LLM 摘要、Honcho 用户建模、自主技能创建三个机制实现持续学习。这种架构让代理不仅能回忆过往会话,还能基于重复模式自动生成可复用的技能函数。
在实际部署中,建议设置以下监控点:
- 健康检查:定期运行
lint.py检测断链、孤立条目、矛盾信息和过时内容。结构性检查不消耗 API 额度。 - 存储管理:每日日志按日期归档,编译后的知识文章定期备份。建议设置 90 天的滚动清理策略,避免存储膨胀。
- 版本控制:将
.claude/目录和知识库纳入 Git 管理,使记忆、提示词和经验教训像代码一样版本化。
局限与权衡
这种架构需要明确的技术投入。与即插即用的 SaaS 方案不同,开发者需要自行管理持久化存储、处理状态同步、应对 API 演进。此外,当前实现主要针对个人使用场景,团队协作时的并发写入和知识合并仍需额外设计。
对于追求长期 AI 协作的开发者而言,这种 trade-off 是值得的。编码代理从 Stateless 工具进化为具备持续学习能力的协作伙伴,标志着 AI 辅助开发进入新阶段。
参考来源
- claude-memory-compiler: 为 Claude Code 提供持续记忆能力的开源实现
- Hermes Agent: Self-Improving AI with Persistent Memory: Nous Research 的自改进代理框架技术解析
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。