给 Claude Code 和 Codex 定义角色与规则:CLAUDE.md/AGENTS.md、多 Subagent 并行与全自动模式实践
Contents
起因
用 Claude Code 和 Codex 这类 AI CLI 工具,如果只是"打开就聊",那跟用网页版 ChatGPT 没区别。真正的威力在于三个进阶用法:
- 定义角色和规则——让 AI 知道它是谁、该遵守什么规范
- 开多个 subagent 并行干活——一个任务拆成几块,同时跑
- 全自动运行——给个清晰的目标,AI 自己干到完成为止
这篇文章把这四件事一次讲清楚。
需求
- 给 Claude Code 定义项目级规则(CLAUDE.md)
- 给 Codex 定义项目级规则(AGENTS.md)
- 创建多个 subagent,各自负责不同任务,并行执行
- 开启全自动模式,AI 无需人工干预运行到目标达成
- 全自动模式下,目标描述必须清晰,规则边界必须明确
定义角色和规则
Claude Code:CLAUDE.md
CLAUDE.md 是 Claude Code 的项目级(或用户级)配置文件,放在项目根目录或 ~/.claude/ 下。Claude 启动时自动读取,作为系统提示的一部分。
|
|
这个文件的核心价值是:你不需要每次会话都重复告诉 AI 这些规则。写得越具体,AI 的行为越可预测。
Codex:AGENTS.md
AGENTS.md 是 Codex 的等价物,放在项目根目录(对当前项目生效)或 ~/.codex/ 下(全局生效)。语法和内容跟 CLAUDE.md 几乎一样:
|
|
两个工具的规则文件机制几乎相同:都是自动加载、都是 Markdown 格式、都可以项目级和用户级分开。区别只是文件名不同——CLAUDE.md vs AGENTS.md。
规则文件写什么
好的规则文件不是写给 AI 看的散文,而是可执行的约束清单。核心三类内容:
| 类别 | 示例 |
|---|---|
| 环境信息 | 技术栈、目录结构、常用命令 |
| 行为规范 | 代码风格、注释要求、测试要求 |
| 硬性禁止 | 不许碰的文件、不许执行的操作 |
其中"硬性禁止"最重要——这部分对应后面要讲的规则边界,也是全自动模式下 AI 不会越界的保障。
多 Subagent 并行
什么是 Subagent
Subagent 是 Claude Code 的一个机制:你可以定义多个专门的"子代理",每个有自己的角色描述、可用工具、模型选择。主 agent 通过 Task tool 把任务委派给它们。
关键特性:
- 上下文隔离:每个 subagent 有自己独立的上下文窗口,不会污染主对话
- 工具白名单:可以给每个 subagent 限定能用什么工具(比如只读不给写)
- 并行执行:多个 subagent 可以同时跑,结果汇总回主对话
创建 Subagent
在 .claude/agents/(项目级)或 ~/.claude/agents/(用户级)目录下创建 Markdown 文件:
|
|
|
|
并行调用示例
主 agent 在对话中自然调用 subagent。比如一次大重构,可以拆成:
|
|
Subagent 的权限控制
每个 subagent 可以通过 frontmatter 精确控制权限:
|
|
或者反过来,用 disallowedTools 禁止特定工具,继承其余:
|
|
这种设计让最小权限原则很容易落地:一个只负责搜索的 agent,就不该有写文件的权限。
全自动运行
Claude Code 的 Auto Mode
Auto Mode 是 Claude Code 的一种权限模式:用一个分类器模型在命令执行前自动审查,安全操作直接放行,高风险操作才拦截提示。大致能自动批准 90% 以上的常规操作。
开启方式(三选一):
|
|
Auto Mode 的拦截规则:
分类器会拦截的操作包括:可能泄数据的操作、降低系统安全性的操作、跨信任边界的操作(比如访问非当前项目的目录)等。
边界(Boundary)规则:
在 Auto Mode 下,你可以用 permissions.ask 和 permissions.deny 精确定义哪些操作始终提示、哪些操作永远禁止:
|
|
ask:分类器也无法自动批准,始终弹窗确认deny:直接阻止,不可覆盖
Claude Code 的 /goal 模式
/goal 模式解决的是另一个问题:不是单条命令的权限,而是整个任务的完成度。
用法:在会话中输入 /goal <条件>,Claude 会持续工作,每轮结束后由一个小型评估器模型检查条件是否达成,没达成就继续干,直到评估器判定通过。
|
|
工作流程:
- 你把目标和完成条件告诉 Claude
- Claude 执行一轮操作
- 评估器模型检查条件:达成 → 结束;未达成 → 把原因反馈给 Claude,继续下一轮
- 重复直到目标达成
好的 goal 条件 vs 坏的 goal 条件:
| 好的条件(可验证) | 坏的条件(不可验证) |
|---|---|
npm test 退出码为 0 |
“代码没问题” |
| 所有 TypeScript 编译错误清零 | “类型安全” |
curl localhost:8080/health 返回 200 |
“服务正常” |
关键原则:评估器只能看到对话记录,所以条件必须是"主模型能在对话里证明的事"——命令输出、测试日志、编译结果,这些都可以;“生产环境没有脏数据"这种评估器看不到的东西就不行。
Auto Mode + /goal 组合
两者解决不同维度的问题,组合使用效果最佳:
- Auto Mode:减少单轮内的权限确认弹窗
- /goal:保证多轮任务持续运行直到完成
一个典型的全自动工作流:
|
|
Codex 的全自动
Codex 没有 /goal 的等价物,但可以通过配置文件 + 命令行参数实现接近的效果:
|
|
on-failure 意味着:沙箱内操作直接放行,只有沙箱拒绝(越界操作)时才弹窗。配合 workspace-write(限制只能写工作区),就是 Codex 的"全自动"模式:
|
|
等价于 --sandbox workspace-write --approval on-failure。
关键实践:目标要清晰,边界要明确
无论 Claude Code 还是 Codex,全自动模式下有两个铁律:
铁律一:目标必须可验证
不要写"帮我优化代码”,要写"npm run build 无警告且所有测试通过"。
不要写"修复登录功能",要写"curl -X POST localhost:8080/api/login -d '{"user":"test","pass":"test"}' 返回 200 和 JWT token"。
目标越具体,AI 的自主循环越不容易跑偏。
铁律二:边界必须明确
全自动模式下,AI 有很高的自主权,所以必须提前用规则文件和权限配置把"绝不能碰的线"画清楚:
| 边界类型 | Claude Code 配置 | Codex 配置 |
|---|---|---|
| 永远禁止 | permissions.deny |
sandbox_mode = "read-only" |
| 始终确认 | permissions.ask |
approval_policy = "untrusted" |
| 自动放行 | permissions.allow / Auto Mode |
approval_policy = "on-failure" |
在 CLAUDE.md / AGENTS.md 里写"不要修改 .env"是一种约束,但写在 permissions.deny 里才是硬边界——前者是建议,后者是强制执行。
总结
| 能力 | Claude Code | Codex |
|---|---|---|
| 角色/规则文件 | CLAUDE.md |
AGENTS.md |
| 多 agent 并行 | Subagent(Task tool 委派) | 无原生支持 |
| 全自动模式 | Auto Mode + /goal |
--full-auto |
| 规则边界 | permissions.ask / deny |
approval_policy + sandbox_mode |
核心思路一致:用 Markdown 文件定义"你是谁、你该遵守什么",用权限配置定义"你绝不能做什么",然后给 AI 一个可验证的目标,让它自己跑到完成。
参考链接
Author 软件开发大郭
LastMod 2026-09-07