60 秒回答模板

我会把 Claude Code 类代码 Agent 的 memory 分成三层来讲,但不假设某个产品内部一定就是这个实现。第一层是短期工作上下文,保存当前任务目标、最近对话、已读文件、计划、工具结果、测试失败和未完成步骤,生命周期通常是一轮任务或会话。第二层是项目知识,保存仓库结构、构建命令、测试方式、代码规范、架构约束、常见模块边界和项目内约定,生命周期跟项目走,应来自真实文件、AGENTS 指令、README、配置和历史验证结果。第三层是长期用户偏好,保存用户对语言、风格、验证强度、提交习惯等稳定偏好,生命周期跨项目,但必须受权限和显式指令覆盖。分层的原因是三类信息优先级、更新频率和风险不同:短期状态最贴近当前任务,项目知识最影响正确性,长期偏好最容易污染具体项目。工程上要用检索、摘要、时间戳、来源、冲突规则和显式确认来管理,而不是全部塞进上下文。

考点 短期工作态
难度 真实面经题
回答目标 讲清工程边界与实现取舍

深入解析

01

短期上下文服务当前任务

短期层记录本轮任务正在发生什么,包括目标、约束、计划、读过的文件、工具输出、报错、测试结果和下一步。它更新频繁,优先级高,但任务结束后大多应该被总结或丢弃。

02

项目知识服务仓库正确性

项目层记录仓库内稳定事实,例如目录结构、依赖管理、测试命令、代码风格、架构边界、生成文件规则和团队指令。它应从项目文件和验证结果来,不能由模型凭经验编造。

03

长期偏好服务个性化

长期层保存跨任务稳定偏好,例如回答语言、是否先给计划、测试偏好、提交信息风格等。它不能覆盖项目指令和当前用户明确要求,也不应存储敏感或一次性信息。

04

分层解决优先级冲突

当前用户指令和项目规则通常高于长期偏好;短期工具结果高于旧项目摘要;系统安全规则最高。记忆进入上下文时要带来源和时间,冲突时降权或询问,不让模型自行混合。

05

更新要有证据和清理

项目知识应在读取配置、运行测试或用户确认后更新;长期偏好应来自明确、稳定、可复用的用户表达。过期命令、失败假设和一次性调试路径要清理,避免下次任务被误导。

06

检索要按任务渐进加载

代码 Agent 不需要每次加载全部记忆。修测试时优先加载测试命令和相关模块;改 UI 时加载组件规范;提交前加载提交风格。渐进检索能降低 token 成本和记忆污染。

易错点

  • 把 memory 简单理解成聊天历史。
  • 把长期用户偏好放到最高优先级,覆盖项目规则。
  • 项目知识没有来源,模型猜测被当成仓库事实。
  • 所有记忆每次全量加载,造成上下文污染和成本上升。
  • 不清理过期命令和失败假设,后续任务反复被误导。
  • 忽略敏感信息和跨项目隔离。

面试官追问

为什么代码 Agent 需要项目记忆?

同样的技术栈在不同仓库里命令、规范和架构边界可能完全不同。项目记忆能减少重复探索,并降低误改风险。

长期偏好会不会污染项目?

会,所以长期偏好只能作为低优先级默认值。项目指令、当前用户要求和工具验证结果应覆盖它。

项目知识怎么更新才可靠?

优先来自 README、配置、AGENTS 指令、实际运行结果和用户确认。模型猜测不能直接写入稳定项目记忆。

任务结束后短期记忆怎么处理?

保留可复用结论和验证结果,丢弃中间失败尝试、临时日志和一次性状态;必要时压缩成项目知识候选。