17-Codex 高级工作流:Subagent、Worktree、多模型路由

Codex 高级工作流:Subagent、Worktree、多模型路由

上篇你学会了 Codex 的基础用法。这篇讲高级工作流------让 Codex 同时处理多个任务、在隔离环境中安全执行、以及把 Codex 和 Claude Code 桥接起来协同工作。


Subagent:并行任务分解

原理

Codex 的 Subagent 机制和 oh-my-claudecode 的 Team Mode 类似,但更轻量:

复制代码
主 Codex 实例(Orchestrator)
    │
    ├── Subagent 1 → 独立任务 A → 独立 Worktree → 独立上下文
    ├── Subagent 2 → 独立任务 B → 独立 Worktree → 独立上下文
    └── Subagent 3 → 独立任务 C → 独立 Worktree → 独立上下文

每个 Subagent:
  - 有自己的上下文窗口(互不污染)
  - 在自己的 Git Worktree 中工作
  - 完成后结果 merge 回主分支
  - 主 Codex 负责汇总和冲突解决

实战:用 Subagent 重构一个模块

复制代码
> /goal 重构用户模块,同时做三件事:
  1. 数据库层从 SQLAlchemy 同步改异步
  2. API 层加上统一的错误处理和分页
  3. 写完整的集成测试

Codex 自动拆分:

Orchestrator: 分析任务,发现三个子任务互相独立
  ├── Subagent 1: 负责数据库层改造(models.py, database.py)
  │   模型: gpt-5.3-codex
  │   隔离: Worktree /tmp/codex-subagent-1
  │
  ├── Subagent 2: 负责 API 层改造(routes.py, middleware.py)
  │   模型: gpt-5.3-codex
  │   隔离: Worktree /tmp/codex-subagent-2
  │
  └── Subagent 3: 负责测试编写(tests/)
      模型: codex-mini(测试模板化程度高,用便宜模型即可)
      隔离: Worktree /tmp/codex-subagent-3

执行过程:
  - 三个 Subagent 同时开始
  - Subagent 1 改了 models.py → API 的字段名变了
  - Orchestrator 检测到冲突 → 通知 Subagent 2 更新字段引用
  - Subagent 2 自动修复 → 继续
  - Subagent 3 在另外两个完成后,基于最新代码跑测试

最终:
  三个 Worktree 的改动合并到主分支
  一个 PR 包含全部改动

什么时候用 Subagent

复制代码
✅ 用 Subagent:
  - 3+ 个独立任务可以并行
  - 不同任务互不依赖(或依赖关系明确)
  - 总改动文件 > 10 个(一个人做太久)

❌ 不用 Subagent:
  - 只有一个任务(用普通模式)
  - 任务之间有强依赖(串行更可控)
  - 改动文件 < 5 个(Subagent 的 overhead 不值得)

Git Worktree 隔离并发

为什么需要 Worktree

Codex 和 Claude Code 都有一个共同问题:多个任务同时执行时,文件冲突。

复制代码
没有 Worktree:
  Agent 1 改 models.py → Agent 2 同时改 models.py → 冲突
  → 后保存的覆盖先保存的
  → 或者 git merge 时产生冲突,需要手动解决

有 Worktree:
  Agent 1 在 Worktree A 中改 → 改完 → merge 回主分支
  Agent 2 在 Worktree B 中改 → 改完 → merge 回主分支
  → 有冲突时 git 正常提示,Agent 自己解决
  → 不会互相覆盖

Codex 的 Worktree 机制

bash 复制代码
# Codex 创建 Subagent 时自动创建 Worktree
# 你也可以手动创建工作隔离的任务

# 列出当前活跃的 Worktree
> /worktree list

# 输出:
# main           /home/user/project          (主工作区)
# subagent-1     /tmp/codex-wt-abc123        (Subagent 1: 数据库改造)
# subagent-2     /tmp/codex-wt-def456        (Subagent 2: API 改造)

每个 Worktree 互不影响,Subagent 之间的文件修改完全隔离。这是多 Agent 并行安全性的基础设施。


/goal 长任务持久化

/goal 是 Codex 最强大的功能之一:你下一个目标,关掉电脑,第二天回来看结果。

/goal 的生命周期

复制代码
1. 你: > /goal 重构整个支付模块,支持微信支付 + 支付宝
2. Codex:
   [生成计划]
   - 预计 45 分钟
   - 拆分为 12 个子任务
   - 3 个 Subagent 并行
   
   开始执行...
   
3. 你关了电脑去开会

4. Codex 在后台(或下次启动时继续):
   ✅ 1/12: 创建支付接口抽象层
   ✅ 2/12: 实现微信支付
   ⚠️ 3/12: 实现支付宝 → 遇到沙箱环境问题,跳过
   ✅ 4/12: 更新订单状态机
   ...
   ❌ 12/12: E2E 测试 → 依赖沙箱环境

5. 你回来:
   > /status
   
   Codex 输出:
   ┌─────────────────────────────────────────┐
   │ /goal: 重构支付模块                       │
   │ 进度: 11/12 ✅ | 1 个阻塞 ❌              │
   │ 耗时: 38 分钟                             │
   │ 已完成: 微信支付、订单状态机、退款流程...    │
   │ 阻塞: 支付宝集成 → 需要沙箱环境凭证        │
   │ 下一步: 提供支付宝沙箱 AppID 后继续         │
   └─────────────────────────────────────────┘

/goal 的持久化能力

/goal 执行中断后能自动恢复,因为它把执行状态持久化到了 .codex/goals/ 目录:

复制代码
.codex/goals/
├── goal-20260604-refactor-payment/
│   ├── plan.md          # 执行计划
│   ├── progress.json    # 进度跟踪(哪些完成了、哪些失败了)
│   ├── context.tar.gz   # 上下文快照(恢复时用)
│   └── results/         # 中间产出
└── ...

/goal 的最佳用法

复制代码
✅ 适合 /goal:
  - 明确、可量化结果的任务("重构 X 模块"、"给所有 API 加测试")
  - 预计时间 > 30 分钟
  - 你不需要实时参与决策
  - 可以在晚上或周末跑

❌ 不适合 /goal:
  - 需要你频繁决策的任务("设计一个新的架构")
  - 创造性的工作("给首页设计一个新的交互")
  - 预计时间 < 10 分钟(overhead 不值得)

codex-plugin-cc:从 Claude Code 调用 Codex

这是社区开发的一个桥接工具,让 Claude Code 能"雇佣"Codex 做子任务:

复制代码
codex-plugin-cc 的定位:

你不是在 Claude Code 和 Codex 之间二选一。
你是用 Claude Code 做主控,
把适合 Codex 的任务"外包"给它。

安装:
  claude plugin install @community/codex-plugin-cc

使用:
  在 Claude Code 中:
  👤 "/codex-plan 设计用户权限系统的架构"
  
  Claude Code 调用 Codex 的 /plan 生成计划
  → Codex 返回计划
  → Claude Code 把计划展示给你
  → 你确认后,Claude Code 自己执行

协同流水线

复制代码
┌─────────────────────────────────────────────────────┐
│  Claude Code(主控)                                  │
│                                                     │
│  收到需求:"重构用户认证系统"                           │
│      │                                               │
│      ├─→ 调用 Codex /plan                            │
│      │   生成详细执行计划(8 个步骤)                   │
│      │                                               │
│      ├─→ 步骤 1-3:简单 CRUD 重构                     │
│      │   Claude Code 自己快速完成                      │
│      │                                               │
│      ├─→ 步骤 4-6:复杂的安全逻辑                      │
│      │   调用 Codex /goal 外包                        │
│      │   "这 3 步涉及 OAuth2.0 流程,让 Codex 来做"    │
│      │                                               │
│      ├─→ 步骤 7-8:测试 + 文档                        │
│      │   Claude Code + Skills 完成                    │
│      │                                               │
│      └─→ /review 最终审查全部改动                      │
│                                                     │
└─────────────────────────────────────────────────────┘

什么时候该外包给 Codex

复制代码
外包给 Codex 的信号:
  ├── 任务涉及复杂的条件分支和边界情况
  ├── 需要严格的"先计划后执行"流程
  ├── 你担心 Claude Code "太激进"会搞砸
  └── 长任务,想挂后台不管

留在 Claude Code 的信号:
  ├── 快速迭代改 UI(描述→生成→看→改循环)
  ├── 需要 Skills 加持的任务(code-review、deploy)
  └── 任务很简单,外包的 overhead 不值得

Read → Plan → Edit → Test → Review 循环

Codex 内置了一套完整的开发循环。理解这个循环是高效使用 Codex 的关键:

复制代码
┌──────────────────────────────────────────────────┐
│                                                  │
│  Read ──→ Plan ──→ Edit ──→ Test ──→ Review     │
│    ↑                                      │       │
│    └──────────── 发现问题,循环 ───────────┘       │
│                                                  │
└──────────────────────────────────────────────────┘

Read:
  不是"等你说需求",而是 Codex 主动读代码库。
  理解现有模式、依赖关系、代码风格。
  Codex 读代码的时间通常占整个任务的 20-30%。
  这不是浪费------它是在"理解上下文"。

Plan:
  /plan 或 /goal 内置的计划阶段。
  输出:执行步骤 + 影响范围 + 风险点 + 预估。
  计划阶段是 Codex "先想再做"哲学的集中体现。

Edit:
  按计划执行代码改动。
  每次只改计划中当前步骤的内容(不会跳步或跨步)。
  编辑过程中如果发现计划有问题,暂停并询问。

Test:
  每完成一步,自动运行相关测试。
  如果测试失败 → 自动修复 → 再测 → 直到通过(最多 3 次)。
  如果没有测试 → 提示"这一步缺少测试覆盖,要不要我写"。

Review:
  全部步骤完成后,自动 /review 审查所有改动。
  输出审查报告。
  如果有问题 → 回到 Edit 修复。

把这个循环变成你的工作习惯

复制代码
你不需要记住步骤。只需要做三件事:

1. 开始时:给一个清晰的描述
   → Codex 自动走 Read → Plan

2. 执行中:确认计划,让它跑
   → Codex 自动走 Edit → Test

3. 结束时:看一眼 Review 报告
   → Codex 自动走 Review

你的角色从"程序员"变成"验收者"。

任务复杂度渐进策略

这是使用 Codex 最重要的心智模型:

复制代码
不要一次给一个"大任务"。
把大任务拆成小任务,从简单到复杂渐进。

❌ 错误姿势:
  > 帮我重构整个后端,从 REST 改成 GraphQL
  → 涉及 50+ 文件
  → /plan 生成的计划会让你眼花缭乱
  → 执行中会有大量你没想到的问题
  → 最后发现改动的范围远远超出预期

✅ 正确姿势:
  第一步:
  > 分析一下从 REST 到 GraphQL 需要改哪些文件,按影响范围排序
  
  第二步:
  > 好,先做最小影响的:给 schema.py 加上 GraphQL types 定义
  
  第三步:
  > 验证通过。把 users 模块的 REST 接口改成 GraphQL resolvers
  
  第四步:
  > 验证通过。继续 orders 模块...

复杂度阶梯

复制代码
复杂度 1:单文件修改(改一个函数、加一个接口)
  → 直接用 Claude Code 或 Codex 普通模式
  → 不需要 /plan

复杂度 2:2-5 个文件联动(加一个新功能需要改几个文件)
  → Codex /plan → 确认 → 执行
  → 或 Claude Code 分步描述

复杂度 3:5-15 个文件,涉及架构调整
  → Codex /goal
  → 拆成 3-5 个 Subagent 并行

复杂度 4:15+ 个文件,跨模块重构
  → Codex /goal + 分阶段执行
  → 每个阶段验收后再下一阶段
  → 不要想一次全做完

Token 成本优化

Codex 的成本构成

复制代码
每次会话的成本 = 输入 Token + 输出 Token

输入(最花钱):
  ├── 系统提示词(Codex 内置,~3000 Token)------ 固定开销
  ├── AGENTS.md ------ 建议 < 2000 Token
  ├── MCP Tool 描述 ------ 启用 Tool Search 后降到 ~500 Token
  ├── 会话上下文 ------ 你说了什么 + AI 读了什么文件
  └── 计划文档 ------ (/goal 的 plan.md 会持续在上下文中)

输出(相对便宜):
  ├── AI 生成的代码
  └── AI 的解释和回复

省钱 4 招

bash 复制代码
# 1. 任务分级用不同模型
简单任务 → codex-mini(成本是 gpt-5.5 的 1/20)
日常编码 → gpt-5.3-codex
复杂架构 → gpt-5.5

# 2. 一个任务一个会话,做完就 /clear
# 不要让多个任务的上下文混在一起,每个都占着 Token

# 3. AGENTS.md 写短一点
# 不是写得越多越好。2000 Token 以内的 AGENTS.md 效果最好

# 4. 用 /compact 或 /clear 清理上下文
# 上下文超过 80% 就要清,别等到满了再处理

Codex 两部曲总结

复制代码
上篇(第 16 篇):Codex 基础
  → 安装 + /init + 核心命令 + Permission Profiles
  → 模型选择 + Appshots + 与 Claude Code 体验对比

下篇(本篇):Codex 高级工作流
  → Subagent 并行 + Worktree 隔离
  → /goal 长任务 + codex-plugin-cc 桥接
  → Read→Plan→Edit→Test→Review 循环
  → 复杂度渐进 + Token 成本优化

延伸阅读

相关推荐
米小虾15 分钟前
AI Agent 安全实战指南:当智能体开始"不听话",开发者该如何应对?
人工智能·安全·agent
垚森3 小时前
AI时代,让曾经的遗憾变成现实
ai
Databend4 小时前
2KB histogram 背后:Databend 如何低成本追踪长尾延迟
大数据·数据分析·agent
笃行3504 小时前
用 CodeBuddy “复活“《山海经》:异兽图鉴网站的诞生
agent
leonshi5 小时前
使用embedchain快速建立rag知识库,本地大模型
ai·rag·ollama
镜舟科技5 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
轻口味6 小时前
别被模型宣传骗了,真实 Agent 任务一跑就知道
agent·ai编程
小星AI6 小时前
Kimi Code CLI 超详细教程,附源码
人工智能·agent
Databend6 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent