Codex 工作流
在本地 Codex 应用服务器 上运行 Claude Code 动态工作流脚本。
创作界面与原生动态工作流完全相同 — export const meta 加上使用 agent()、parallel()、pipeline()、phase()、
log()、args、budget、workflow() 的主体 — 但每个 agent() 调用作为
一个 Codex (GPT) 线程+轮次运行,而不是 Claude 子智能体。
仅限手动调用。 Claude 不会自动触发此技能
(disable-model-invocation: true);仅在用户输入
/codex-workflows 或明确请求 Codex 工作流时运行。调用后,遵循
以下循环 — 工作在 Codex/GPT 智能体上运行。如果用户实际上想要
Claude 子智能体,请说明并指向原生工作流工具。
下面的 RUNNER 表示捆绑的 runner 目录:runner/ 相对于此技能的
基础目录(技能加载时显示)。对于经典的 skills-dir 安装,
即 ~/.claude/skills/codex-workflows/runner — 下面示例中的实际路径
假定如此;如果此技能是作为插件安装的,则替换您的基础目录。它是无依赖的 Node ≥ 18。
默认粗略意图模式
一两句粗略描述就足够了。 您无需向此技能提供完全工程化的
规范 — 描述您想要什么(例如 /codex-workflows 在我运行之前强化这个目标),技能会自行将其编译为可操作的工作集:
它对工作进行分类,选择最小可行规模、原型和
工作集模式,构建任务契约,组合阶段,分配角色,应用
质量/认知标准,创作脚本,选择安全的运行设置,然后
运行 — 在过程中陈述其假设。
此模式下的操作规则:
- 粗略意图即契约。对任何未指定的内容做出合理假设并 陈述它们;不要用后续问题询问用户。
- 选择最小有用的工作集,而不是最大可能的(见 反过度构建规则)。
- 不要发出一个巨大的提示让用户粘贴回来。 编译并继续
创作/运行。(唯一的例外是
prompt-only模式 — 见 模式检测。) - 这取代了任何外部的“元提示”:扩展现在发生在技能 内部。下面将粗略意图编译为工作流的整个部分就是那个 编译器。
默认执行检查清单
每次运行,按顺序(以下各部分展开每个步骤):
- 预检 Codex 一次 (
handshake.js);注意最新的前沿模型。 - 编译 粗略意图:对工作进行分类 → 规模 → 原型 → 模式 (命名它防止的故障模式)→ 任务契约。陈述您的假设。
- 创作 脚本到仓库 (
./<name>.workflow.js)。 - 设置:
--frontier· 按规模的 effort(quick_harness用--effort medium,standard/deep用--auto-effort)·--sandbox read-only除非必须写入 · 有边界的--budget· 严格模式(additionalProperties:false)。 - 评估大小 — 对于任何昂贵或复杂的工作流,先运行
--plan。 - 运行 在 Codex runner 上(绝不能使用原生
Workflow工具)。 - 展示 — 内联 ASCII 地图 +
summarize-run要点;引用脚本、 日志、查看器、报告和运行摘要路径(见 输出行为)。
模式检测
从用户的措辞中读取模式,然后相应行事:
| 模式 | 触发条件 | 行为 |
|---|---|---|
| 默认(粗略意图) | 1–2 句粗略描述 | 内部编译 → 创作 → 运行。陈述假设。 |
--multi(集群) | --multi 标志,或“集群”/“同时运行多个工作流” | 编译一个集群计划(2–4 个并发的变体工作流,相似和/或多样),在后台启动它们,并监督:轮询 fleet status,回答关口,引导,终止,分支,然后综合。见 集群模式。 |
prompt-only | “只给提示”/“只给调用”/“不要运行” | 发出一个完整的 /codex-workflows 调用/规范(下面的 A–L 结构)并停止 — 不要创作或运行。 |
write-only | “编写但不运行”/“只创作” | 创作工作流脚本,打印其路径,在运行前停止。 |
run-existing | 给出了脚本路径或已保存的工作流名称 | 跳过编译;通过 runner 运行该脚本/名称。 |
quick | “快速”/“小”/“便宜” | 偏向 quick_harness(2–5 个智能体)。 |
deep | “深入”/“彻底”/“详尽” | 允许更大/deep_harness;证明大小合理。 |
no-write | “不要写文件”/“只告诉我” | 仅返回最终 JSON/Markdown;无报告/源文件;--sandbox read-only。 |
两条优先规则:如果用户给出脚本路径或已保存名称,运行它 (不要重新编译)。如果用户给出详细规范,按书面方式执行但仍 应用下面的安全性和运行默认值。否则就是粗略意图 → 编译。
在 prompt-only 模式下,您发出的调用遵循技能内部构建的相同 A–L 结构:A 名称 · B 目的 · C 任务契约 · D
输入/上下文重建 · E 阶段 · F 角色 · G 反包装器
标准 · H 输出 · I 运行设置 · J 安全/认知 · K
最终响应格式 · L 产品化。然后停止 — 不要运行。
循环
在默认粗略意图模式下,静默 执行步骤 1–2,并在创作前陈述您的假设。下面的机制 — 握手、运行命令、内联地图 — 不变;步骤 2 和 4 是粗略意图被编译的地方。
- 预检 — 每会话一次,或每当运行无法连接时,确认 Codex 可访问且已认证:
node ~/.claude/skills/codex-workflows/runner/test/handshake.js
它打印 state: ready 和可用的模型。如果失败,告诉用户
运行 codex login(runner 需要在 PATH 上有一个已登录的 codex CLI)。
从该列表中,注意最新的前沿模型 — 最新的旗舰
通用模型(不是 -mini/-spark 变体;model/list 将其标记为
isDefault 并且其描述称其为最强的)。GPT-5.6 Codex
系列是 Sol(旗舰)、Terra(平衡)和 Luna(高效);目前
前沿是 gpt-5.6-sol。运行中的每个智能体都使用它(见 模型)。
-
编译 粗略意图为工作流(见 将粗略意图编译为工作流):对工作进行分类 → 选择规模 → 选择原型 → 选择模式并命名它防止的故障模式 → 构建任务契约 → 组合阶段 → 分配角色 → 应用标准。在创作前向用户陈述得出的假设。
-
创作 一个来自该编译的工作流脚本(见 创作)。将其写入 用户的项目中,以便他们可以读取和重新运行 —
./<name>.workflow.js,或 用于可重用工作集的workflows/<name>.workflow.js/examples/harness-zoo/<name>/。脚本是纯 JavaScript,仅使用注入的全局变量(无导入)。 -
选择运行设置(见 运行默认值):
--frontier,所选规模对应的 effort 标志(标准/深度工作集用--auto-effort,快速工作集用--effort medium),只读沙箱除非运行必须写入,以及有边界的--budget。对于昂贵或复杂的工作流,先--plan— 一个无 token 的试运行,计算每个阶段/effort 的智能体数量并估算--budget。 -
运行 — 始终传递
--frontier,以及所选规模对应的 effort 标志:标准/深度工作集用--auto-effort(它将每个智能体的 effort 调整为其层的并行宽度,因此孤立的综合/判断关口思考最努力),或快速工作集用--effort medium(见 Effort)。--frontier将每个智能体固定到最新的前沿模型(见 模型):
node ~/.claude/skills/codex-workflows/runner/bin/run-workflow.js <script.js> --frontier --auto-effort [其他标志]
# quick_harness: … <script.js> --frontier --effort medium [其他标志]
进度流式传输到 stderr;工作流的返回值作为 JSON 打印到
stdout。捕获 stdout 以获取结果(大时用 … 1>/tmp/result.json)。
要实时观看运行,添加 --tui(新终端窗口中的实时 ASCII 地图)和/或 --gui(浏览器中的实时 HTML 查看器)— 见 运行 → 实时监控。
- 展示 结果给用户(见 输出行为)— 总结它, 提及脚本路径,并在此对话中内联渲染运行的 ASCII 地图,以便他们原生地看到执行图(无需打开窗口):
node ~/.claude/skills/codex-workflows/runner/bin/map-run.js --journal <journal> --no-color
(<journal> 是运行记录为 ✎ journal: … 的路径,默认为
.workflow-journal/<name>.jsonl。) 将该输出粘贴到您的回复中,放在
```text 块内 — 它是编排器 → 阶段层 →
智能体网格 → 结果 DAG,附带每个智能体的模型/effort/tokens/时间和每个智能体的一行结果片段。始终使用 --no-color 内联(原始 ANSI 会在聊天中渲染为垃圾)。对于实时的、会话内的监控,使用 run_in_background 运行工作流,并在其进行中重新渲染此快照几次(运行中的智能体显示为 ⠋ … running…);为了平滑的实时窗口,请添加 --tui/--gui(见 运行 → 实时监控)。
运行结束时还会打印一行成本/可靠性摘要。要获得更详细的分解 — 按阶段的 tokens、最昂贵/最慢的智能体以及任何红旗(大量 null、未分阶段的大量扇出、默认 effort 成本)— 在日志上运行 summarize-run 并将要点折叠到您的回复中(见 总结运行)。
在使用此技能时,不要调用原生 Workflow 工具。 通过上述 CLI 创作脚本并运行它正是将工作路由到 Codex 的方式;调用原生工具将改为生成 Claude 子智能体。
集群模式 (--multi):启动、监督、引导
当用户传递 --multi(或要求集群 / 同时运行多个工作流)时,
您是 N 个并发运行的操作员 — 不是发射后不管的启动器。您编译一个集群计划,在后台启动每个变体,
然后运行监督循环:轮询状态、回答关口、引导偏离的 worker、
终止死路、分支有希望的线索,并在最后综合。人类设置一次策略
(目标、总预算、风险承受度);您 做出运行中途的判断,
这些判断是变体无法自行做出的。
1 · 编译集群计划
将意图分解为 2–4 个变体 并在启动前陈述计划(变体、每个变体押注什么、每次运行的预算)。两个轴,自由混合:
- 相似 — 相同工作集,不同切片:通过
--args将大输入分割到运行中,或者从不同的起始假设/种子攻击同一问题。一个脚本 + 每次运行--args+--run-id(这样日志不会冲突),或 N 个脚本副本。 - 多样 — 不同工作集形状押注于任务的不同理论:例如
loop_until_dry漏洞狩猎 vsadversarial_verification扫荡 vssessionful_controller_loop调查,都针对同一目标。每个变体一个脚本。
将用户的总体预算分配给变体(状态显示每次运行相对于其上限的消耗)。使用现有的 GPT-5.5 测量值合理调整读取密集型扇出的大小: 工作为读取仓库/语料库的智能体花费约 400–600k tokens,无论其 effort 层级如何 — 输入占主导地位,因此 --effort low 不会使扫荡变得便宜,而 --plan 的按 effort 估计低估了它(测量值:四次“低”扫荡 = 2.1M,每次 525k,而计划估计为每个智能体 150k)。在 xhigh 下 — --auto-effort 为每个 sessionful worker 的轮次(宽度 1)提供 — 一个读取轮次运行约 ~1–1.5M(测量值:一个巡视 worker 的第一轮 + 一次引导触发了 2.5M 上限)。预算 ≈ 读者 × 500k + xhigh 读取轮次 × 1.2M + 非读者 × 计划估计,留有空间。触发的上限是可恢复的(--resume 免费重放前缀),但成本为一次监督往返。反过度构建规则也适用于集群:2 个良好区分的变体优于 4 个冗余的变体 — 每个变体必须押注于其他变体没有的东西。
2 · 为监督而创作
每个变体都获得监督者检查点 — 在外部判断可以重定向运行的节点处的 human() 关口:
const directive = await human(
`第 ${round} 轮发现:${summary}。下一轮指示?`,
{ id: `round${round}`, choices: ["continue", "stop"], default: "continue", timeoutMs: 240_000 })
if (directive === "stop") break
if (directive !== "continue") await worker.steer(directive) // 自由文本 = 指示
这是引导通道:自由文本答案就是指示,脚本应用它(session.steer(...),重新瞄准下一轮,缩小范围)。将关口放在轮次之间、昂贵阶段之前以及不确定性之上。默认值必须安全 — 未回答的关口超时到其默认值,运行以放手方式降级,永远不会挂起。(这利用日志化的 human() 通道,因此 --resume 重放答案而不是重新询问。)
3 · 启动 — 每个集群一个目录,每次运行在后台
变体共享一个目录(这就是 fleet status <dir> 监督的内容)。使用 run_in_background 启动每个变体,始终使用 --interactive(它无头启用答案通道):
node ~/.claude/skills/codex-workflows/runner/bin/run-workflow.js hunt-orm.workflow.js \
--frontier --auto-effort --interactive --budget 1500000 1>hunt-orm.result.json
# 相同脚本,不同切片 → 使用 --run-id 隔离:
node …/run-workflow.js hunt.workflow.js --args '{"slice":"auth"}' --run-id auth --interactive …
4 · 监督 — 循环
在其他工作之间轮询集群摘要(并在关口可能挂起时及时…
—
[为翻译而截断]