AI 编程 CLI 的指令文件怎么生效:CLAUDE.md、AGENTS.md 与 OpenCode 对比
很多人第一次接触 AI 编程 CLI 时,最容易混淆的不是模型,而是“项目规则到底写在哪个文件里”“子目录会不会继承”“多层文件同时存在时怎么合并”。
这篇文章只讲指令文件机制,不展开权限控制。如果你想先看整体选型,再判断自己该深入哪一块,建议先从总览文开始。
总览文入口:AI 编程 CLI 工具怎么选:Claude Code、Codex CLI 与 OpenCode 对比
写在前面
可以把指令文件理解成给 AI 准备的一份“项目作战手册”:
- 文件名和存放位置,决定工具能不能找到它。
- 目录继承规则,决定子目录是否自动拿到上层约定。
- 多文件合并策略,决定不同层级的规则会不会互相覆盖。
如果这些机制没搞清楚,多仓库项目里最常见的问题就是“规则明明写了,AI 却像没看见一样”。而这恰好是三款工具差异最明显的地方之一。
如果你后面还准备配置权限边界,可以接着看这篇:
AI 编程 CLI 的权限怎么配:Claude Code、Codex CLI 与 OpenCode 对比
工具概览
| 维度 | Claude Code | Codex CLI | OpenCode |
|---|---|---|---|
| 开发方 | Anthropic | OpenAI | SST(开源) |
| 指令文件名 | CLAUDE.md | AGENTS.md | AGENTS.md(优先)/ CLAUDE.md(兼容) |
| 开源 | ❌ 闭源 | ✅ 开源 | ✅ 开源 |
| 多模型支持 | ❌ 仅 Claude | ❌ 仅 OpenAI | ✅ 支持多家提供商 |
文件名与位置
指令文件用于向 AI 提供项目上下文、编码规范、工作流约定等自然语言说明,相当于 AI 的"项目说明书"。
Claude Code — CLAUDE.md
| 层级 | 路径 | 说明 |
|---|---|---|
| 系统托管 | /etc/claude-code/CLAUDE.md(Linux)/Library/Application Support/ClaudeCode/CLAUDE.md(macOS) | IT 管理员下发,最高优先级 |
| 用户全局 | ~/.claude/CLAUDE.md | 对当前用户所有项目生效,独立加载,非目录遍历结果 |
| 目录遍历 | 从当前工作目录向上逐级查找 | 沿途所有层级全部加载,越过 git root 继续向上(实测验证) |
| 子目录 | ./src/CLAUDE.md 等 | 懒加载,Claude 读取该目录文件时才加载 |
可通过
/context命令查看当前会话实际加载的文件列表。
Codex CLI — AGENTS.md
| 层级 | 路径 | 说明 |
|---|---|---|
| 用户全局 | ~/.codex/AGENTS.md | 对所有项目生效 |
| 仓库根目录 | <git repo root>/AGENTS.md | 提交到 git,团队共享 |
| 当前工作目录 | <cwd>/AGENTS.md | 与仓库根不同时单独加载 |
注意:Codex CLI 不做目录向上遍历,只从以上三个固定路径加载,按顺序合并。 可用
--no-project-doc或CODEX_DISABLE_PROJECT_DOC=1禁用项目文件加载。
OpenCode — AGENTS.md(优先)/ CLAUDE.md(兼容回退)
| 层级 | 路径 | 说明 |
|---|---|---|
| 用户全局 | ~/.config/opencode/AGENTS.md | 对所有项目生效,不提交 git |
| 目录遍历 | 从当前目录向上遍历至 git root | 每层取一个文件(AGENTS.md 优先,无则找 CLAUDE.md) |
| Claude 兼容(回退) | ./CLAUDE.md(无 AGENTS.md 时) | 两者同时存在时忽略 CLAUDE.md |
| 扩展引用 | opencode.json 的 instructions 字段 | 支持 glob 模式和远程 URL |
兼容说明:若同时存在
AGENTS.md和CLAUDE.md,只读取AGENTS.md。
目录继承行为
场景结构
| |
Claude Code
| |
关键特性:
- 遍历终止条件官方未明确,但实测越过 git root 继续向上
~/.claude/CLAUDE.md是独立的用户全局配置,并非遍历结果- 子目录采用懒加载策略,不影响启动性能
Codex CLI
| |
关键特性:
- 无目录遍历,固定三个路径
- 中间层级的文件(如
src/AGENTS.md)不会被加载 ~/projects/层的共享文件无法被自动加载
OpenCode
| |
关键特性:
- 停在 git root(源码验证:
const root = git ?? input.cwd) - 无 git 仓库时不向上遍历,以 cwd 为根
~/projects/层无法自动加载,需借助instructions字段显式引入
多文件合并策略
| 工具 | 合并方式 | 优先级规则 |
|---|---|---|
| Claude Code | ✅ 全部合并,所有层级的文件都加入上下文 | 越靠近当前目录优先级越高;冲突指令 Claude 可能随机选择一个 |
| Codex CLI | ✅ 全部合并,三个固定文件拼接 | 越靠近当前目录的文件内容排列在后,隐式优先 |
| OpenCode | ⚠️ 每层级取一个文件;可通过 instructions 字段显式引入多文件 | 越靠近当前目录优先级越高 |
Claude Code — Import 语法
在 CLAUDE.md 中可用 @ 引用其他文件,启动时一并加载:
| |
OpenCode — instructions 字段
通过 opencode.json 显式引入多个文件,支持 glob 和远程 URL:
| |
多仓库场景实践
多服务项目中,每个服务是独立的 git repo,服务间通过 HTTP 调用。核心问题是:AI 每次只在一个 repo 里工作,如何获取其他服务的接口信息?
Claude Code 方案(推荐)
利用目录遍历越过 git root 的特性,在 ~/projects/ 下放共享文件:
文件职责划分:
| |
~/projects/CLAUDE.md 示例:
| |
~/projects/order-service/CLAUDE.md 示例:
| |
Codex CLI 方案
无法加载 ~/projects/ 层,跨项目共享内容只能放进用户全局文件:
文件职责划分:
| |
~/.codex/AGENTS.md 示例:
| |
OpenCode 方案
遍历止于 git root,通过 _shared/ 目录 + instructions 字段共享内容:
推荐目录结构:
| |
opencode.json 示例:
| |
三方案对比
| 维度 | Claude Code | Codex CLI | OpenCode |
|---|---|---|---|
| 共享层位置 | ~/projects/CLAUDE.md(自动加载) | ~/.codex/AGENTS.md(手动维护) | _shared/ + instructions(显式引入) |
| 跨项目一致性 | ✅ 单一来源,自动同步 | ⚠️ 靠人工保证 | ✅ 单一来源,显式引入 |
| 配置成本 | 最低(放文件即生效) | 最高(全塞全局文件) | 中等(需配置 instructions) |
横向对比总表
| 特性 | Claude Code | Codex CLI | OpenCode |
|---|---|---|---|
| 文件名 | CLAUDE.md | AGENTS.md | AGENTS.md(优先)CLAUDE.md(兼容回退) |
| 用户全局路径 | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md | ~/.config/opencode/AGENTS.md |
| 向上目录遍历 | ✅ 越过 git root 继续(实测) | ❌ 三个固定路径 | ✅ 停在 git root |
| 多仓库共享层 | ✅ ~/projects/CLAUDE.md 自动加载 | ❌ 不支持 | ⚠️ 需 instructions 显式引入 |
| 子目录懒加载 | ✅ 按需触发 | ❌ | ❌ |
| 多文件全量合并 | ✅ 全部合并 | ✅ 三个文件合并 | ⚠️ 每层取一个 |
| Import / 引用语法 | ✅ @path | ❌ | ✅ instructions 字段 |
| 系统级策略文件 | ✅ | ❌ | ⚠️ 远程 .well-known/opencode |
| 兼容对方格式 | ❌ | ❌ | ✅ 兼容 CLAUDE.md |
| 禁用项目文件 | claudeMdExcludes | --no-project-doc | 无 |
总结
如果你最看重“目录向上继承 + 多仓库共享层”,Claude Code 的行为最完整,也最接近“放对位置就能生效”的体验。
如果你更接受固定路径、简单规则,Codex CLI 会更容易理解,但跨项目共享内容需要自己精简维护。
如果你想兼顾兼容性和灵活性,OpenCode 的 instructions 能补足很多场景,只是配置成本会比前两者更高一些。
文中的加载行为和合并策略基于 2026-03-18 左右公开资料与实测整理,真正落地前还是建议对照一下最新官方文档。
参考资料: