真实面经题目 · 原创解析
Claude Code 类代码 Agent 的 Memory 三层设计如何区分短期上下文、项目知识和长期偏好?
这题考代码 Agent 的记忆分层设计,回答重点是短期工作上下文、项目知识和长期偏好三层如何分工,以及如何更新、检索、隔离和防污染。
真实面经题目 · 原创解析
这题考代码 Agent 的记忆分层设计,回答重点是短期工作上下文、项目知识和长期偏好三层如何分工,以及如何更新、检索、隔离和防污染。
我会把 Claude Code 类代码 Agent 的 memory 分成三层来讲,但不假设某个产品内部一定就是这个实现。第一层是短期工作上下文,保存当前任务目标、最近对话、已读文件、计划、工具结果、测试失败和未完成步骤,生命周期通常是一轮任务或会话。第二层是项目知识,保存仓库结构、构建命令、测试方式、代码规范、架构约束、常见模块边界和项目内约定,生命周期跟项目走,应来自真实文件、AGENTS 指令、README、配置和历史验证结果。第三层是长期用户偏好,保存用户对语言、风格、验证强度、提交习惯等稳定偏好,生命周期跨项目,但必须受权限和显式指令覆盖。分层的原因是三类信息优先级、更新频率和风险不同:短期状态最贴近当前任务,项目知识最影响正确性,长期偏好最容易污染具体项目。工程上要用检索、摘要、时间戳、来源、冲突规则和显式确认来管理,而不是全部塞进上下文。
短期层记录本轮任务正在发生什么,包括目标、约束、计划、读过的文件、工具输出、报错、测试结果和下一步。它更新频繁,优先级高,但任务结束后大多应该被总结或丢弃。
项目层记录仓库内稳定事实,例如目录结构、依赖管理、测试命令、代码风格、架构边界、生成文件规则和团队指令。它应从项目文件和验证结果来,不能由模型凭经验编造。
长期层保存跨任务稳定偏好,例如回答语言、是否先给计划、测试偏好、提交信息风格等。它不能覆盖项目指令和当前用户明确要求,也不应存储敏感或一次性信息。
当前用户指令和项目规则通常高于长期偏好;短期工具结果高于旧项目摘要;系统安全规则最高。记忆进入上下文时要带来源和时间,冲突时降权或询问,不让模型自行混合。
项目知识应在读取配置、运行测试或用户确认后更新;长期偏好应来自明确、稳定、可复用的用户表达。过期命令、失败假设和一次性调试路径要清理,避免下次任务被误导。
代码 Agent 不需要每次加载全部记忆。修测试时优先加载测试命令和相关模块;改 UI 时加载组件规范;提交前加载提交风格。渐进检索能降低 token 成本和记忆污染。
同样的技术栈在不同仓库里命令、规范和架构边界可能完全不同。项目记忆能减少重复探索,并降低误改风险。
会,所以长期偏好只能作为低优先级默认值。项目指令、当前用户要求和工具验证结果应覆盖它。
优先来自 README、配置、AGENTS 指令、实际运行结果和用户确认。模型猜测不能直接写入稳定项目记忆。
保留可复用结论和验证结果,丢弃中间失败尝试、临时日志和一次性状态;必要时压缩成项目知识候选。