Skip to content

AGENTS.md:把项目规则写清楚,而不是写一篇口号 ​

每次开新任务,都要重复“别加依赖”“改完跑测试”?可以把这些固定约定放进项目的 AGENTS.md。下面沿用第 3 课的 codex-first-project 目录,写一份可以直接使用的规则。

写好后,新任务可以只说这次要做什么,把固定的项目命令和约定留在文件里。它是给 Agent 看的项目说明,不是另一种程序,也不是安全沙箱。

规则路径示意图:沿全局、项目与当前目录查找适用说明。具体规则见下文。

第一步:选出不想反复说的规则 ​

内容放哪里原因
项目目录、测试命令、代码约定AGENTS.md多次任务都需要
本次优惠规则修改、当前故障现象当前任务不一定是长期规则
一套可重复的完整工作流程先跑通,再考虑 Skill不把规则文件变成万能脚本
密钥、账号令牌、客户私人数据不写进这些公开文件AGENTS.md 可能进入仓库与模型上下文

“代码要优雅、达到工业级”不能告诉 Agent 如何验收。用“修改 checkout.mjs 后执行这个测试命令,并报告结果”更明确。

第二步:把它保存到项目目录 ​

对读项目练习,可下载 AGENTS.md 示例。保存到练习目录,确认实际文件名是 AGENTS.md,而不是 AGENTS.example.md 或 AGENTS.md.txt。

markdown
# 练习项目约定

- 先阅读 demo.mjs、catalog.mjs、checkout.mjs 和 checkout.test.mjs。
- 金额使用整数分,不新增第三方依赖。
- 如果任务只要求解释,不修改文件。
- 修改业务代码后运行 node --test checkout.test.mjs,报告真实结果。
- 不删除或弱化测试以掩盖失败;规则变化先说明理由。
- 完成时说明修改文件、测试结果和未覆盖的边界。

只在练习目录使用这份文件。真实项目要换成自己实际使用的命令,不要让 Python 项目运行一个不存在的 Node.js 测试。

若目录里已经有 AGENTS.md,先阅读并补充,不要覆盖别人的约定。用编辑器修改比不加判断地重定向覆盖更安全。

第三步:启动新会话,检查规则来源 ​

保存后,在 codex-first-project 目录启动新的 Codex 会话:

bash
codex --sandbox read-only --ask-for-approval on-request

在对话里发送:

text
请列出当前生效的项目规则来源,并复述本项目测试命令。
只回答,不修改文件。

先核对它是否提到了你刚保存的 AGENTS.md,测试命令是否为 node --test checkout.test.mjs。若答成 npm test,不要只补一句“请遵守规则”,先按下面的排障顺序检查目录和文件名。

接着用第 3 课的只读任务,让它解释为什么订单是 1300 分。看回答是否给出文件依据,并比较原始副本,确认输入没有变化。没有保留副本时,先在开始任务前复制一份;也可使用第 3 课的选做校验命令。

能复述规则,是检查的起点,不是遵守规则的保证。 只读沙箱也能阻止修改,所以“文件没变”不能单独证明规则生效。后续真正修改业务代码时,还要查看是否执行了正确的测试命令、结果是否符合要求。

进一层:规则为什么要放对位置 ​

刚开始只需在项目根放一份。项目变大后,再根据工作目录分层:

  1. ① 个人默认约定全局 AGENTS.md例如:回答用中文
  2. ② 这个项目的约定项目 AGENTS.md例如:金额用整数分
  3. ③ 当前目录的细则子目录 AGENTS.md例如:使用该模块的测试命令
需要排查 override 或多层目录时,再看完整发现顺序

官方当前文档描述了两层:

  1. 全局:默认 Codex home 下按 AGENTS.override.md、AGENTS.md 顺序,取首个非空文件。
  2. 项目:从项目根目录沿路径走到当前工作目录;找不到项目根时只检查当前目录。每层最多选择一个规则文件;同层优先 override,再是 AGENTS.md,再是配置的备用文件名。

规则按从上到下的顺序合并,离当前目录更近的规则可以覆盖前面的相关指导。不是“读取项目里所有子目录的 AGENTS.md”,也不是子目录文件会抹掉所有全局约定。

例如项目根有 AGENTS.md,checkout/ 下有更具体的规则:从根目录开始的会话与从 checkout/ 开始的会话,发现路径并不相同。不要只移动文件,然后假设已启动的会话自动重建全部规则链。官方建议重启目标目录中的会话再核查。

任意目录里放一个 .agent/AGENTS.md 也不必然自动加载。想引用其他说明文件,可以在已被发现的 AGENTS.md 中明确写出路径;有无实际读取仍需检查。

规则文件也有总长度限制,过长可能截断。不要把完整产品文档都粘贴进去;把常用命令和关键约定写在前面,再按需引用其他文件。

没生效时按这个顺序查 ​

  1. 当前工作目录是否正确?用 pwd 确认,不能只看编辑器打开了哪个窗口。
  2. 文件名和内容是否正确?空文件和错误扩展名不能充当有效规则。
  3. 同层是否有 AGENTS.override.md?它可能优先于你编辑的普通文件。
  4. 是否有更近目录的冲突约定?写出规则来源再判断。
  5. 修改后是否重启会话?不要用旧会话的行为证明新规则生效。

不要为了排障删除全局配置或登录文件。

最重要的边界:规则不是权限 ​

“不要联网”“不要删除文件”是指导;系统沙箱、审批策略和工具权限才负责技术边界。不要因为写了十条禁止事项就授予不必要的全盘权限。

先保持规则短、具体、可验证。只有反复出现的错误才值得加入长期规则;很长的口号清单会让真正重要的约束更难找到。

把规则改成自己的 ​

找一条“代码要专业”之类的规则,改成“什么情况下,执行什么检查,报告什么结果”。先在终端运行那条检查命令:如果命令或文件不存在,这条规则就不能直接交给 Agent。临时需求(例如本次优惠金额)不要写成长期规则。

参考资料 ​

回到六课路线 · 更多案例与验证状态

Codex 中文教程与实战 · 非 OpenAI 官方网站