5. 项目记忆:让 Agent 记住,但不要让它自作主张

发布时间:2026/8/13 9:16:32
5. 项目记忆:让 Agent 记住,但不要让它自作主张 记忆功能很诱人。你告诉 Agent 一次“这个项目使用npm run typecheck,不要直接编辑生成目录”,下次它就不必重新解释。但记忆也可能变成一张贴在门上的旧告示:项目已经换了脚本,Agent 仍按旧规则行动。真正的项目记忆,必须同时解决保存、检索、验证、过期和撤销。5.1 记忆的生命周期src/extension/memory/projectMemory.ts把项目记忆建模成有边界的数据,而不是一段永久 Prompt。每条记录有类型、主题、内容、状态、可信度、证据和过期时间;SQLite 中还有memory_meta.generation作为当前工作区的记忆世代。一次运行大致经历:任务文本 - FTS 检索候选 - 核对 evidence 中的文件路径、行号和 SHA-256 - 不匹配的候选标记 stale - 只渲染仍然可信的记录 - 运行结束后按结果和证据写回5.2 数据模型比“记住一句话”复杂项目记忆至少要区分四张逻辑表:memory_meta workspace_key, generation, writer_owner, writer_expires_at memory_items kind, subject, content, status, confidence, evidence_json, expires_at, supersedes_id memory_fts subject, content, memory_item_id task_runs task_summary, outcome, summary, verified, evidence_jsonmemory_items记录可被检索的经验,task_runs记录一次任务发生过什么。二者分开很重要:一次失败任务应该保留为诊断证据,却不能自动成为下一次任务的指导。记忆的kind也不是装饰字段。fact、decision、lesson、constraint的生命周期和呈现方式可能不同。比如“项目使用 SQLite”更像事实或决策,“这次修复先运行 typecheck”更像带