关于 codex-worker
codex-worker 是用于编排多个 Codex CLI Agent 并行工作的技能,每个 Agent 在独立的 Git worktree 和 tmux 会话中运行。它面向可拆分为独立子任务的工作,并提供监控、交互和清理工作进程的命令。
主要功能
- 01并行运行 Codex CLI Agent
- 02为每个 Agent 创建独立 Git worktree
- 03管理 tmux 会话
- 04交互式发送提示词并查看输出
- 05清理 Agent 与 worktree
适用场景
- 01分别分诊多个问题
- 02并行重构多个模块
- 03修复多个软件包中的 lint 错误
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ moonshotai/ kimi-cli --skill codex-worker安装后在 Claude Code 中输入/codex-worker确认已加载。
详细介绍
codex-worker
协调多个并行运行的 Codex CLI(codex)Agent,每个 Agent 都在自己的 git 工作树和 tmux 会话中运行。
适用场景: 只要发现某项任务可以拆分为互相独立的子任务,就应使用并行处理,不要等用户提出要求。例如:
- 用户说“整理过去 7 天内更新的所有未解决 issue” → 获取 issue 列表,然后为每个 issue 启动一个 codex worker。
- 用户说“重构这 5 个模块” → 每个模块启动一个 worker。
- 用户说“修复各个包中的 lint 错误” → 每个包启动一个 worker。
替代 Task 工具: 当环境中有 codex 和 tmux 时,使用 codex worker 代替内置的 Task(子 Agent)工具。Codex worker 是功能完备的 Agent,拥有自己的文件系统访问权限、shell 和隔离的工作树,能力远胜子 Agent。
预检
command -v codex && codex login status && command -v tmux
这三项都必须成功。项目必须是 git 仓库。
命名约定
Git 分支和工作树目录共用一个任务名称:
<type>-<issue number (optional)>-<short description>
tmux 会话会添加 codex-worker- 前缀,便于筛选 worker:
| 格式 | 示例 | |
|---|---|---|
| 任务名称 | <type>-<number>-<desc> | issue-836-prompt-dollar-sign |
| Git 分支 | 与任务名称相同 | issue-836-prompt-dollar-sign |
| 工作树目录 | <project>.worktrees/<task> | kimi-cli.worktrees/issue-836-prompt-dollar-sign |
| tmux 会话 | codex-worker-<task> | codex-worker-issue-836-prompt-dollar-sign |
更多示例:
issue-518-mcp-config-isolationfix-share-dir-skills-pathfeat-ask-user-toolrefactor-jinja-templates
仅列出 codex worker:tmux ls | grep ^codex-worker-
用法
所有任务都优先使用 tmux + 交互式 codex。它支持多轮对话,用户可以通过 tmux attach 检查或介入,你也可以从外部发送后续提示词。
启动 worker
NAME="issue-836-prompt-dollar-sign" # task name
SESSION="codex-worker-$NAME" # tmux session name
PROJECT_DIR="$(pwd)"
WORKTREE_DIR="$PROJECT_DIR.worktrees"
# 1. Create worktree (skip if exists)
git worktree add "$WORKTREE_DIR/$NAME" -b "$NAME" main 2>/dev/null
# 2. Launch interactive codex inside tmux
tmux new-session -d -s "$SESSION" -x 200 -y 50 \
"cd $WORKTREE_DIR/$NAME && codex --dangerously-bypass-approvals-and-sandbox"
发送提示词
Codex TUI 需要一些时间初始化,之后才能接收输入。
启动会话后,至少等待 5 秒再发送提示词。随后发送文本并按下 Enter。如果提示词停留在输入框中而没有提交,再按一次 Enter。
sleep 5 # wait for Codex TUI to initialize
tmux send-keys -t "$SESSION" "Your prompt here" Enter
# If it doesn't submit, send another Enter:
# tmux send-keys -t "$SESSION" Enter
查看输出
tmux capture-pane -t "$SESSION" -p | tail -30
连接并进行交互
tmux attach -t "$SESSION"
并行分发
TASKS=(
"issue-518-mcp-config-isolation|Triage #518: MCP config 被子 agent 继承的隔离问题。分析根因,给出修复方案。"
"issue-836-prompt-dollar-sign|Triage #836: prompt 包含 $ 时启动静默失败。分析根因,给出修复方案。"
)
PROJECT_DIR="$(pwd)"
WORKTREE_DIR="$PROJECT_DIR.worktrees"
for entry in "${TASKS[@]}"; do
NAME="${entry%%|*}"
PROMPT="${entry#*|}"
SESSION="codex-worker-$NAME"
git worktree add "$WORKTREE_DIR/$NAME" -b "$NAME" main 2>/dev/null
tmux new-session -d -s "$SESSION" -x 200 -y 50 \
"cd $WORKTREE_DIR/$NAME && codex --dangerously-bypass-approvals-and-sandbox"
sleep 5 # wait for Codex TUI to fully initialize
tmux send-keys -t "$SESSION" "$PROMPT" Enter
done
后备方案:codex exec
仅在明确不需要后续交互时才使用 codex exec(例如 CI、使用 -o 输出的纯分析任务)。它不支持多轮对话。
codex exec --dangerously-bypass-approvals-and-sandbox \
-o "/tmp/$NAME-result.md" \
"Your prompt here"
生命周期管理
列出活跃的 worker:
tmux ls | grep ^codex-worker-
终止已完成的 worker:
tmux kill-session -t "codex-worker-$NAME"
合并后清理工作树:
tmux kill-session -t "codex-worker-$NAME" 2>/dev/null
git worktree remove "$WORKTREE_DIR/$NAME"
git branch -d "$NAME"
批量清理已结束的会话:
tmux list-sessions -F '#{session_name}:#{pane_dead}' \
| grep ':1$' \
| cut -d: -f1 \
| xargs -I{} tmux kill-session -t {}