Claude Code 与 Codex 共用 AGENTS.md 项目指令

Claude Code AGENTS.md 完整教程:如何与 Codex 共用项目级 Agent 指令

摘要: Claude Code 与 Codex 可以共用项目级 Agent 指令,但两者的原生入口不同:Claude Code 使用 CLAUDE.md,Codex 使用 AGENTS.md。最实用的方案是把编码规范、测试命令、目录约束和交付清单写入仓库根目录的 AGENTS.md,再由 CLAUDE.md 使用 @AGENTS.md 导入,同时将权限、工具偏好和产品专属功能留在各自文件中。本文提供完整目录设计、可复制模板、Monorepo 作用域、跨平台同步、CI 校验、安全边界与迁移步骤。

核心结论

Claude Code 并不会因为仓库中存在 AGENTS.md 就自动把它当作原生项目记忆;Codex 会自动读取 AGENTS.md。要让两者共用项目规则,推荐采用“AGENTS.md 公共核心 + CLAUDE.md 导入 + 两侧专属附录”的结构。

  • 公共规则只维护一次: 架构、测试、格式化、禁止事项和完成标准写入 AGENTS.md
  • Claude Code 通过导入复用: 根目录 CLAUDE.md 写入 @AGENTS.md,再补充 Claude 专属工作方式。
  • 不要把权限当文字建议: Shell、网络、MCP、Secrets 和生产操作仍需由 settings、Sandbox、CI 与审批机制强制执行。
  • Monorepo 按目录细化: 根规则保持短小,子目录分别放置更具体的 AGENTS.mdCLAUDE.md,避免把全仓库文档一次塞进上下文。
  • 用 CI 防止漂移: 验证导入路径、必需章节、禁止密钥、命令可执行性及子目录规则覆盖关系。

先纠正概念:AGENTS.md 不是 Claude Code 的原生文件名

OpenAI 官方文档说明,Codex 会在开始工作前读取 AGENTS.md,并根据仓库和当前目录加载适用指令。Anthropic 官方文档则把 CLAUDE.md 定义为 Claude Code 的项目记忆文件,并支持在其中使用 @path/to/file 导入其他文件。

因此,“Claude Code AGENTS.md”更准确的含义不是 Claude Code 新增了与 Codex 相同的自动发现机制,而是借助 CLAUDE.md 的导入能力,让 Claude Code 复用 AGENTS.md 中的公共内容。这个区别关系到排错:如果只有 AGENTS.md、没有 CLAUDE.md 导入,不能假设 Claude Code 一定读取了它。

对比项Claude CodeCodex共用策略
原生项目指令CLAUDE.mdAGENTS.md保留两个入口
公共规则来源可通过 @AGENTS.md 导入自动读取AGENTS.md 为公共核心
目录级规则分层 CLAUDE.md分层 AGENTS.md子目录成对配置
用户级偏好用户目录中的 Claude 配置/记忆Codex 用户配置与指令不提交个人偏好和凭据
权限控制settings、权限模式、Sandbox、HooksSandbox、审批、配置与执行环境不在 Markdown 中伪造强制权限
工具扩展MCP、Skills、Hooks、SubagentsMCP、Skills、Subagents专属配置与公共规范分离

本文聚焦文件协作;更完整的 Agent 项目实践可继续参考 AI Stack Nav 的 Codex 项目上下文教程Claude Code 教程

AGENTS.md 与 CLAUDE.md 双入口共用指令架构图
Codex 原生读取 AGENTS.md,Claude Code 通过 CLAUDE.md 导入并叠加专属规则。

推荐目录结构:公共核心与工具适配层

中小型仓库可以从三个文件开始:根目录 AGENTS.md、根目录 CLAUDE.md、详细文档目录 docs/agent/。不要把所有架构文档复制进指令文件;入口只说明“什么时候读取哪份文档”。

your-repo/
├── AGENTS.md                 # 公共规则,Codex 原生读取
├── CLAUDE.md                 # 导入公共规则 + Claude 专属说明
├── docs/
│   └── agent/
│       ├── architecture.md
│       ├── testing.md
│       └── security.md
├── services/
│   └── api/
│       ├── AGENTS.md         # API 子目录规则
│       └── CLAUDE.md         # 导入同目录 AGENTS.md
└── scripts/
    └── check-agent-instructions.sh

公共核心应覆盖:项目目标与边界、仓库地图、安装命令、格式化与测试命令、代码风格、生成文件处理、数据库迁移规则、安全禁区、完成定义和提交/PR 要求。只写 Agent 无法从代码可靠推断的内容。

工具专属层则处理差异。例如 Claude Code 的 Hooks、权限模式和专属 Skills;Codex 的 Sandbox、审批策略、Worktree 或专属 Skill 路由。这些内容若写入公共核心,会让另一工具收到无法执行的命令。

可复制的 AGENTS.md 公共模板

下面模板刻意保持短小。把 YOUR_* 替换为真实项目值,并删除不适用条目。

## 项目目标

这是 YOUR_PROJECT_NAME。优先做最小、可验证、可回滚的修改。

## 仓库地图

- `src/`:业务代码
- `tests/`:自动化测试
- `docs/`:架构和运行文档
- `generated/`:自动生成,禁止手工编辑

## 开发命令

- 安装:`YOUR_INSTALL_COMMAND`
- 格式化:`YOUR_FORMAT_COMMAND`
- 单元测试:`YOUR_TEST_COMMAND`
- 类型检查:`YOUR_TYPECHECK_COMMAND`

## 工作规则

1. 修改前先阅读相关代码、测试和目录级指令。
2. 不修改无关文件,不覆盖用户已有改动。
3. 新行为必须新增或更新测试。
4. 数据库、权限、公开 API 变更先给方案并等待确认。
5. 禁止读取、输出或提交真实密钥与个人数据。

## 完成定义

- 相关测试、格式化和类型检查通过。
- 说明变更文件、验证结果、限制与回滚方式。
- 不声称未实际运行的检查已经通过。

指令要使用可验证动词:“运行”“检查”“不得修改”“等待确认”,而不是“尽量写好代码”。不要塞入大段教程、团队历史和已可由 linter 强制的规则。指令越长,模型越难区分真正重要的约束,Token 成本也越高。

CLAUDE.md 如何导入 AGENTS.md

根目录 CLAUDE.md 可以把公共文件作为第一项导入,再补充 Claude Code 专属内容:

@AGENTS.md

## Claude Code 专属说明

- 先使用计划模式处理跨模块变更。
- 遇到权限、部署、数据库写入或外部消息操作时暂停并请求确认。
- 不自动启用未在项目设置中批准的 MCP Server。
- 需要详细架构时读取 `docs/agent/architecture.md`,不要一次加载整个 docs 目录。

官方文档说明 CLAUDE.md 支持导入其他文件。实施时仍需在目标 Claude Code 版本中验证相对路径解析,尤其是嵌套目录、符号链接和从不同工作目录启动的情况。不要用导入链形成循环,例如 CLAUDE.md → AGENTS.md → CLAUDE.md

对于子目录,推荐在 services/api/CLAUDE.md 导入同目录的 AGENTS.md。如果还需要根规则,先确认 Claude Code 已按层级加载根 CLAUDE.md,避免重复导入导致上下文浪费或规则重复。子目录文件只写差异,不要复制根文件全文。

三种共用方案如何选

方案一:CLAUDE.md 导入 AGENTS.md,最推荐

优点是符合两边官方机制,Git 中仍能看到两个清晰入口;Windows、macOS 和 Linux 都不依赖符号链接。缺点是需要维护一行导入和少量专属内容。大多数团队选择它即可。

方案二:符号链接,适合纯同内容项目

可让 CLAUDE.md 指向 AGENTS.md,实现物理单文件。但 Windows 权限、Git 配置、压缩包、某些 IDE 与容器挂载可能改变链接行为;而且两种工具最终往往需要少量专属说明。除非团队环境统一,否则不作为默认方案。

ln -s AGENTS.md CLAUDE.md

方案三:从公共源生成两个入口,适合大型企业

docs/agent/shared-rules.md 设为源文件,通过脚本生成 AGENTS.mdCLAUDE.md,分别拼接适配内容。CI 检查生成结果是否最新。优点是模板化和规模化;缺点是开发者不能随意直接编辑生成文件,流程更复杂。

Monorepo 的作用域与优先级

Monorepo 不应只有一个上万字根文件。根文件定义全局安全、提交和通用命令;frontend/backend/infra/ 分别定义框架、测试和部署差异。Agent 修改某个文件时,只应应用从仓库根到目标目录路径上的相关规则。

Codex 官方文档描述了 AGENTS.md 的目录作用域和覆盖关系;Claude Code 官方资料也说明会读取目录层级中的 CLAUDE.md,子目录规则适用于其范围。两者的精确发现顺序与最大加载边界可能随版本变化,团队应通过可观察任务验证,而不是根据记忆猜测。

一个稳健约定是:下层只能细化上层,不能降低安全要求。例如根文件规定“生产部署必须人工批准”,infra/AGENTS.md 不得写“自动部署生产”。出现矛盾时,系统/管理员策略和运行时权限优先,Markdown 文件不能覆盖更高层安全控制。

十步落地与验证流程

  1. 盘点现有指令。 搜索 CLAUDE.mdAGENTS.md、README、贡献指南和 CI 脚本,删除互相矛盾或已经过期的规则。
  2. 抽取公共核心。 把两边都需要的仓库地图、命令、编码规范、安全边界和完成定义写入根 AGENTS.md
  3. 创建 Claude 入口。 新建 CLAUDE.md,第一行导入 @AGENTS.md,其余仅放 Claude 专属内容。
  4. 拆分详细文档。 将架构、测试、安全和发布长文移动到 docs/agent/,入口文件只提供按需阅读路由。
  5. 建立子目录规则。 只在确有差异的模块添加成对入口,并确保下层不削弱根级安全约束。
  6. 用相同任务双测。 分别让 Claude Code 与 Codex复述适用命令、禁止事项和完成定义,不要求模型泄露隐藏推理。
  7. 执行无害验证。 让两者修改临时示例、运行最小测试,确认目录规则和命令均正确生效。
  8. 加入 CI 检查。 校验导入目标存在、无循环、必需章节齐全、没有疑似密钥、生成文件没有漂移。
  9. 实施代码审查。 修改 Agent 指令必须通过 CODEOWNERS 或安全负责人审核,PR 中解释行为变化。
  10. 版本升级回归。 Claude Code 或 Codex 更新后,重新执行固定指令测试,记录差异并保留回滚版本。
Claude Code 与 Codex 共用项目指令十步流程
从规则盘点、模板拆分到双 Agent 验证、CI 防漂移与版本回归。

CI 校验:防止导入失效和规则漂移

最小 CI 可以检查根文件存在、CLAUDE.md 包含 @AGENTS.md、公共文件没有密钥样式,并验证文档声明的测试命令。复杂项目还可解析目录树,确保每个子目录的 Claude 入口导入正确公共文件。

set -eu
test -f AGENTS.md
test -f CLAUDE.md
grep -Fq '@AGENTS.md' CLAUDE.md

if grep -En '(sk-[A-Za-z0-9_-]{20,}|AKIA[0-9A-Z]{16})' AGENTS.md CLAUDE.md; then
  echo '发现疑似凭据,拒绝提交'
  exit 1
fi

grep -Fq '## 完成定义' AGENTS.md

脚本本身不能证明模型一定遵守指令。真正验收要包含行为测试:Agent 是否先读目标目录规则;是否拒绝编辑生成文件;是否运行指定测试;生产、权限和外部消息动作是否停在审批门前。记录 Agent 版本、启动目录和测试结果,方便升级后对比。

常见故障与排查方法

第一种问题是 Claude Code 没有表现出 AGENTS.md 中的规则。先确认实际启动目录位于仓库内,CLAUDE.md 的导入行拼写和大小写正确,目标文件已提交且当前用户可读。Linux 文件系统区分大小写,@agents.md 不等于 @AGENTS.md。再用一条无害、可观察的规则测试,例如要求在交付总结中列出实际运行的测试,而不要用危险命令验证。

第二种问题是 Codex 使用了错误目录的规则。检查当前工作目录、目标文件路径以及从仓库根到目标目录之间是否存在多个 AGENTS.md。将每个子目录文件的第一段写清适用模块,减少含糊覆盖。若从 Monorepo 根部同时修改多个服务,应分别读取各路径规则,不能把一个服务的框架命令套到另一个服务。

第三种问题是两边给出不同结果。这不一定表示规则未加载,因为模型、工具、Sandbox 和上下文不同。先比较确定性证据:读取了哪些文件、运行了哪些命令、修改了哪些路径、测试输出是什么。若差异来自模糊表述,就把规则改为明确的条件—动作形式,例如“修改 src/api/** 后必须运行 YOUR_API_TEST_COMMAND”。

第四种问题是导入内容过长或重复。检查根 CLAUDE.md 是否既自动继承了上层规则,又手工重复导入;检查 AGENTS.md 是否复制了完整架构文档。保留一份权威规则,其他内容通过具体链接按需读取。对大仓库,可以为每个模块维护短索引,而不是把整棵文档树放入上下文。

第五种问题是 Windows 符号链接在某些开发机或 CI 中变成普通文件。若团队无法统一 Developer Mode、Git 和容器设置,应迁移到显式导入方案。迁移时先创建真实 CLAUDE.md,写入 @AGENTS.md,在三种主要环境执行验证后,再删除旧链接;保留一个 Git Commit 作为回滚点。

团队治理:谁可以修改 Agent 的工作规则

Agent 指令会改变自动化行为,应像代码与 CI 配置一样治理。根 AGENTS.mdCLAUDE.md 和安全文档可由平台团队或架构负责人作为 CODEOWNERS;模块级文件由模块负责人审核;涉及权限、部署和数据处理的修改增加安全审批。PR 模板要求作者说明新增规则、受影响 Agent、验证任务和回滚方式。

团队还应定义冲突处理顺序:运行环境的系统策略与管理员策略最高,其次是仓库根安全约束,再是子目录业务规则,最后是当前用户的任务要求。用户不能通过一句 Prompt 要求 Agent 忽略安全审批;子目录也不能解除根目录的生产保护。将这一顺序写入公共核心,并在 CI 中对关键语句做最小检查。

对规则变更建立轻量版本记录,例如在 PR 标签中标记 agent-instructions,发布说明中记录行为变化。无需为每次文字修订单独发软件版本,但重要变更应通知使用 Claude Code 与 Codex 的开发者。若新规则导致失败率或 Token 成本明显上升,可以按 Git Commit 回滚,并用固定验收任务定位问题。

从单工具项目迁移到双 Agent 的策略

原先只有 CLAUDE.md 的项目,不要直接重命名文件。先把其中真正跨工具的部分复制到 AGENTS.md,再让 CLAUDE.md 导入公共核心,并保留 Hooks、Claude Skills、权限模式等专属段落。运行 Claude 回归确认行为未丢失后,再让 Codex执行同一批无害任务。

原先只有 AGENTS.md 的项目更简单:新增短 CLAUDE.md 导入它,然后补充 Claude Code 专属边界。若公共文件包含 Codex 专属命令,先移出到单独文档或改写为平台无关规则。迁移期间不要同时大改项目架构和 Agent 指令,否则出现差异时难以定位原因。

回退方案是恢复两个独立入口文件,但仍可把稳定规范放入 docs/agent/shared-rules.md。回退不是失败;如果某个版本对导入、链接或目录发现的行为发生变化,短期独立文件加 CI 一致性检查,往往比继续依赖不确定行为更安全。

安全、权限与 Prompt Injection

仓库指令属于会进入 Agent 上下文的文本,因此拥有写权限的人可能通过 PR 修改它,诱导 Agent 读取 Secret、上传代码或跳过测试。AGENTS.mdCLAUDE.md 应由明确 CODEOWNERS 审核,来自 Fork 的变更不能在带生产凭据的 Runner 中直接执行。

不要在文件中保存 API Key、密码、内部主机凭据和个人信息。示例统一使用 YOUR_API_KEYYOUR_DOMAIN 等占位符。Markdown 中写“禁止联网”不是网络隔离;写“部署前询问”也不是审批系统。Shell、文件、网络、MCP 和云身份要在 Sandbox、settings、代理、CI/CD 与 IAM 中真正限制。

Hooks 或自动脚本要设置超时、有限重试和幂等键,防止 Agent 循环触发。付款、删除数据、发布内容、发邮件、修改账户、修改权限和生产数据库操作必须由独立权限与人工审批控制。审计日志至少记录所加载指令文件的 Commit SHA、工具版本、任务、命令、文件变更、审批和测试结果。

成本、性能与维护策略

每次加载冗长指令都会增加上下文 Token 和注意力负担。根入口控制在能快速扫描的长度,把稳定细节链接到文档;不要每次会话加载全部 ADR、API 文档和历史事故。文档按需读取通常比把所有内容复制进两个入口更省成本。

共用不会消除工具差异。Claude Code 与 Codex 可能采用不同模型、工具、Sandbox、上下文管理和执行策略,同一规则也可能产生不同实现。团队应把格式、类型、测试和安全要求尽量交给确定性工具,Agent 指令主要负责导航与决策边界。

每个规则应有所有者和复查周期。删除已经由 CI 强制的重复文字,更新过期命令,并通过 Git 历史回滚。不要让 Agent 自动修改自身核心约束后立即在同一高权限任务中执行;这类变更应进入新的会话,并经过人工审查。

事实依据与来源

截至 2026 年 9 月 22 日,Anthropic 官方文档明确把 CLAUDE.md 用于指导 Claude Code 行为,并说明可导入其他文件、使用目录层级规则;OpenAI 官方 Codex 文档明确说明 Codex 在工作前读取 AGENTS.md,并使用目录作用域的项目指令。OpenAI 还建议保持 AGENTS.md 简洁,让它提供持久的仓库导航和实践说明。

“以 AGENTS.md 为公共核心、由 CLAUDE.md 导入”的结构是基于两边官方机制形成的实施建议,不是双方宣布的联合标准。符号链接、生成同步、CI 脚本和模板也属于编辑方案,需在团队所用操作系统、IDE、容器和具体版本中实测。本文没有使用未经证实的性能提升或成本百分比。

FAQ

Claude Code 会自动读取 AGENTS.md 吗?

不能把它当作官方保证。Claude Code 的原生项目记忆入口是 CLAUDE.md。若要复用 AGENTS.md,应在 CLAUDE.md 中显式使用 @AGENTS.md 导入并实测。

Codex 会读取 CLAUDE.md 吗?

Codex 的官方项目指令机制是 AGENTS.md,不应假设它自动解释 CLAUDE.md。把公共规则放进 AGENTS.md,Claude 再导入,是更清晰的兼容方向。

能否只创建一个符号链接?

可以,但跨 Windows、容器、压缩包和不同 Git 配置时可能失效,而且难以添加工具专属规则。环境统一的小团队可用,通用教程更推荐导入方案。

AGENTS.md 应该提交到 Git 吗?

项目级规则通常应该提交,以便团队、CI 和 Agent 使用同一版本。个人偏好、账号信息、密钥和机器路径不应提交,应放在用户级配置中。

文件越详细,Agent 效果越好吗?

不是。入口文件应短、明确、可执行。长背景放进按需文档,格式与测试要求交给确定性工具。冗长和矛盾指令会提高 Token 成本并降低遵循度。

子目录规则与根规则冲突怎么办?

设计上应禁止下层削弱根安全规则。业务细节可由更具体目录规则覆盖;系统、管理员、Sandbox、IAM 和审批策略始终高于仓库 Markdown。

如何确认两个 Agent 真的加载了规则?

使用固定的无害验收任务,检查它们能否指出正确命令、禁止目录和完成定义,并观察实际行为与审计日志。不要只问“你读了吗”就认定成功。

AGENTS.md 能代替 Sandbox 和权限配置吗?

不能。它是文本指令,不是安全边界。网络、文件、Shell、MCP、Secrets 和生产权限必须由运行环境强制执行,高风险动作还要人工审批。

参考来源

  1. Anthropic, How Claude remembers your project
  2. Anthropic, Claude Code settings
  3. Anthropic, Claude Code security
  4. OpenAI, Custom instructions with AGENTS.md
  5. OpenAI, Codex customization overview
  6. OpenAI, Codex best practices
  7. OpenAI, Introducing Codex

工具评测文章

工具选型与提示词资料

适合阅读工具评测、工具推荐、对比测评类文章后继续转化。

工具选型表 按场景、价格、上手难度和核心能力筛选合适的 AI 工具。 查看资料包 提示词模板包 提供写作、运营、编程、图片和视频生成常用提示词模板。 查看资料包

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

本站累计访问量: 366,072
AI Stack Nav 客服会员 / 支付 / 下载 / 工具库
你好,我是 AI Stack Nav 客服助手。你可以问我会员开通、微信支付、资料下载、订单入口、AI 工具库等问题。