没有 CLAUDE.md 也能开工:AGENTS.md 怎么当项目说明
很多仓库早就有一份给「各类 Agent」看的 AGENTS.md,却还没写 Claude 专属的 CLAUDE.md。CLI 2.1.277 起:项目里没有 CLAUDE.md 时,Claude Code 会改读 AGENTS.md 当作项目说明。不必为了开一次会话先复制一份空壳。
这是回退路径,不是「两份同时注入」。有 CLAUDE.md 时仍以它为准;缺了才轮到 AGENTS.md。开关在 /config 的 Project instructions(当前说明:尚未覆盖 Bedrock、Vertex、Foundry)。
和 CLAUDE.md、README 怎么排座
| 文件 | 给谁看 | 典型内容 |
|---|---|---|
README.md | 人 | 背景、安装、贡献流程,可以写长 |
CLAUDE.md | Claude Code(优先) | 短事实、命令、目录约定、评审偏好 |
AGENTS.md | 通用 Agent 说明;无 CLAUDE.md 时作回退 | 跨工具共用的仓库规矩 |
CLAUDE.md 和 README 别互相复制,分工写更清楚,见 CLAUDE.md 别写成第二份 README。AGENTS.md 更适合「这份说明本来就要给 Cursor / Copilot / 其他 Agent 共用」的仓库:你维护一份,Claude 在缺 CLAUDE.md 时也能跟上。
仍然记住:项目说明表达的是倾向,不是硬开关。一次都不能破的动作(禁读密钥、提交前必须测),用 Hooks 和权限,见 CLAUDE.md 管倾向,Hooks 才是铁律。
回退什么时候触发
可以按这张表自查:
| 仓库里有什么 | Claude Code 读什么(大致) |
|---|---|
有 CLAUDE.md | CLAUDE.md(以及既有的本地覆盖等规则) |
没有 CLAUDE.md,有 AGENTS.md | AGENTS.md |
| 两份都没有 | 没有项目级说明注入;靠对话与全局设置 |
「没有」指项目侧没有可用的 Claude 项目说明文件。若你本地有 CLAUDE.local.md 一类覆盖,以你当前版本实际加载顺序为准;不确定就开会话后问一句「你读了哪份项目说明」,或看 /config。
企业或云厂商通道:changelog 写明 Bedrock / Vertex / Foundry 上这项尚未就绪。走这些后端时,别假设「没 CLAUDE.md 就会自动吃 AGENTS.md」——先确认版本与通道说明,或直接补一份短 CLAUDE.md。
在 /config 里改「项目说明」来源
会话里打开 /config,找到 Project instructions。这里可以调整项目说明相关选项(含是否走 AGENTS.md 回退这类行为,以界面文案为准)。改完新会话生效更稳;若行为对不上,先 claude --version 确认 ≥ 2.1.277。
实操建议:
- 已有完善
CLAUDE.md:继续用它,不必为了新功能强行改名。 - 只有
AGENTS.md、且内容已经够短、够命令化:可以直接开工;观察一两轮,若 Claude 漏关键边界,再拆出专用CLAUDE.md。 AGENTS.md写得很「给人看」:回退能读到,但不等于读得有效——长背景会占上下文。可把「必须遵守的命令级事实」收进短清单,或最终迁到CLAUDE.md。
顺带:-p / Agent SDK 挂起不再闷声
同版本另一处实用修复:以前 claude -p 与 Agent SDK 会话偶发挂死却不报错,脚本会以为还在跑。现在会报错并以退出码 1 结束,避免静默卡住。
对 CI、定时任务、自己包的 Agent 循环很重要:检查退出码,失败就重试或告警,别只看「进程还在不在」。非交互与 bare 启动边界,可对照 print / bare / CI。
怎么写 AGENTS.md 才适合当回退
若这份文件要同时服务多种工具,仍建议:
- 短:命令、目录、禁止事项优先;背景链到 README。
- 可执行:写「用 pnpm」「测试命令是…」,少写故事。
- 不冒充铁律:密钥、不可逆删除、强制门禁仍走 Hooks / deny。
- 团队可见:放进仓库并评审;别只放在个人机器。
有一天你为 Claude 写了更贴的 CLAUDE.md,回退自然停用——两份暂时共存时,以 CLAUDE.md 为准,避免「改了 AGENTS.md 却发现 Claude 根本没读」的错觉。
小结
- 2.1.277:无
CLAUDE.md→ 读AGENTS.md;/config→ Project instructions;Bedrock / Vertex / Foundry 暂未覆盖。 - 与 README / Hooks 的分工不变:说明是上下文,铁律是配置。
-p/ Agent SDK 挂起改为报错 + exit 1,脚本侧记得接失败路径。
先确认版本,再决定是继续只维护 AGENTS.md,还是补一份更贴 Claude 的短 CLAUDE.md。