ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

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_json

memory_items记录可被检索的经验,task_runs记录一次任务发生过什么。二者分开很重要:一次失败任务应该保留为诊断证据,却不能自动成为下一次任务的指导。

记忆的kind也不是装饰字段。factdecisionlessonconstraint的生命周期和呈现方式可能不同。比如“项目使用 SQLite”更像事实或决策,“这次修复先运行 typecheck”更像带

返回列表