先说结论:Codex 一直读 AGENTS.md,Claude Code 从 2.1.277 起也会读——前提是项目里没有 CLAUDE.md。但如果你的 Claude Code 是通过自定义 ANTHROPIC_BASE_URL 接第三方接口(比如本站),2.1.281 之前的版本读不到 AGENTS.md。
我们用本站 Key 实测:Claude Code 2.1.280 三次都没读到 AGENTS.md 里的规则,2.1.281 和 2.1.311 每次都读到;Codex 0.164.0 读同一份文件也没问题。不想升级的话,在 CLAUDE.md 里写一行 @AGENTS.md,2.1.280 也能读到。技能目录可以用 skillshare 一次同步到两边。
创建 API Key,用一个 Key 同时接 Claude Code 和 Codex →
为什么要共用一份 AGENTS.md
同一个仓库里,有人用 Claude Code,有人用 Codex,或者你自己两个都用。项目规则(怎么跑测试、哪些目录不能动、交付时要说明什么)如果分别写在 CLAUDE.md 和 AGENTS.md 里,过几周两份就会对不上。
更省事的做法是:规则只写在 AGENTS.md 一份里,让两个工具都读它。Codex 原生读 AGENTS.md;Claude Code 需要注意版本和接入方式,下面细说。
CLAUDE.md 本身怎么写,见《Claude Code 的 CLAUDE.md 怎么写》;Codex 读 AGENTS.md 的覆盖顺序,见《Codex 自动化怎么搭》里的 AGENTS.md 一节。
官方更新日志怎么说
据 Claude Code 官方更新日志,和 AGENTS.md 有关的是这两条:
| 版本 | 更新日志原文 | 大意 |
|---|---|---|
| 2.1.277 | Added AGENTS.md support: in a project with no CLAUDE.md, Claude Code reads AGENTS.md instead | 开始支持 AGENTS.md:项目里没有 CLAUDE.md 时改读 AGENTS.md |
| 2.1.281 | Changed AGENTS.md support to also work on Amazon Bedrock, Google Vertex AI, Microsoft Foundry, LLM gateways, and sessions with telemetry disabled | AGENTS.md 支持扩展到 Bedrock、Vertex、Foundry、LLM gateways 和关闭遥测的会话 |
也就是说,2.1.277 到 2.1.280 这几个版本虽然“支持 AGENTS.md”,但只在官方直连时生效。用自定义 Base URL 接第三方接口属不属于“LLM gateways”,更新日志没写死,所以我们直接测了。
准备:两边都接上本站接口
Claude Code 写在全局 ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "你的 API Key"
},
"model": "claude-sonnet-5-5"
}
注意 Claude Code 的地址是 https://api.aicodewith.ai,不要加 /v1。完整步骤见《Claude Code 如何接入第三方 API》。
Codex 写在全局 ~/.codex/config.toml:
model_provider = "aicodewith"
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "你的 API Key"
每个字段的含义见《Codex config.toml 配置指南》。两边用同一个 Key 就行。
实测:一条规则看出读没读到
在一个空的 git 仓库里只放一个 AGENTS.md,写一条一眼就能看出有没有生效的规则:
# 项目规则
- 每次回答的第一行必须原样写:AGENTS_RULE_7341
- 之后用中文回答,不超过两句话。
然后让每个版本回答同一个问题:
claude -p "1+1 等于几?"
codex exec -s read-only "1+1 等于几?"
回答第一行出现 AGENTS_RULE_7341,就说明读到了。测试时间 2026 年 10 月 27 日,结果如下:
| 客户端版本 | 项目里的文件 | 读到 AGENTS.md 了吗 | 单次耗时 |
|---|---|---|---|
| Claude Code 2.1.280 | 只有 AGENTS.md | 3 次都没读到,只回答“1+1 等于 2” | 约 2–3 秒 |
| Claude Code 2.1.281 | 只有 AGENTS.md | 2 次都读到 | 约 2.5–4 秒 |
| Claude Code 2.1.311 | 只有 AGENTS.md | 3 次都读到 | 约 1.5–2.3 秒 |
| Claude Code 2.1.280 | AGENTS.md + 只写了 @AGENTS.md 的 CLAUDE.md | 2 次都读到 | 约 2.3 秒 |
| Claude Code 2.1.311 | AGENTS.md + 普通 CLAUDE.md(没写 @AGENTS.md) | 2 次都没读到 | 约 1.8–2.6 秒 |
| Codex 0.164.0 | 只有 AGENTS.md | 2 次都读到 | 约 4 秒 |
能看出三件事:
- 通过本站接口用 Claude Code 时,分界线就是 2.1.281。2.1.280 不报错,只是安静地不读,最容易被忽略。
- 老版本在
CLAUDE.md里写一行@AGENTS.md就能读到,这是不依赖版本的兼容写法。 - 新版本也一样:项目里只要有
CLAUDE.md,Claude Code 就不再自动读AGENTS.md,除非CLAUDE.md里导入了它。
另外,2.1.280 启动时会提示不认识 claude-sonnet-5-5 这个模型名(这个版本的模型清单比较旧),不影响回答,升级后就没有这条提示了。
怎么配:按你的情况选一种
情况一:Claude Code 是 2.1.281 或更新,项目里没有 CLAUDE.md。 只放 AGENTS.md 就行。先确认版本:
claude --version
claude update
情况二:版本更老,或者项目里已经有 CLAUDE.md。 把共用规则挪进 AGENTS.md,CLAUDE.md 第一行写导入,Claude 专属的内容写在下面:
@AGENTS.md
# 只给 Claude Code 的补充
- 子 Agent 只用只读工具。
@AGENTS.md 要写在正文里,不要放进代码块,否则不会展开。
情况三:想改默认行为。 据官方更新日志,2.1.277 起可以在 /config 的 “Project instructions” 里修改项目说明文件的读取方式。
不管哪种,配完都建议照上面的方法放一条无害的标记规则测一次,确认后再删掉标记。
技能:用 skillshare 一次同步到两边
规则共用了,技能(Skill)最好也只维护一份。skillshare 是一个开源命令行工具,把一个源目录里的技能同步到 Claude Code、Codex 等多个工具的技能目录。我们测的是 v0.27.0,按项目级用法:
# 安装(macOS / Linux,默认装到 ~/.local/bin)
curl -fsSL https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | sh
# 在项目根目录初始化,只同步到 Claude Code 和 Codex
skillshare init -p --targets claude,codex
# 技能放在 .skillshare/skills/<技能名>/SKILL.md,然后同步
skillshare sync -p
我们放了一个写提交信息的技能 commit-msg,要求第一行以 [team] 开头、最后一行写 Skill-Used: commit-msg。同步约 1.7 秒,输出:
✓ claude 1 linked
✓ codex 1 linked
✓ Synced 1 skill to 2 targets
同步后,.claude/skills/commit-msg 和 .agents/skills/commit-msg 都是指向 .skillshare/skills/commit-msg 的链接,改源文件两边同时生效。
然后让两边各写一条提交信息:
| 客户端 | 怎么问 | 结果 | 耗时 |
|---|---|---|---|
| Claude Code 2.1.311 | 直接说“帮我写一条 git 提交信息” | 自动用上技能,第一行 [team],末尾有 Skill-Used: commit-msg | 约 8 秒 |
| Codex 0.164.0 | 同样的话,问了 2 次 | 能在技能列表里看到 commit-msg,但两次都没自动用,写成了普通的 docs: 格式 | 约 7–10 秒 |
| Codex 0.164.0 | 提示词开头加 $commit-msg 点名 | 用上技能,格式正确 | 约 10 秒 |
所以在 Codex 里,重要的技能建议直接点名调用,或者把技能的 description 写得更具体,让它更容易被自动选中。技能怎么写、怎么触发,见《Agent Skills 怎么用》和《Codex Skills 怎么用》。
据 skillshare 文档,默认的 merge 模式按技能逐个建链接,工具目录里原来就有的技能会保留;如果你的系统不方便用链接,可以用 skillshare target <名字> --mode copy 改成复制。
创建 API Key,在 Claude Code 和 Codex 里跑同一套规则 →
安全:别在下载目录里打开 Agent
AGENTS.md 是 Agent 会照做的文件,所以它也会被人利用。据 Forever Security 的报告,他们在一位客户电脑的 ~/Downloads 目录里发现了一个伪装成工程笔记的恶意 AGENTS.md:网页可以不经点击把文件下载到这个目录,用户在这里启动 Codex 后,Codex 按文件里的指示改了自己的 ~/.codex/config.toml,并尝试安装恶意 npm 包。报告还说,他们用类似的 CLAUDE.md 在 Claude Code 上复现了把接口请求改发到别处、拿走登录令牌的做法。
对用第三方 Key 的人,最需要注意的是:Base URL 一旦被改走,你的 Key 就会被发到别人的服务器上。几条简单习惯:
- 只在项目目录里启动 Claude Code 和 Codex,不要在下载目录、桌面这类杂物目录里启动;
- 拉代码后先看一眼
AGENTS.md、CLAUDE.md有没有陌生改动(git diff就行); - 留意
~/.codex/config.toml里突然多出的mcp_servers,以及~/.claude/settings.json或项目.claude/settings.json里被改动的ANTHROPIC_BASE_URL; - 发现可疑文件,立刻到控制台删掉旧 Key、新建一个。
常见问题
AGENTS.md 和 CLAUDE.md 能同时放吗?
能,但要在 CLAUDE.md 里写 @AGENTS.md。实测 2.1.311 在两个文件都存在、CLAUDE.md 没导入时,不会读 AGENTS.md。
怎么知道自己的 Claude Code 是不是 2.1.281 之后的?
运行 claude --version。低于 2.1.281 又不方便升级,就用 @AGENTS.md 的写法。
Claude Code 跑到一半想换 Codex 接着做呢?
见《Claude Code 跑一半怎么交给 Codex》,用 handoff.md 交接上下文,同一个 Key 两端切换。



