先这样答
CLAUDE.md 或 AGENTS.md 这类文件定位为项目级的持久上下文,类似于给 Agent 准备的入职文档。每次会话时,这些团队约定会被自动注入。有效设计的核心框架分为内容取舍、层级结构和迭代机制三个方面。
在内容取舍上,原则是只写 Agent 容易犯错的具体约束,例如特定的构建命令、约定的目录结构、团队特殊的代码风格以及绝对不能修改的禁区。不要写入它已经具备的通用编程知识。因为大模型存在注意力稀释的问题,且每次注入都会占用上下文 token,文件必须保持简短,在 token 消耗与指令遵循效果之间做好权衡。
在层级结构上,推荐采用分层放置的策略。根目录下的文件存放全局通用约定,而各个子目录中放置局部的特定规则。这种结构允许按需加载,减少冗余信息对模型的干扰。
在迭代机制上,这类文件应该被视为活文档。日常开发中,需要把 Agent 每次犯的错或偏离预期的行为沉淀成新的条目补充进去。同时,这些记忆文件需要纳入 git 进行版本化管理,实现团队内部的规则共享。这种设计把记忆维护变成了工程化的代码管理过程。
面试官会怎么追问
- 「这种文件注入和 RAG 记忆有什么区别?」 答法是强调确定性。这类文件是确定性注入,每次会话完整携带,适合存放必须严格遵守的核心规则。RAG 记忆是检索式的,存在召回失败的概率,更适合存放海量的历史问题解答或背景资料。
- 「不同项目之间如何复用这些记忆模板?」 答法是提取公共规则库。将跨项目的通用规范抽离为基础模板,新项目初始化时直接引入。具体项目中再通过子目录的局部规则文件进行补充,保持通用约束与项目特有约束的隔离。
- 「如果文件条目越来越多导致上下文超载怎么处理?」 答法是定期进行规则裁剪并依赖分层加载。删除已经内化到基础模型能力中的旧规则,合并重复条款。同时确保每次只注入当前任务所在目录及其父目录的规则,避免全局文件无限膨胀。
回答的坑
- 把文件当成通用知识库,往里面堆砌大量基础编程规范。正确方向是强调只写 Agent 容易犯错的特定约束,避免注意力稀释和上下文浪费。
- 认为文件写完就固定不变,忽略了与实际开发的结合。正确方向是指出其作为活文档的属性,强调基于 Agent 实际犯错记录进行持续迭代,并随代码一同进行版本控制。
同系列的题
—— 本题完 ——