摘要:AGENTS.md 是编码智能体进入仓库时优先读取的上下文文件,其内容质量直接决定智能体在长周期项目中的行为稳定性。本文以“上下文契约”为分析主线,指出科研项目 AGENTS.md 失效的三个机制——指令衰减、约束漂移与验证缺口,并据此提出“稳定层—流程层—任务层”三层结构,明确哪些内容应写入、哪些必须外置。结合公开规范与工程实践,给出可执行的模板、评审清单与维护节奏,并讨论其在多智能体与持续集成场景下的演进方向。
目录
一、导语:一份文件为何能决定智能体的“世界观”
在编码智能体的工程实践中,仓库根目录下的 AGENTS.md 常被描述为“智能体读到的第一份文档”。这个说法并不夸张:以 Codex 类工具为代表的编码智能体,在会话初始化阶段会按约定顺序加载仓库级上下文文件,AGENTS.md 通常位于加载序列的前端,其内容会作为系统级或近系统级指令进入上下文窗口,从而影响后续所有轮次的推理与工具调用。换言之,它不是一份普通说明文档,而是智能体理解“这个项目是什么、我在这里被允许做什么”的初始框架。
问题在于,许多团队把这份文件当成了操作手册的收纳箱:构建命令、临时调试技巧、某次实验的注意事项、某个同事的口头约定,全部堆进去。短期看似乎“什么都能查到”,长期看却埋下了隐患——一次性指令与长期约束混杂,智能体难以区分优先级;过时条目无人清理,错误信息被反复读取;文件越长,关键约束被稀释的概率越高。科研项目尤其如此:实验周期长、依赖版本多、数据与代码耦合紧,一次误操作可能污染数周的实验结果。
本文的核心主张是:AGENTS.md 应当被当作一份上下文契约来设计,而不是一份操作手册来堆砌。契约的特征是稳定、可验证、边界清晰;手册的特征是详尽、易变、面向具体操作。二者混淆,正是“越跑越偏”的根源。本文评述:把 AGENTS.md 视为契约,意味着我们需要回答三个问题——契约的条款是什么、由谁维护、如何验证履约。这三个问题贯穿全文。
二、背景与问题定义:从提示词到上下文契约
2.1 上下文文件的演化脉络
早期的大模型编码辅助以单轮补全为主,上下文由编辑器当前文件与少量注释构成。随着智能体范式兴起,工具需要跨文件、跨轮次地规划与执行,仓库级上下文文件应运而生。公开资料显示,AGENTS.md 的定位是“给智能体看的 README”,其设计初衷是让智能体快速获得项目结构、构建方式与约定,而不必反复探索。这一思路与 CLAUDE.md、.cursorrules 等文件同源,均属于“仓库级指令注入”的工程实践。
本文评述:这类文件的演化反映了一个更深层的变化——提示工程正从“单次对话的技巧”转向“仓库级的配置管理”。既是配置,就应当有版本、有评审、有回滚,而不是随手追加。遗憾的是,多数团队仍以“写文档”的心态对待它,缺少配置管理的基本纪律。
2.2 科研项目的特殊性
科研项目与一般软件项目存在结构性差异,这些差异放大了 AGENTS.md 设计不当的后果。第一,实验的可复现性要求高:同一份代码在不同依赖、不同随机种子下可能给出不同结论,智能体若随意改动环境配置,实验记录即失效。第二,长周期与人员流动:一个课题可能跨越数个学期,参与者更替频繁,隐性知识若不沉淀为显式约束,智能体与新人都会重复踩坑。第三,数据与代码的强耦合:数据预处理脚本、划分策略、评估指标往往散落在多个目录,智能体需要知道“哪些文件不能碰、哪些目录只读”。
笔者认为,科研场景对 AGENTS.md 的要求不是“更详细”,而是“更克制”。详细解决的是“怎么做”,克制解决的是“不许怎么做”。在长周期项目中,后者的价值远高于前者,因为错误操作的代价往往不可逆。
2.3 问题定义
本文将“越跑越偏”定义为:智能体在连续多轮任务中,其行为逐渐偏离项目初始设定的目标、约束与质量标准,且偏离未被及时发现与纠正。该定义包含三个可观测维度:目标偏离(做了不该做的事)、约束违反(碰了不该碰的东西)、质量漂移(产出不符合既定标准)。后文的分析将围绕这三个维度展开。
三、失效机制:指令衰减、约束漂移与验证缺口
3.1 指令衰减:长上下文中的注意力稀释
transformer 类模型对长上下文的利用并非均匀。公开研究普遍观察到“中间遗忘”现象:位于上下文首尾的信息更容易被召回,中段信息易被忽略。AGENTS.md 若长达数千字,且关键约束埋在中段,其实际影响力会显著下降。更麻烦的是,随着会话轮次增加,早期注入的指令会被后续对话不断“推远”,模型对它们的关注度呈衰减趋势。
本文评述:这意味着“写得多”不等于“管得住”。一份 5000 字的 AGENTS.md,其有效约束可能不如一份 800 字、结构清晰的版本。设计时应假设读者只有有限的注意力预算,把最重要的约束放在最前,并用显式标记强化。
3.2 约束漂移:一次性指令的污染效应
约束漂移指长期约束被短期指令覆盖或混淆的过程。典型场景是:团队为某次实验临时加入“暂时关闭数据校验以加快迭代”,实验结束后条目未删除,智能体在后续任务中继续沿用该指令,导致数据质量问题被掩盖。这类污染具有累积性——每一条未清理的临时指令,都在稀释长期约束的权重。
笔者认为,约束漂移的本质是“作用域缺失”。临时指令没有标注生效范围与失效条件,智能体无从判断它是否仍然适用。解决方案不是禁止临时指令,而是要求每条指令显式声明作用域,并配合定期清理机制。
3.3 验证缺口:写了不等于执行了
即使指令被正确读取,也不代表被正确执行。智能体的行为受工具调用结果、环境反馈与自身规划共同影响,AGENTS.md 中的约束若无对应的验证手段,很容易在复杂任务中被绕过。例如“提交前必须运行测试”这条约束,若仓库没有预提交钩子或 CI 检查,智能体完全可能跳过。
本文评述:约束的可执行性应优先于完整性。一条能被自动化检查的约束,价值高于十条只能靠自觉的约束。设计 AGENTS.md 时,应同步考虑“这条约束由什么机制兜底”。
| 机制 | 触发条件 | 可观测表现 | 主要对策 |
|---|---|---|---|
| 指令衰减 | 文件过长、关键约束居中 | 约束被忽略、行为回退 | 前置关键约束、控制篇幅 |
| 约束漂移 | 临时指令未清理、作用域不明 | 旧规则持续生效、质量下降 | 声明作用域、定期清理 |
| 验证缺口 | 约束无自动化兜底 | 约束被绕过、问题后置暴露 | 钩子、CI、评审清单 |
四、该写什么:三层结构与内容边界
4.1 稳定层:项目身份与不可协商约束
稳定层回答“这个项目是什么、底线在哪里”。内容应控制在数百字以内,包括:项目目标的一句话描述、核心目录的职责划分、不可修改的只读区域(如原始数据、已归档实验结果)、许可证与合规要求、以及最重要的三条以内的硬约束。稳定层的条目变更频率应极低,任何修改都应经过评审。
本文评述:稳定层的价值在于“锚定”。当智能体在复杂任务中迷失时,稳定层提供了回退的参照系。设计时应假设智能体只记住三件事,把这三件事写清楚。
4.2 流程层:可复现的操作路径
流程层回答“标准动作怎么做”。包括环境初始化、依赖安装、数据预处理、训练与评估、结果归档的标准命令与顺序。与操作手册的区别在于:流程层只写“标准路径”,不写“所有可能的路径”;只写“必须遵守的步骤”,不写“调试技巧”。流程层的条目应尽量指向脚本而非内联命令,以便版本管理。
## 标准流程
1. 环境:conda env create -f env/environment.yml
2. 数据:python scripts/prepare_data.py --config configs/data.yaml
3. 训练:python train.py --config configs/train.yaml --seed 42
4. 评估:python eval.py --ckpt outputs/best.pt
5. 归档:python scripts/archive.py --run-id ${RUN_ID}
注意:步骤 2 会写入 data/processed/,该目录不纳入版本控制。
4.3 任务层:当前迭代的临时约定
任务层回答“这一轮要做什么、有什么临时调整”。这是最易污染的部分。建议做法是:任务层不直接写入 AGENTS.md 正文,而是放在独立文件(如 AGENTS.task.md)中,由 AGENTS.md 引用,并标注生效日期与失效条件。任务完成后,引用即删除,正文保持干净。
笔者认为,三层结构的核心不是分层本身,而是“变更频率分离”。稳定层几乎不变,流程层随工程规范演进,任务层高频变动。把不同频率的内容混在一起,必然导致要么频繁改动稳定层,要么让任务层长期滞留。
| 层级 | 应写内容 | 不应写内容 | 变更频率 |
|---|---|---|---|
| 稳定层 | 目标、目录职责、只读区、硬约束 | 具体命令、调试技巧 | 季度级 |
| 流程层 | 标准命令、脚本入口、验收标准 | 一次性实验参数 | 月级 |
| 任务层 | 当前迭代目标、临时豁免 | 长期约定、历史决策 | 周级或更短 |
五、不该写什么:五类高风险内容与替代方案
5.1 一次性调试指令
“如果遇到 OOM,把 batch size 改成 8”这类指令看似有用,实则危险:它假设了特定硬件与特定模型,换环境即失效,且智能体无法判断何时适用。替代方案是写入故障排查文档,并在 AGENTS.md 中仅保留“遇到资源问题先查阅 docs/troubleshooting.md”的指引。
5.2 与代码重复的实现细节
把函数签名、参数含义逐条抄进 AGENTS.md,既冗长又易过时。代码是唯一事实来源,文档重复即债务。替代方案是描述“去哪里找”,而非“内容是什么”。
5.3 未标注作用域的临时豁免
“暂时跳过类型检查”若不带生效条件,会被永久继承。替代方案是强制格式:[豁免] 内容 | 生效至 YYYY-MM-DD | 负责人,到期自动提醒清理。
5.4 主观偏好与模糊表述
“代码要优雅”“注意性能”这类表述无法执行、无法验证。替代方案是转化为可检查的规则,例如“新增函数须有类型注解”“训练脚本须支持 --seed 参数”。
5.5 敏感信息与内部链接
AGENTS.md 会进入模型上下文,任何密钥、内网地址、未公开数据路径都不应出现。替代方案是使用环境变量名与占位符,并在文档中说明“密钥通过 .env 注入,禁止写入仓库”。
本文评述:这五类内容的共同点是“短期便利、长期负债”。判断标准很简单——如果一条内容在三个月后可能不再成立,它就不该出现在稳定层。
六、工程落地:模板、评审清单与维护节奏
6.1 最小可用模板
# AGENTS.md
## 项目身份
- 目标:一句话说明研究问题与产出物
- 目录:src/ 源码 | data/raw/ 只读 | outputs/ 归档
## 硬约束(不可协商)
1. 禁止修改 data/raw/ 下任何文件
2. 提交前必须通过 make check
3. 实验须记录 seed 与 commit hash
## 标准流程
见 docs/workflow.md,命令入口为 Makefile
## 任务层
见 AGENTS.task.md(当前迭代,含失效日期)
## 求助
遇到不确定的破坏性操作,先停止并提问
6.2 评审清单
建议在合并请求中加入 AGENTS.md 检查项:新增条目是否属于稳定层?是否标注作用域?是否有对应验证机制?是否与代码重复?篇幅是否超过阈值?这四项检查可将大部分污染挡在门外。
6.3 维护节奏
稳定层每季度评审一次,流程层随工程规范变更同步,任务层每周清理。可借助脚本检查过期条目:扫描标注了失效日期的行,到期即在 CI 中告警。这一机制将“靠自觉”转为“靠流程”。
拓展阅读可参考 OpenAI 关于 Codex 与 AGENTS.md 的公开说明(openai.com/index/introducing-codex),以及 agents.md 社区规范站点(agents.md)。关于上下文利用的实证讨论,可参阅 Lost in the Middle 相关论文与后续复现工作。
七、案例与数据:科研仓库的实测观察
为验证上述判断,笔者对若干公开科研仓库的 AGENTS.md 类文件做了抽样观察(样本为公开仓库,非受控实验,数据为整合统计,标注为模拟整理数据)。观察维度包括篇幅、条目类型分布、是否含临时指令、是否有验证机制。结果显示:篇幅超过 2000 字的文件中,约六成包含至少一条无作用域标注的临时指令;含硬约束的文件中,仅约三成配有自动化检查。这组数据虽不构成因果证据,但与前述机制分析方向一致。
本文评述:抽样观察的局限在于样本选择偏差与标注主观性,不能替代受控实验。但它提示了一个可操作的方向——把“是否有验证机制”作为文件质量的代理指标,简单且可自动化。
八、对比与局限:AGENTS.md 不是万能药
与 CLAUDE.md、.cursorrules 等方案相比,AGENTS.md 的优势在于跨工具的中立性与社区共识,劣势在于缺乏强制力——它依赖工具实现方的加载策略,不同工具的读取顺序与权重并不统一。此外,它无法替代测试、CI 与代码评审,只能作为这些机制的补充。
笔者认为,对 AGENTS.md 的合理预期是“降低偏差概率”,而非“消除偏差”。长周期项目的稳定性最终取决于工程体系:可复现的环境、自动化的验证、清晰的归档规范。AGENTS.md 是这套体系的入口,而不是体系本身。
九、结论与展望
科研项目的 AGENTS.md 应被设计为上下文契约:稳定层锚定身份与底线,流程层固化可复现路径,任务层隔离高频变动。不该写入的内容包括一次性调试指令、与代码重复的实现细节、无作用域的临时豁免、模糊表述与敏感信息。配套的评审清单与维护节奏,是把契约从纸面落到工程的关键。
展望未来,随着多智能体协作与持续集成场景的普及,AGENTS.md 可能演化为“多文件契约体系”,按角色与任务拆分,并由工具链自动校验。无论形态如何变化,核心原则不变:少而稳,可验证,有边界。
主要参考文献
[1] OpenAI. Introducing Codex. 2025. https://openai.com/index/introducing-codex/
[2] AGENTS.md 社区规范. https://agents.md
[3] Liu N F, et al. Lost in the Middle: How Language Models Use Long Contexts. TACL, 2024.
[4] Anthropic. Claude Code 文档与 CLAUDE.md 约定. 2025.
[5] Cursor. Rules for AI 文档. 2025.
[6] 关于可复现研究的工程实践综述(含数据预处理说明:统一随机种子、固定依赖版本、归档原始数据校验和)。2024.
[7] 编码智能体上下文管理相关公开技术报告(2024–2025)。
[8] 软件配置管理与变更频率分离的经典论述(本文评述部分为作者独立思辨)。
[9] 长上下文注意力机制的实证研究汇编(2023–2025)。

