mcpField
C
codex-collab

codex-collab

github.com/kevin7qiAgent 工作流9854 次安装2 周前更新
代码仓库

关于 codex-collab

codex-collab 通过 Codex app-server JSON-RPC 协议连接 Claude 与 Codex。它支持通过命令行运行任务和代码审查,也支持异步对等消息,以延续对话并协调工作。

主要功能

  1. 01通过命令行执行任务与审查
  2. 02异步对等消息
  3. 03续接并查看对话线程
  4. 04配置 Codex 服务连接方式
  5. 05转发审批与咨询消息

适用场景

  1. 01让 Codex 执行编码任务
  2. 02审查拉取请求或本地改动
  3. 03从 Claude 续接 Codex 对话
  4. 04查看任务进度并接收咨询

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kevin7qi/codex-collab --skill codex-collab

安装后在 Claude Code 中输入/codex-collab确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CODE_OF_CONDUCT.md
.gitattributes
LICENSE
bun.lock
CONTRIBUTING.md
.gitignore
CLAUDE.md
README.zh-CN.md
package.json
README.md
install.ps1
install.sh
.github/workflows/
ci.yml
contracts/
contracts.test.ts
scripts/
ci-local.ts
src/
approvals.ts
broker-client.ts
approvals.test.ts
broker.test.ts
broker.ts
claude-transcript.test.ts
claude-tasks.ts
claude-tasks.test.ts
claude-transcript.ts
claude-sessions.ts
broker-server.ts
broker-server.test.ts
claude-sessions.test.ts
claude-trust.test.ts
codex-session.test.ts

详细介绍

codex-collab

codex-collab 是 Claude 和 Codex 之间的桥接工具。它通过 codex app-server JSON-RPC 协议与 Codex 通信,让你能够以结构化、事件驱动的方式使用 Codex 的能力,包括发送提示词、代码审查、使用工具和编辑文件。需要安装 bun,并确保 codex CLI 位于 PATH 中(运行 codex-collab health 进行验证)。

选择使用方式

codex-collab peer up(前台运行,只需几秒,支持幂等)会输出工作区地址 codex(myproject-a1b2c3);ListAgents 会显示该地址,以及每个进行中对话对应的一个条目。向其中任意对象发送 SendMessage,是与 Codex 对话的常规方式。需要 review、在当前轮次内获取结果(run 会阻塞运行并以状态码退出),或使用 --goal、--template 或交互式审批策略时,请改用 CLI。两种方式会生成相同的线程:通过 CLI 启动的线程之后仍可发送消息,而通过消息建立的对话也会显示在 codex-collab threads 中。

选择使用方式

通过 codex-collab CLI 驱动 Codex 交互:使用 run 执行任务,使用 review 进行代码审查,使用 --resume 继续后续对话。ask 通道用于 Codex 在任务中途联系你;next 会监听这些事件。

原生对等消息传递

向 codex(myproject-a1b2c3) 发送 SendMessage 会开始或继续一段对话。任何消息开头都可以包含由 key: value 行组成的头部块;在 Codex 看到文本前,这些行会被移除。topic: 用于命名或选择对话(后续的 topic: 会切换到该对话,或开始新对话);model:、effort: 和 timeout:(每轮的秒数;默认值为 3600 或 config timeout)用于设置对话配置,并在后续消息中从下一轮起更改配置;sandbox: 和 approval: 在对话开始时确定(approval: 只接受 auto;Codex Guardian 的交互式审批提示会发送到 CLI 客户端,无法通过消息传递处理)。解析会在遇到第一行不属于已识别键的行时停止,因此普通文本不会被误当作头部内容。

topic: auth refactor
effort: xhigh
sandbox: read-only

Review the login flow and tell me what you would change.

每段对话都会以独立条目的形式显示在 ListAgents 中,条目名称就是对话名称。回复消息的 from 地址即可继续对应的对话;如果向正在忙碌的对话发送消息,该消息会被送入正在运行的轮次,并在该轮结束时得到回复。消息传递是异步的:发送后请结束当前轮次——不要轮询、休眠或阻塞等待回复。回复会作为跨会话消息自行到达并唤醒你的会话,即使消息到达时你正忙于其他工作也是如此。若回复在当前轮次中途到达,它会并入你的上下文并显示在 Claude Code 终端中,但不会显示在会话的远程视图(手机、网页)中。通常只需转述回复的内容;只有在必须让对话记录包含原文时,才需要运行 codex-collab output <id> --last——例如面向远程读者,或接收方的 crossSessionInbound 设置拦截了回复时。

通过消息传递的对话会写入与 CLI 运行相同的运行记录,因此可以对其使用 codex-collab progress <id>、output、follow 和 kill;<id> 是对话地址中的短 ID(peer-<id>.sock),codex-collab threads 会将这些对话与 CLI 运行一同列出。超过时限的轮次会停止并报告超时,因此没有消息表示 Codex 仍在工作——使用 progress 查看它正在做什么,而不是等待。如果 Codex 在任务中途需要你作出判断,可能会发送 [consult] 消息;回复该地址即可作答。如果你不回复,Codex 会在超时后自行继续。

如果 peer up 报告消息传递不可用(Windows 或较旧版本的 Claude Code),则由 CLI 处理所有操作。

Codex 也可以直接联系你:在 Codex 会话中运行 codex-collab send,会通过 Codex 自己创建的临时对等端 codex(<thread>-<hash>-<task>) 向你的会话发送消息,每条消息对应一个临时对等端;消息的最后一行会指出 Codex 线程。使用 SendMessage 回复该地址。回复会一直为 Codex 会话保留,无论工作需要多长时间,直到任务在发送四小时后过期,因此消息中不包含截止时间。在由 codex-collab 启动的会话中,用户通过 Remote Control 回答提示所花的时间不计入这几小时;用户一旦回答,剩余回复时间至少为 60 分钟(config linger)。如果 send 在工作区中未找到 Claude 会话,它会恢复最近停止的后台会话(保留原有对话),或者启动一个新会话——在工作目录中创建 claude(<workspace>-<hash>) 会话,不包含用户的任何对话,并以 auto 权限模式运行,使其可以执行 Codex 交办的工作;默认情况下,该会话会在空闲 60 分钟后停止(config linger)。

Codex 自己的应用服务器

当 Codex 运行共享应用服务器(codex app-server daemon start,绑定到 ~/.codex/app-server-control/app-server-control.sock)时,工作区代理会连接到该服务器,而不是启动一个私有服务器。config server 用于控制此行为:auto(默认值)会在套接字有响应时连接共享服务器,否则回退到私有服务器;shared 会强制使用共享服务器,没有共享服务器时则失败;private 则绝不连接共享服务器。环境变量 CODEX_COLLAB_SERVER 可覆盖单次调用的设置;CODEX_COLLAB_SERVER_SOCKET 可覆盖控制套接字路径。设置会在代理启动时读取;运行 codex-collab peer up 会重启工作区代理,使更改生效。health 会显示代理连接的是哪台服务器。

共享服务器上的一切都处于同一个空间:你启动的轮次会实时显示在 Codex 应用或终端 UI 中,threads --discover 会标记其他客户端已打开或正在运行的线程,而 run --resume <id> 会加入此类线程。发送给正在运行轮次的线程的提示词会并入该轮次,而该轮次仍归属于另一个客户端:用户会在自己查看的位置处理审批,codex-collab 绝不会处理。如果提示词包含覆盖项(-m、-s、--approval、--dir)或 --goal,codex-collab 会拒绝,因为这些设置不能应用于他人的轮次。codex 终端 UI 会拒绝其正在监视的线程上的所有动态工具调用,这意味着轮次中途向你发出的咨询会在你回答前被拒绝;codex-collab 会将你的回答作为注入消息发送到正在运行的轮次。在空闲线程上启动的轮次则照常归你所有。没有共享服务器时,Codex 允许每个线程由一个写入方操作;如果线程被其他地方占用,请求会被拒绝并返回退出代码 8,同时列出可能占用它的进程类型,但无法判断实际是哪一种。代理释放线程后,该线程通常会在约 7 分钟后(Codex 0.153.4)解除占用:CLI 运行会在线程轮次结束时解除;消息对话则会在线程对等方退出时解除(空闲 30 分钟)。

运行命令

run 命令可以一次调用处理带提示词的任务:启动一个线程、发送提示词、等待本轮完成,然后打印输出。

# Research task
codex-collab run "what does this project do?" -s read-only --content-only

# Implementation task
codex-collab run "add input validation to the login form" --content-only

# Resume an existing thread (preserves conversation context)
codex-collab run --resume <id> "now check the error handling" --content-only

# Specify working directory (omit -d if already in the project dir)
codex-collab run "investigate the auth module" -d /path/to/project --content-only

# Long or quote-riddled prompt: pass it on stdin with `run -` (no shell-quoting hazards)
cat prompt.md | codex-collab run - --content-only

重要 — 所有 codex-collab Bash 命令的执行规则:

  • 始终使用 dangerouslyDisableSandbox=true——该工具会写入 ~/.codex-collab/,此路径不在沙盒允许列表中。

  • 对于 run 和 review:还要使用 run_in_background=true——这些命令需要运行几分钟。启动后,告知用户任务正在运行,然后结束本轮。运行期间:不要轮询、阻塞、等待,也不要启动 Agent 进行监控——任务完成后会自动通知你。如果 Codex 运行期间有其他任务完成,请照常处理,不要检查 Codex。收到通知后:根据下文的“上下文效率与结果可见性”展示结果。

  • run --detach 会在几秒内返回——请在前台运行。

  • 对正在运行的任务执行 follow 会一直阻塞,直到任务完成;follow --watch 则永不退出:两者主要供用户在自己的终端窗格中查看——不要自行运行 --watch。唯一面向 Agent 的用法:在后台 Bash 中执行 follow <id>,作为分离运行任务的完成信号(参见下文的“分离运行”)。对已完成的任务执行 follow 会在前台快速重放结果。

  • next 会阻塞,直到有内容需要响应——请在后台运行;命令退出即表示收到通知(参见下文的 next 部分)。

  • 其他所有命令(kill、threads、progress、output、peek、peer、approve、decline、answer、questions、clean、delete、config、models、templates、skill、health、version):请在前台运行——这些命令会在几秒内完成。update 也在前台运行,但 update --yes 会下载并重新构建,因此需要几分钟。

如果用户在任务进行期间询问进度,请使用 TaskOutput(block=false) 读取后台输出流,或使用 codex-collab progress <id> 仅查看日志末尾。<id> 是 codex-collab 线程的短 ID(8 位十六进制),不是 Claude Code 任务 ID——它会显示在第一行进度信息中([codex] Thread a1b2c3d4 started);使用 codex-collab threads 可查看线程列表。进度信息会实时流式输出:

[codex] Thread a1b2c3d4 started (gpt-5.6-sol, workspace-write)
[codex] Running: npm test
[codex] Edited: src/auth.ts (update)
[codex] Turn completed (2m 14s, 1 file changed)

代码审查

对于常规 PR 审查,调用 review 时不要提供提示词。 默认的 pr 模式会针对默认分支运行内置的结构化差异工作流:

# PR-style review against default branch (default — NO prompt)
codex-collab review -d /path/to/project --content-only

# Review uncommitted changes
codex-collab review --mode uncommitted -d /path/to/project --content-only

# Review a specific commit
codex-collab review --mode commit --ref abc1234 -d /path/to/project --content-only

提供提示词会切换到 custom 模式——该模式会将你的文本作为自由格式指令发送,并绕过内置的差异工作流。如果聚焦或定向审查比默认差异工作流更合适(例如,“审查其中的安全问题”“只检查错误处理”),请使用此模式。常规 PR 审查默认使用 pr 模式:

codex-collab review "Focus on security issues in auth" -d /path/to/project --content-only

审查为单次执行。 每次调用 review 都会在临时审查子线程中运行一次审查,然后退出——你无法继续该次审查,也无法向审查者提出后续问题。要跟进审查发现的问题,请在提示词中提供相关审查输出,并使用 run --resume <id>。

review --resume <id> 适用于在 Codex 已经处理过的任务线程上下文中运行审查。它会将该上下文分叉到一个临时的只读审查线程中,因此不会重新配置或修改原始任务线程。不带 --resume 的 review 会创建一个在审查结束后消失的临时线程——无先前上下文的独立审查请使用此方式。

审查模式:pr(默认)、uncommitted、commit、custom

上下文效率与结果可见性

  • 读取输出时使用 --content-only——仅显示结果文本,不显示进度行。
  • run 和 review 会在完成时打印结果;后台任务的结果会写入其输出文件。
  • 使用 Bash 而不是 Read 工具读取结果:用 cat 查看后台输出文件,或对已完成的会话运行 codex-collab output <id> --last(--last:仅显示最新一轮)。Bash 输出会显示在用户可见的对话记录中;Read 工具的内容只会留在你的上下文中,不会显示给用户。
  • 然后只补充综合分析——结果已经显示在屏幕上,因此不要重复内容:说明你核实了什么、不同意什么,以及还会补充什么。

恢复会话

连续任务涉及同一项目时,恢复现有会话。Codex 会保留对话历史,因此在 Codex 已有前次交流的上下文时,“现在修复你发现的问题”或“也检查一下测试”等后续请求会更有效。任务无关或针对不同项目时,开启新会话。

如果用户要求继续或跟进先前的任务,但你的上下文中没有会话 ID,请按以下流程查找:

  1. codex-collab threads --discover——查看最近的 5 个会话(服务器端和本地)。如果会话是在本次会话中启动的,使用 codex-collab threads --session 将列表缩小到这些会话。
  2. 如果不确定哪个会话合适,运行 codex-collab peek <id> 查看候选会话的最后一次交流。
  3. 对于特别长的会话,如果仅查看最后一次交流还不够,使用 codex-collab peek <id> --limit 100 --full 启动子 Agent,并让其总结。这样可以避免大量内容涌入你自己的上下文。
  4. 运行 codex-collab run --resume <id> "..." 继续会话。

只有在确实需要恢复会话时才运行 --discover——这是按需执行的查找操作。

--resume 标志接受两种 ID 格式:

  • --resume <short-id>——8 位十六进制短 ID(支持前缀匹配,例如 a1b2)
  • --resume <thread-id>——完整的 Codex 会话 ID(UUID,例如 019d680c-7b23-7f22-ab99-6584214a2bed)
情况操作
同一项目,新提示词codex-collab run --resume <id> "prompt"
同一项目,需要审查codex-collab review --resume <id>
不同项目开启新会话
会话卡住或出错运行 codex-collab kill <id>,然后开启新会话

如果忘记了会话 ID,使用 codex-collab threads 查找活跃会话。

分离运行与跟踪

何时分离: 默认使用后台 run——即使当前轮次结束,它也会继续运行,并免费发送完成通知。只有在以下两种情况下才使用 --detach:(1)轮次必须在当前 Claude 会话结束后继续运行——会话退出或重启时,后台任务会被终止,从而中断正在进行的轮次;而分离运行会继续执行,其结果之后可通过 output <id> --last 获取;(2)用户在自己的终端中操作,并希望轮次不受该 shell 影响。不要分离常规任务:你会失去自动完成通知(下文将介绍如何恢复)。

run --detach 会将轮次交给分离运行器,并在轮次实际开始运行后立即返回——轮次的生命周期与调用它的 shell 脱钩,因此即使 shell 或会话结束,它也不会被终止:

codex-collab run "large refactor task" --detach --approval auto
# [codex] Detached: thread a1b2c3d4 running (gpt-5.6-sol)
# [codex]   Follow:   codex-collab follow a1b2c3d4

follow [id] 是运行中线程的实时视图:它会先重放当前运行截至此时的内容,然后持续输出事件(命令及其退出代码、文件编辑、Guardian 决策、审批提示),直到运行结束,并以最终状态退出(退出代码 0 = 已完成)。如果未提供 ID,它会连接到工作区的活动运行(或重放最近一次运行),因此用户只需输入 codex-collab follow。如果运行已结束,它会重放该运行并退出,因此也可以快速查看发生了什么。

对于多轮 Claude ⇄ Codex 对话,建议用户在单独的终端窗格中保持 codex-collab follow --watch 运行——它不会在轮次之间退出:每个新运行都会自动捕获(每个运行只显示一次,按启动顺序排列,即使线程并发运行也不例外;某个运行若在显示另一个运行期间结束,则会快速重放)。它会呈现专门设计的彩色视图,不消耗模型上下文,并可通过 Ctrl-C 停止。如果有多个线程并行运行,且用户希望为每个线程使用专用窗格,可通过 follow <id> --watch 将其限定到某个线程。

分离运行的完成信号(面向 Agent): 分离父进程会在轮次开始时退出,而不是在轮次结束时退出——因此,将 run --detach 放到后台运行不会提供完成通知。需要此类通知时,可在后台 Bash 中运行 codex-collab follow <id>:它会在运行到达终止状态时立即退出(退出代码 0 = 已完成),该退出就是通知。

无需轮询即可等待问题和审批(next)

codex-collab next 会阻塞,直到工作区中出现第一个需要响应的事件——ask 通道中的问题(见下文“Ask 通道”)或待处理的交互式审批;随后会完整打印该事件(问题正文和回答命令;无需再执行 questions <id>),然后退出。退出代码:0 已交付事件 · 10 工作区空闲(没有正在运行的任务,也没有待处理事项——这是自动清理路径,因此运行结束后监听进程不会悬空)· 3 仅在明确指定 --timeout <sec> 时返回。

只要运行可能产生可回答的内容,就应启动它:任何使用 ask 通道的运行(--template collab),或可能阻塞的审批模式(on-request、on-failure、untrusted)。如果使用 --approval never 且没有 ask 模板,就不会触发任何事件——此时启动监听器是浪费(运行结束时它会退出 10)。使用 auto 时,Guardian 会自主处理审批,但问题仍会触发。

操作方式:同时启动运行任务和 next,将它们作为两个后台 Bash 命令,然后继续工作——next 退出就是通知。next 只监听一个工作区——使用与运行任务相同的 -d 启动它(直接运行 next 只会监听当前工作目录对应的工作区,且不会看到其他工作区的事件,最终会退出 10):

codex-collab next -d /path/to/project   # in background Bash; its exit = something needs you
# → Question q7f3a2c1  expires in 9m
#
#    <full question text>
#
#    Answer with: codex-collab answer q7f3a2c1 "<text>" -d '/path/to/project'

在同一条消息中作答并重新启动监听:next 退出时,并行调用 answer(或 approve)以及一个新的 next——这样每个事件只需一次唤醒和一轮交互。仅在作答后重新启动监听;next 不会记住已交付的事件,因此若问题仍待处理时就重新启动,它会立即对同一事件触发。挂起的 next 不消耗上下文,长时间运行的任务可能会多次提问——持续循环,直到运行任务完成(它退出时会通知你),或 next 退出 10。

无论运行任务由哪个进程持有,磁盘上的状态都会为这一切提供支持:运行记录(workspaces/*/runs/<runId>.json)会在阻塞期间保存 pendingQuestion 和 pendingApproval,并通过 questions[] 记录已解决事项的审计轨迹。

提问通道(Codex 提问,你来回答)

在长时间运行或自主运行期间,Codex 可以在一轮中途暂停并向你提问,而不会让整个运行赌上你的回复。使用内置的 collab 模板启动运行,即可教会它使用该通道:

codex-collab run "large refactor task…" --template collab --timeout 3600

在一轮中途,Codex 会运行 codex-collab ask "…",最多等待 10 分钟,然后以两种方式之一结束,并将结果都写入 Codex 自己的上下文:你的回答(用于引导),或友好的无回答通知(失败时继续;运行会继续,未回答的问题会记录在运行记录中)。问题关乎判断,而非许可——与审批不同,问题不会导致运行被永久阻塞。模板会声明该通道及其成本,但刻意不规定任何规则:是否提问、何时提问,由 Codex 自行决定。

下方的邮箱是 Codex 在一轮中途提问时使用的通道,也是其他一切机制失效时的回退方式。

恢复长时间的协作对话时,请重申该通道。 通道说明会随首条提示词传递,而长对话会从最早的内容开始压缩,因此请在恢复提示词中用自己的话补上一句话(例如:“协作通道仍然开放——codex-collab ask 可以联系到我。”)。Codex 只需要了解大意;具体机制可通过 codex-collab --help 重新查阅。

待回答的问题会显示在进度流中(以及 follow):

[codex] QUESTION FROM CODEX (expires in 10m)
[codex]   Migrating auth to JWT next. Drop the FK constraints or dual-write?
[codex]   Answer: codex-collab answer q7f3a2c1 "<text>" -d '/path/to/project'

按以下优先顺序处理:

  1. 根据你掌握的上下文回答——是你启动了运行,通常正好掌握问题所需的信息。问题具有中断优先级:你斟酌期间,Codex 正在消耗截止时间预算。
  2. 超出你的授权范围时,升级给用户处理——如果问题涉及偏好或产品决策,请转达问题,并将用户的回答转达回来。
  3. 明确拒绝——使用 codex-collab answer <id> "Your call — proceed and note the decision",而不是任由问题悄然过期,这样审计记录就能区分有意决定“继续”和无人及时回答。

撰写回答:传递判断,而非只给出答案。 说明选择、理由,以及 Codex 应在什么情况下改弦更张或再次提问——只回复一个“是”只能引导一次决策,有理有据的回答则能引导之后的多次决策。对于较长的回答:codex-collab answer <id> - 会从标准输入读取内容。

codex-collab questions            # list pending questions (id, age, time left)
codex-collab questions <id>       # full text of one question (list view clips long ones)
codex-collab answer <id> "text"   # answer one (prefix matching works)

审批

默认情况下,Codex 会自动批准所有操作(--approval never)。如需更严格的控制:

# Require approval for Codex-initiated actions
codex-collab run "refactor the auth module" --approval on-request --content-only

# Guardian decides each request autonomously — approve or deny, never blocking on a human
codex-collab run "refactor the auth module" --approval auto --content-only

使用 --approval auto 时,Guardian 会自行审批或拒绝每项请求——不会升级到交互流程,因此自动运行永远不会阻塞。其决策会显示在进度流中(Guardian approved (low risk): …),完整内容则保存在对话日志中;判断类决策和拒绝还会显示为 Guardian warning: … 行,其中包含风险等级、用户授权评估及理由。请注意,Guardian 会权衡该操作是否由用户提出——用户明确要求的命令具有较高的授权等级,通常会获批;Guardian 的作用是发现模型超出授权范围行事的情况。

Guardian 拒绝某项操作后,运行会继续(Agent 会另寻方法),拒绝记录会保存在本地,并附上进度提示(Override available: codex-collab approve --guardian <review-id>)。如果用户认为该操作其实没有问题:

codex-collab approve --guardian               # list pending denials
codex-collab approve --guardian <review-id>   # override one (prefix ok)

覆盖操作会在该对话中记录用户对这项具体操作的批准——不会立即执行任何操作;Agent 会在该对话的下一次运行中重试(codex-collab run --resume <short-id> "continue")。授权仅适用于该项具体操作,不适用于类似操作。

在交互式策略(on-request、on-failure、untrusted)下,审批请求会显示:

[codex] APPROVAL NEEDED
[codex]   Command: rm -rf node_modules
[codex]   Approve: codex-collab approve <approval-id>
[codex]   Decline: codex-collab decline <approval-id>

回复 approve 或 decline:

codex-collab approve <approval-id>
codex-collab decline <approval-id>

CLI 参考

run、review、--detach 和 follow 的用法示例位于上方相应章节;以下是其余命令:

codex-collab output <id> [--last]       # Full log for thread (--last: only the latest turn's output)
codex-collab progress <id>              # Recent activity (tail of log)
codex-collab threads [--all|--discover] # List threads (--discover: include server-side, top 5)
codex-collab threads --session          # Only threads the current session has run
codex-collab peek <id> [--limit N --full] # Recent conversation slice from server
codex-collab kill <id> [--clear]        # Stop a running thread; an active goal is paused first (--clear abandons it)
codex-collab delete <id>                # Archive thread (recoverable via `codex unarchive`), delete local files
codex-collab delete <id> --purge        # Permanently delete server-side instead — NOT recoverable; needs explicit user intent
codex-collab clean                      # Delete old logs, stale mappings, old question files
codex-collab approve <id> | decline <id> # Answer a pending approval

codex-collab peer [up]                  # Peer status; `peer up` starts or restarts the workspace broker (and its peer)


codex-collab peer up                    # Start or restart the workspace broker (applies a changed `config server`)


codex-collab answer <id> "text"         # Answer a pending ask-channel question (see The Ask Channel)
codex-collab questions [id]             # List pending questions (with an ID: show its full text)
codex-collab next [--timeout <sec>]     # Block until a question/approval needs you; print it in full
                                        # (exit 0 = event, 10 = workspace idle, 3 = timeout)
codex-collab ask "q" [--timeout <sec>]  # (invoked BY CODEX mid-turn, not by you) post a question, wait, fail open

codex-collab config [key] [value] [--unset] # Show/set/unset persistent defaults (model, mode, server, reasoning, sandbox, approval, timeout, memory)
codex-collab skill sync [--yes]         # Regenerate installed SKILL.md — diff first, --yes applies (see Staying Up to Date)
codex-collab update [--check|--skip|--yes] # Check for / install a newer release (see Staying Up to Date)
codex-collab models | templates | health | version

注意:jobs 仍可用作 threads 的弃用别名。

选项
标志描述
-m, --model <model>模型名称(默认值:auto — 最新可用模型)
-r, --reasoning <level>推理力度:none、minimal、low、medium、high、xhigh、max、ultra(默认值:auto — 模型所支持的最高等级,最高为 xhigh)
-s, --sandbox <mode>沙盒:read-only、workspace-write、danger-full-access(默认值:workspace-write)。review 不接受此标志(退出码为 1)——审查始终以只读模式运行,因此不要传入此标志,即使只是重述默认值也不行
-d, --dir <path>工作目录(默认值:cwd)
--resume <id>恢复现有线程(run 和 review)

| --timeout <sec> | (run、review)轮次超时时间,单位为秒(默认值:3600)。不要调低此值——Codex 任务通常需要 5–15 分钟,大型审查可能超过 20 分钟。目标处于活动状态时,超时时间适用于整个目标;到期后目标会暂停(参见 Goal Mode)。 |

| --timeout <sec> | (run、review)轮次超时时间,单位为秒(默认值:3600)。不要调低此值——Codex 任务通常需要 5–15 分钟,大型审查可能超过 20 分钟。目标处于活动状态时,超时时间适用于整个目标;到期后目标会暂停(参见 Goal Mode)。(ask)回答截止时间,默认值为 600。(next)等待时限,默认值为 none——它会一直等待,直到发生事件或工作区空闲。 |

| --approval <policy> | never、on-request、on-failure、untrusted、auto(默认值:never)——参见 Approvals。review 不接受此标志(退出码为 1):Codex 会将审查子 Agent 锁定为 never,因此此标志永远不会生效 | | --memory | 允许 Codex 的记忆功能从本次运行创建的线程中学习(默认情况下,创建的线程会被排除,以免 Agent 驱动的会话影响 Codex 对用户的认知) | | --detach | (run)轮次开始运行后立即返回——参见 Detached Runs | | -w, --watch | (follow)持续跟进每个新运行,而不是退出——参见 Detached Runs | | --mode <mode> | 审查模式:pr、uncommitted、commit、custom | | --ref <hash> | --mode commit 的提交引用 | | --base <branch> | PR 审查的基准分支(默认值:自动检测默认分支) | | --all | 列出所有线程,不限制显示数量(threads 命令) | | --discover | 向 Codex 服务查询本地索引中没有的线程(threads 命令);将其在 app-server 上标记为 open 或 active | | --json | JSON 输出(threads、peek 命令) | | --full | 在 peek 输出中包含所有项目类型(默认仅显示消息) | | --template <name> | run 命令的提示词模板(优先检查 ~/.codex-collab/templates/,然后使用内置模板) | | --goal <objective> | (run)在第一轮之前为线程创建目标(在 --resume 时替换目标)——参见 Goal Mode。仍需提供提示词:提示词是第一轮内容,目标是持续生效的目标。review 不接受此标志(退出码为 1)——审查是在临时线程上执行的单轮操作 | | --budget <tokens> | (run)--goal 的令牌预算。请设置充足的预算——用量会按每轮完整上下文计算,因此单个小轮次也可能消耗约 60k。review 不接受此标志(退出码为 1) | | --content-only | 仅输出结果文本(不输出进度行) | | --last | (output)仅输出最新一轮的内容,而非整个线程历史记录(隐含 --content-only) | | --session | (threads)仅显示当前会话运行过的线程 | | --limit <n> | 限制显示的项目数量 | | -- | 结束选项;后续参数均视为提示词文本 | | - | (run)从 stdin 读取提示词——适用于较长或引号较多的提示词 |

退出代码(run、review)

0 已完成 · 1 失败 · 3 超时(活动目标已暂停,可恢复)· 4 已中断(kill)· 5 因等待审批而终止 — 请求已作废,因此不要尝试回答;使用更长的 --timeout 或 --approval auto 恢复 · 6 broker 忙碌且没有可用回退方案 — 暂时性问题,请重试 · 7 目标因受阻或用量/预算限制而结束 — Codex 需要指引:提供指导以恢复该线程,或使用 kill --clear 放弃目标 · 8 线程正被另一个进程占用(Codex 应用、终端会话)— 等待其释放,或在那里将其关闭;不会丢失任何内容。对于后台运行的任务,应根据退出代码而不是通过扫描输出文本来进行分支处理。

目标模式

目标会让服务不断自行启动后续轮次,直到目标完成(Codex 的目标模式,即用户 ~/.codex/config.toml 中的 goals = true)。Codex 可以在某一轮中途创建目标,也可以由你显式设置 — 对于需要轮数不定的开放式目标(让 CI 通过、迁移每个调用位置)很有用;范围明确的单项任务则无需使用:

codex-collab run "survey the call sites first" --goal "migrate all call sites to the v2 API, tests green" --budget 150000 --timeout 7200
codex-collab run "survey the call sites first" --goal "migrate all call sites to the v2 API, tests green" --budget 150000 --template collab --timeout 7200

run 会跟踪整个目标:后续轮次会流入同一条运行记录和日志,follow/output/threads 都能看到这些内容,且运行的退出代码反映目标的最终状态 — 已完成(0)、受阻/受限(7)、超时并暂停(3)。实际影响:

  • 为目标运行设置较长的 --timeout(以小时计,而非分钟)— 它限制的是整个目标的时长,到期后会安全地暂停目标,而不会让它在后台无提示地继续运行。

  • 暂停的目标会在该线程上运行新一轮时恢复(run --resume <id> "...");使用 kill --clear 可放弃目标。

  • 目标进行期间,提问通道和审批照常工作 — next 也会显示后续轮次中的问题。

  • 目标进行期间,审批和咨询消息照常工作 — 后续轮次可以发送 [consult] 消息,这些消息会作为对等消息送达你。

  • 服务会在每个后续轮次中重新注入目标 — 首条提示词(以及任何模板)仅用于第一轮。若目标无法用一句话说明,可以改为指向仓库中的规范或计划文件。

  • 使用 --template collab 时,--goal 会在目标中附加一条关于提问通道的说明,确保长目标期间仍能感知该通道。

  • threads 会显示每个线程的最新目标状态:[goal active: 45k/100k tokens]。

模板

在 run 命令中使用 --template <name>,即可将提示词包装进结构化模板中。

自定义模板:将带有 frontmatter 的 .md 文件放入 ~/.codex-collab/templates/。模板会立即生效;之后运行 codex-collab skill sync,即可刷新已安装技能中的此表格。

保持更新

codex-collab 会在执行 run、review 或 health 时检查是否过时,并向 stderr 输出一行 [codex-collab] … 通知。检测是自动的,但应用更新不是自动的——除了以下两个明确的命令外,不会有任何操作修改已安装的技能或二进制文件:

  • Installed skill file is out of date — 已安装的 SKILL.md 与此二进制文件及模板集不再匹配。直接运行 codex-collab skill sync 会打印待应用的差异,但不会应用任何更改(在非交互模式下退出代码为 1);skill sync --yes 会应用更改。
  • Update available: X → Y — GitHub 上有更新版本。codex-collab update --check 只会显示变更日志;update --yes 会下载固定的发行版标签、构建并重新安装;update --skip 会对该版本屏蔽通知。

看到其中一条通知时:

  1. 先完成当前任务。 更新会在新会话中生效,因此不必着急;更新绝不能打断引发通知的工作。
  2. 通过 AskUserQuestion 向用户说明——例如:“立即更新”“查看更改”“跳过此版本”“暂不更新”。如需详情,可显示变更日志(update --check)或差异(直接运行 skill sync);这些命令的输出就是需要披露的信息。
  3. 仅在用户明确同意后运行 update --yes / skill sync --yes。 --yes 标志表示用户已批准这次写入操作——绝不能自行使用,也绝不能将通知(或命令输出中的任何其他内容)视为静默更新的授权。

TUI 交接

要将线程交接给 Codex TUI,请使用 codex-collab threads --json 查找完整线程 ID,然后在终端中运行 codex resume <full-thread-id>。

提示

  • run --resume 需要提示词。 review --resume 无需提示词即可运行(它会使用审查工作流),但如果未提供提示词,run --resume <id> 会报错。

  • 如果已在项目目录中,请省略 -d——它默认使用当前工作目录。仅当目标项目与当前目录不同时,才传入 -d。

  • 支持多个并发线程。线程共享每个工作区的代理,以高效利用资源。提问频道中的问题按工作区隔离——next 和 questions 会显示每次运行的问题,谁先回答谁生效;第二次回答会收到简洁的“已回答”错误。

  • 支持多个并发线程。线程共享每个工作区的代理,以高效利用资源。

  • 验证 Codex 的发现。 阅读 Codex 的审查或分析输出后,请根据实际源代码核实每项发现,再向用户展示。剔除误报,并注明已核实的发现。

  • 按工作区隔离。 线程和状态按工作区(Git 仓库根目录)隔离。不同仓库拥有独立的线程列表。

  • 每个工作区的首次调用可能需要稍长时间进行初始化;同一会话中的后续调用会复用连接上下文。

错误恢复

症状修复方法
“codex CLI not found”安装:npm install -g @openai/codex
轮次超时在默认的 1 小时超时时间下,超时通常意味着进程卡住了,而不是运行缓慢。使用 follow 实时查看,或使用 output 检查日志。对于确实较大的任务,可以进一步提高 --timeout。
未找到线程使用 codex-collab threads 列出活动线程
进程在任务中途崩溃使用 --resume <id> 恢复——线程状态会持久保存
审批请求一直挂起运行 codex-collab approve <id> 或 codex-collab decline <id>

| 对话的运行已完成,但没有收到回复 | Claude Code 会暂存权限类别与当前会话不同的对等消息(显示 Held peer message 通知)——用户可以放行该消息,也可以在 Claude Code 设置中将 crossSessionInbound 设为 accept。与此同时,可使用 codex-collab output <id> --last 查看回复。 |

| 问题在回答前已过期 | Codex 已根据自身判断继续执行——决定记录在运行输出和运行记录的 questions[] 中。如需现在调整方向,请在运行结束后执行 run --resume <id>。 |

评论

支持 Markdown