让 Codex、Claude Code 与 Cursor 组成一支 CLI 团队
高级12 分钟阅读企业AI

让 Codex、Claude Code 与 Cursor 组成一支 CLI 团队

通过 AGENTS.md、CLAUDE.md、Cursor 规则和 CLI 非交互模式,让 Codex 设计、Claude 评审、Cursor 实现,无需定制编排平台。

您应该能够做到的事情

三个智能体不需要共享大脑,但需要遵循同一套约定:一份共享说明文件、字段明确的 Markdown 交接、隔离的 worktree,以及把设计、评审和实现作为独立任务运行的 CLI 命令。

仅在此浏览器中保存。
本文内容

Codex、Claude Code 和 Cursor 可以在配置的权限和能力范围内编辑仓库、运行命令并遵循项目说明。本文测试的是基于文件的操作协议;它并未声称每个团队都需要三个智能体,也未声称该协议会消除工具特定的行为。

本文将展示如何使用你已有的文件和 CLI 实现这一点:

  • AGENTS.md 中共享项目说明
  • 通过 CLAUDE.md 导入 @AGENTS.md 实现 Claude 桥接
  • Cursor 基线说明加上可选的 .cursor/rules
  • 角色之间通过带明确字段的 Markdown 文件交接
  • 分别执行设计、评审和实现的非交互式 CLI 运行

此处不需要任何自定义的项目管理平台。如果你之后希望在智能体之间共享一个统一的待办事项列表,可以将本文方法与 Linear 多智能体项目管理 配合使用。此处的协调媒介是 Git 加上 Markdown。

产品文档于 2026-08-04 重新验证,依据包括 AGENTS.mdOpenAI Codex AGENTS.md 指南Codex 非交互模式Claude Code 记忆文档Claude Code CLI 参考Cursor CLI 文档。本次审阅并未完整执行三个客户端的交接流程;在依赖此工作流程之前,请使用固定版本的客户端验证命令和权限。

团队结构

一个可靠的入门专业化方向:

角色工具职责主要输出
设计师Codex CLI提出架构、接口、测试计划、风险docs/handoffs/<id>.md 中的设计部分
评审者Claude Code质疑设计或实现同一份交接文件中的评审部分
实现者Cursor CLI / Cursor Agent按照批准的计划以小补丁形式实现分支、测试、PR、实现说明

这些角色只是惯例,并非工具供应商施加的限制。每种工具都可以进行设计、评审或实现。专业化的价值在于划出清晰的产物边界:一个智能体编写计划,另一个智能体提出质疑,第三个智能体只实现通过评审的部分。

共享指令:单一事实来源

使用 AGENTS.md 作为可移植的基准

AGENTS.md 是由 Agentic AI 基金会维护的跨工具指令格式。Codex 可以原生读取它。Cursor 支持将 AGENTS.md 作为共享项目指导(与 .cursor/rules 一同使用)。请保持其简短且具有操作性:

# AGENTS.md

## 命令
- 安装:`pnpm install`
- 测试:`pnpm test`
- 类型检查:`pnpm typecheck`
- 代码检查:`pnpm lint`

## 补丁规则
- 每个分支只包含一项行为变更
- 优先复用现有辅助函数,不要新增依赖
- 不要编辑机密信息或 `.env*` 文件
- 不要合并到 main

## 多智能体协议
- 开始前阅读 `docs/handoffs/`
- 将状态写回当前交接文件
- 设计者、评审者和实现者必须使用不同的智能体运行
- 遇到身份验证、支付、生产基础设施或数据删除时停止

OpenAI 的 Codex 文档说明,系统会从项目根目录一路查找到当前工作目录,离工作目录更近的文件优先;还可使用 AGENTS.override.md,所有说明文件默认合计不超过 32 KiB,除非另行提高限制。根目录文件应保持精简,包级规则放进相应子目录的 AGENTS.md

CLAUDE.md 桥接 Claude Code

Claude Code 读取 CLAUDE.md,而不是 AGENTS.md。官方建议是导入共享文件:

@AGENTS.md

## Claude Code
- 编辑 `src/billing/` 和身份验证代码前,优先使用计划模式
- 对于评审任务,除非交接状态为 `implement` 或 `fixes`,否则不要实现

当不需要 Claude 特定的附加功能时,也可以使用符号链接 (ln -s AGENTS.md CLAUDE.md)。在 Windows 上,建议使用 @AGENTS.md 导入。

使用 Claude 的 /context 确认加载,并检查 内存文件

保持 Cursor 特定规则的范围狭窄

Cursor 可以通过根目录的 AGENTS.md 读取共享约定。只有 Cursor 专属需求才应放进 .cursor/rules/*.mdc,例如按 glob 模式限定范围的规则。不要维护三套彼此分叉的规则百科。

交接文件即为与队友的对话

创建一个目录:

mkdir -p docs/handoffs

每个工作单元使用一个文件:

docs/handoffs/2026-07-29-pricing-section.md

# 交接:定价区块

- ID: pricing-section
- 状态:design
- 当前负责人:codex
- 下一负责人:claude
- 分支:codex/design-pricing-section
- 工作树:../app-pricing-section

## 目标
使用现有 Section/PlanCard 模式实现营销页面的定价区块。

## 非目标
计费、优惠券、席位数量计算。

## 设计
(由 Codex 填写)

## 评审
(由 Claude 填写)

## 实现说明
(由 Cursor 填写)

## 验证
- 命令:`pnpm test:e2e --grep "pricing"`
- 最近一次结果:

## 决策日志
- 2026-07-29 Codex:拟定组件边界

适用于循环操作的状态值(而非单向滑动):

  1. design
  2. design-review:有阻塞性发现时返回 design;无阻塞项时进入 implement
  3. implement
  4. impl-review:有阻塞性发现时进入 fixes;无阻塞项时设为 done
  5. fixes:实现者解决发现项,然后返回 impl-review
  6. done
  7. blocked-human

并非每项任务都会进入 fixes。没有阻塞项的 impl-review 可以直接进入 done

每次 CLI 运行都始于读取文件,并以更新状态、所有者和决策日志结束。这就是整个编排层的全部内容。

示例:完成一次设计 → 评审循环后

Codex 完成设计并由 Claude 评审后的示例交接摘录:

- 状态:implement
- 当前负责人:cursor
- 下一负责人:claude

## 设计
文件:新增 `PricingSection.tsx`,复用 `PlanCard.tsx`
CTA 必须使用 `src/lib/analytics.ts` 中的 `trackEvent()` + `getCtaClickProps()` 跟踪点击
移动端:`md` 以下纵向堆叠,`md` 起使用三列
套餐 ID:`starter`、`pro`、`business`
测试:`pnpm test:e2e --grep "pricing"`

## 评审
阻塞项:无(断点和套餐 ID 已在上述设计中解决)
非阻塞项:
- 如果后续引入 CMS,再把套餐常量提取出来。

## 决策日志
- 2026-07-29 Codex:确定初始组件边界
- 2026-07-29 Claude:要求明确断点和套餐 ID
- 2026-07-29 Codex:更新设计;Claude 确认阻塞项已解决 → implement

Cursor 应以这份产物为准。聊天记录可以不看,但必须读取该文件。

安装并调用每个 CLI

确切的安装路径会变化;请使用每个供应商当前的安装文档。重要的是非交互式调用模式。

Codex:设计阶段

Codex 的非交互模式是 codex exec。默认情况下,它在只读沙箱中运行。需要更新交接文件的设计任务需要工作区写入权限:

cd ../app-pricing-section
codex exec --sandbox workspace-write "$(cat <<'EOF'
Read AGENTS.md and docs/handoffs/2026-07-29-pricing-section.md.
Status is design. Produce the Design section only:
- proposed files
- component/API boundaries
- test plan
- risks
- open questions
Do not implement application code.
Set status to design-review and next owner to claude.
Append a Decision log entry.
EOF
)"

仅在需要实时引导设计时,才使用交互式 codex。对于脚本和序列化运行,请优先使用 codex exec

Claude Code:评审阶段

Claude Code 的打印模式可以查看和更新交接文件,但前提是你的权限设置允许在该工作树中进行写入操作。请严格限制任务范围:

cd ../app-pricing-section
claude -p --permission-mode acceptEdits --max-turns 30 --max-budget-usd 5 --output-format text "$(cat <<'EOF'
Read AGENTS.md / CLAUDE.md and docs/handoffs/2026-07-29-pricing-section.md.
You are the reviewer. Do not implement application code.
Challenge the Design section for missing edge cases, local-architecture mismatches, weak tests, and security issues.
Write findings into the Review section as Blocking vs Non-blocking.
If blocking findings exist, set status to design and next owner to codex.
Otherwise set status to implement and next owner to cursor.
Append a Decision log entry.
EOF
)"

如果你的 Claude 权限模式无法在非交互运行中写入文件,请以只读方式完成评审,再由人工或脚本把 Review 部分写入交接文件。在一次性 worktree 中更新交接文件时,优先使用 --permission-mode acceptEdits(或设置允许列表)。不要在真实检出目录中使用 --dangerously-skip-permissions

适用于脚本运行的 Claude Code 控制(详见 CLI 参考):

  • 使用 -p / --print 进行非交互式完成
  • 使用 --max-turns 限制循环
  • 使用 --max-budget-usd 限制支出
  • 使用 --output-format json|text|stream-json 进行自动化
  • 当评审必须在范围受限的 worktree 中写入交接文件时,使用 --permission-mode acceptEdits

不要随意在生产检出中使用 --dangerously-skip-permissions

Cursor:实现阶段

Cursor CLI(agent)应优先使用交接文件中记录的同一个专用 worktree,不要在主工作目录中实现:

cd ../app-pricing-section
agent -p --trust --sandbox enabled --output-format text "$(cat <<'EOF'
Read AGENTS.md and docs/handoffs/2026-07-29-pricing-section.md.
Status must be implement or fixes.
Implement only the approved Design, respecting Review blocking resolutions.
Keep the patch small. Add or update tests from the Verification section.
Run the verification command and record the result in the handoff file.
Set status to impl-review and next owner to claude.
Do not merge.
EOF
)"

重要的 Cursor CLI 标志:

  • -p / --print,非交互模式;具备写入和 shell 工具的访问权限
  • --force / --yolo,自动批准 shell 命令,除非被拒绝;仅在一次性沙箱中使用,不要作为编写代码的默认模式
  • --sandbox enabled|disabled,设置此次运行的沙箱模式;配合 --trust 实现代码时优先使用 enabled
  • --trust,在自动化中将该工作区标记为可信
  • -w / --worktree [name],在 ~/.cursor/worktrees/<repo>/ 下的隔离检出(路径不同于手动 git worktree add;如果使用它,请更新交接的分支/工作树字段以匹配)
  • --mode plan--mode ask,规划或只读
  • --output-format text|json|stream-json

对于只做评审的 Cursor 运行,请优先使用 ask/plan 模式或明确写出“不编辑”。优先手动执行 git worktree add,让交接文件中的路径与实现者实际使用的检出目录一致。

另请参阅 Cursor 的 无头 CLI 指南,了解脚本化工作流程。

指令文件映射(避免重复事实)

文件读取者放置内容
AGENTS.mdCodex、Cursor 及其他可读取 AGENTS.md 的工具共享命令、补丁规则、多智能体协议
CLAUDE.mdClaude Code@AGENTS.md 导入 + Claude 专用说明
.cursor/rules/*.mdcCursor按 glob 限定作用域或 Cursor 专用的行为
docs/handoffs/*.md所有智能体(通过提示)每个任务的状态、设计、评审、验证

如果某条规则对所有智能体都重要,应只保留一个规范、可移植的版本,再为各工具添加必需的桥接方式。工具专用规则留在相应位置。复制同一套策略会制造多个更新点并增加漂移风险;应通过测试确认每个工具都加载了预期规则集。

完整流程示例

假设一个干净的仓库和一个空的功能模块。

1. 创建一个隔离的工作树

git fetch origin main
git worktree add -b feat/pricing-section ../app-pricing-section origin/main
cd ../app-pricing-section
mkdir -p docs/handoffs

在交接文件中预先写入目标、非目标和验证方式。如果团队希望在 PR 中看到这份约定,就提交这个初始框架。

2. Codex 设计

Codex 编写设计部分:文件、接口、测试、风险。状态变为 design-review

实际的设计输出应如下所示:

## 设计
文件:
- `src/components/marketing/PricingSection.tsx`(新增)
- `src/components/marketing/PlanCard.tsx`(复用)
- `tests/e2e/marketing-pricing.spec.ts`(新增)

边界:
- PricingSection 负责布局和套餐列表
- PlanCard 只负责展示
- CTA 链接使用现有的 `trackEvent()` + `getCtaClickProps()` 辅助函数

测试计划:
- 三种套餐均可见
- CTA href 可正确解析
- 每次点击只调用一次分析辅助函数

风险:
- 硬编码的套餐 ID 与 CMS 不同步

3. Claude 评审设计

评审提示要求区分阻塞项和非阻塞项,因此模糊的设计会被退回。示例:

阻塞项:
1. 没有说明套餐卡片纵向堆叠时的移动端布局。
2. 设计中未注明验证命令(请补充到 Design 和 Verification 部分)。
非阻塞项:
- 可考虑将套餐数据提取为常量。

只有在解决所有阻塞项并将其纳入设计后,状态才会返回到 design 或推进到 implement

4. Cursor 实现

Cursor 仅实现已批准的设计。它运行:

pnpm test:e2e --grep "pricing"

它记录结果,打开或准备一个 PR,并设置 impl-review

5. Claude 评审实现

第二次 Claude 运行应根据交接约定评审差异,而不是临时发明一套理想标准。有阻塞项时,把状态设为 fixes,负责人设为 cursor;没有阻塞项时,设为 done,等待人工合并。

6. 人工合并

受保护分支应由人负责。智能体可以快速承担初级工作,但不应担任发布经理。

不依赖平台的 Shell 编排

一个简单的序列器就足够了:

#!/usr/bin/env bash
set -euo pipefail
ROOT="${1:?worktree path}"
HANDOFF="${2:?handoff file}"
cd "$ROOT"

status() {
  # Prefer the metadata Status field near the top of the handoff file.
  awk '/^- Status:/{print $3; exit}' "$HANDOFF"
}

case "$(status)" in
  design)
    codex exec --sandbox workspace-write "Read AGENTS.md and $HANDOFF. Fill Design only, then set status=design-review and next owner=claude. Do not implement application code."
    ;;
  design-review|impl-review)
    claude -p --permission-mode acceptEdits --max-turns 30 --max-budget-usd 5 --output-format text "Review $HANDOFF per AGENTS.md. Update Review + status only. Do not implement application code."
    ;;
  implement|fixes)
    agent -p --trust --sandbox enabled --output-format text "Status must be implement or fixes. Implement or fix per $HANDOFF and AGENTS.md. Update handoff. Do not merge."
    ;;
  done|blocked-human)
    echo "No agent action for $(status)"
    ;;
  *)
    echo "Unknown status in $HANDOFF" >&2
    exit 1
    ;;
esac

这种编排刻意保持简单,因而容易调试。请尽可能严格地设置沙箱和权限模式,使其符合当前阶段的限制:设计和评审不应需要广泛的系统访问权限。

故障模式

故障发生情况解决方法
指令漂移Codex、Claude 和 Cursor 遵循不同的规则只保留一个 AGENTS.md;Claude 导入它;Cursor 规则只存放补充内容
角色混同评审者悄悄重写功能评审提示明确禁止实现;通过状态关卡约束任务归属
共享工作树存在未提交更改三个智能体相互覆盖文件每个交接 ID 使用一个独立 worktree
无限打磨智能体永远在设计上反复修改最多两个设计评审周期,之后由人类决定
空白评审”看起来没问题”但没有证据要求包含阻塞/非阻塞部分
权限绕过未监督的破坏性命令避免在真实仓库中跳过权限;使用沙箱和预算
过期交接智能体从聊天记忆中工作每次运行都要求读取交接文件
提示注入工单或文档试图覆盖策略将不受信任的 Markdown 视为数据;通过沙箱、权限拒绝和钩子强制停止。指令文件只是上下文,不是硬边界

在非交互模式下自动批准编辑或权限的标志,只适合用于沙盒和作用域严格限定的 worktree。它们不能替代生产环境的访问控制。

尚不建议自动化的事项

  • 合并到受保护的分支
  • 生产环境部署
  • 密钥轮换
  • 没有经过人工评审的计划就执行数据库 schema 迁移
  • 任何交接文件本身来自不受信任的外部提交者且未经净化的工作流

实用入门工具包

  1. 在项目根目录添加 AGENTS.md,写明命令、补丁规则和多智能体协作约定。
  2. 添加 CLAUDE.md,其中包含 @AGENTS.md
  3. 添加 docs/handoffs/_template.md
  4. 选择一个小型功能。
  5. 手动完成一轮设计 → 评审 → 实现 → 评审。
  6. 确认流程可行后,再用 shell 序列器串联各个状态。

如果同一批智能体还要从公司共享待办中领取任务,请添加 Linear MCP,并采用 Linear 多智能体项目管理 中的认领和评审状态模型。Markdown 交接文件仍可作为每张工单的技术记录。

约定就是协作标准

Codex、Claude Code 和 Cursor 在功能上已经存在重叠。当你不再抽象地要求它们“协同工作”,而是要求它们建立一份可见的契约时,它们才真正成为一个团队:

  • 共享的指令
  • 每次运行时的明确角色
  • 带状态的交接 Markdown
  • 隔离的工作树
  • 有明确边界的 CLI 调用
  • 人类负责合并和发布

这些做法足以让你用现有工具运行一支可靠的本地智能体团队,也能迅速看出团队是在临场拼凑,还是在按工程流程协作。

继续阅读

通过下一篇文章继续沿着相同的学习路径进行学习。