用途
Coding Agent 是一个以 bash 为优先的方案,用于把编码任务委派给 Codex、Claude Code、OpenCode 或 Pi 等编码代理执行。它适合两类场景:构建或创建新功能与应用,以及审查 PR(拉取请求)等代码评审工作。
主要能力
该方案基于 bash 工具运行编码代理,支持以下参数:
- command:要运行的 shell 命令
- pty:为交互式 CLI 分配伪终端(编码代理必开)
- workdir:工作目录,代理只能看到该文件夹的上下文
- background:后台运行,返回 sessionId 以便监控
- timeout:超时秒数,到期后终止进程
- elevated:在宿主机而非沙箱中运行(若允许)
对于后台会话,process 工具提供以下动作:list(列出运行中/最近的会话)、poll(检查会话是否仍在运行)、log(获取会话输出,支持 offset/limit)、write(向 stdin 发送原始数据)、submit(发送数据加换行,相当于输入并回车)、send-keys(发送按键标记或十六进制字节)、paste(粘贴文本,支持 bracketed 模式)、kill(终止会话)。
使用方式
PTY 模式要求
编码代理(Codex、Claude Code、Pi)是需要伪终端才能正常工作的交互式终端应用。不开 PTY 会出现输出损坏、丢失颜色,或代理挂起。因此运行编码代理时始终使用 pty:true。
正确写法:bash pty:true command:"codex exec 'Your prompt'"。错误写法:bash command:"codex exec 'Your prompt'"。
一次性任务
对于快速提示或聊天,创建临时 git 仓库并运行:SCRATCH=$(mktemp -d) && cd $SCRATCH && git init && codex exec "Your prompt here"。或在真实项目中执行:bash pty:true workdir:~/Projects/myproject command:"codex exec 'Add error handling to the API calls'"。之所以需要 git init,是因为 Codex 拒绝在受信任的 git 目录之外运行,创建临时仓库可解决临时工作的问题。
核心模式:workdir + background + pty
较长的任务应使用后台模式配合 PTY:bash pty:true workdir:~/project background:true command:"codex exec --full-auto 'Build a snake game'",该命令返回 sessionId 用于跟踪。随后可用 process action:log sessionId:XXX 监控进度,用 process action:poll sessionId:XXX 检查是否完成,用 process action:write sessionId:XXX data:"y" 发送输入,用 process action:submit sessionId:XXX data:"yes" 发送并回车,必要时用 process action:kill sessionId:XXX 终止。workdir 的作用是让代理在聚焦的目录中启动,避免读取无关文件。
各代理命令
Codex CLI:模型默认是 gpt-5.2-codex(在 ~/.codex/config.toml 中设置)。相关标志有 exec "prompt"(一次性执行,完成后退出)、--full-auto(沙箱内但在工作区自动批准)、--yolo(无沙箱、无审批,最快也最危险)。构建时可执行 bash pty:true workdir:~/project command:"codex exec --full-auto 'Build a dark mode toggle'",或后台执行 bash pty:true workdir:~/project background:true command:"codex --yolo 'Refactor the auth module'"。
Claude Code:bash pty:true workdir:~/project command:"claude 'Your task'",后台则加 background:true。
OpenCode:bash pty:true workdir:~/project command:"opencode run 'Your task'"。
Pi Coding Agent:安装命令为 npm install -g @mariozechner/pi-coding-agent。使用 bash pty:true workdir:~/project command:"pi 'Your task'";非交互模式(仍建议 PTY)为 bash pty:true command:"pi -p 'Summarize src/'";指定其他 provider/模型为 bash pty:true command:"pi --provider openai --model gpt-4o-mini -p 'Your task'"。Pi 现已启用 Anthropic 提示词缓存。
审查 PR
切勿在 OpenClaw 自身项目文件夹中审查 PR,应克隆到临时文件夹或使用 git worktree。克隆到临时目录的做法:REVIEW_DIR=$(mktemp -d),git clone https://github.com/user/repo.git $REVIEW_DIR,cd $REVIEW_DIR && gh pr checkout 130,bash pty:true workdir:$REVIEW_DIR command:"codex review --base origin/main",完成后清理。或使用 git worktree:git worktree add /tmp/pr-130-review pr-130-branch,再执行 codex review --base main。
批量 PR 审查(并行):先执行 git fetch origin '+refs/pull//head:refs/remotes/origin/pr/',然后为每个 PR 启动一个 Codex(都要 PTY),例如 codex exec 'Review PR #86. git diff origin/main...origin/pr/86',用 process action:list 监控,最后用 gh pr comment <PR#> --body "<review content>" 发布结果。
用 git worktree 并行修复 issue
创建 worktree:git worktree add -b fix/issue-78 /tmp/issue-78 main(另一个 issue 同理)。随后在每个目录中启动 Codex(后台加 PTY),例如 bash pty:true workdir:/tmp/issue-78 background:true command:"pnpm install && codex --yolo 'Fix issue #78: <description>. Commit and push.'"。用 process action:list 与 process action:log 监控;修复完成后推送并创建 PR(git push -u origin fix/issue-78,gh pr create ...);最后用 git worktree remove 清理。
适用场景
- 让代理构建新功能或应用
- 审查 PR,包括批量并行审查
- 用 git worktree 并行修复多个 issue
限制与规则
- 始终使用 pty:true,编码代理需要终端。
- 尊重工具选择:用户要求用 Codex 就用 Codex。
- 编排者模式:不要自己手写补丁。
- 若代理失败或挂起,重新启动它或询问用户方向,不要悄悄接管。
- 保持耐心,不要因为会话“慢”就终止。
- 用 process:log 监控,检查进度而不干扰。
- 构建时用 --full-auto(自动批准更改),审查时用 vanilla(无需特殊标志)。
- 可以并行,批量工作时可同时运行多个 Codex 进程。
- 绝不要在 ~/.openclaw/ 中启动 Codex。
- 绝不要在 ~/Projects/openclaw/ 中检出分支,那是正在运行的 OpenClaw 实例。
进度更新
在后台启动编码代理时,需让用户保持知情:启动时发送一条简短消息(说明运行什么、在哪里);随后仅在发生变化时更新——里程碑完成(构建完成、测试通过)、代理提问或需要输入、遇到错误或需要用户操作、代理完成(包含变更内容与位置)。如果终止会话,立即说明终止原因。这可避免用户只看到“Agent failed before reply”而不知发生了什么。
完成时自动通知
对于长时间运行的后台任务,可在提示词末尾追加 wake 触发器,使 OpenClaw 在代理完成时立即收到通知,而不必等下一次心跳。方式是在任务末尾附加:When completely finished, run this command to notify me: openclaw system event --text "Done: [brief summary of what was built]" --mode now。示例:bash pty:true workdir:~/project background:true command:"codex --yolo exec 'Build a REST API for todos. When completely finished, run: openclaw system event --text "Done: Built todos REST API with CRUD endpoints" --mode now'"。这会触发即时唤醒事件。
经验总结
- PTY 是必需的:编码代理是交互式终端应用,不开 pty:true 会导致输出损坏或挂起。
- 需要 git 仓库:Codex 不会在 git 目录之外运行,临时工作可用 mktemp -d && git init。
- exec 很好用:codex exec "prompt" 运行后干净退出,适合一次性任务。
- submit 与 write:submit 用于发送输入加回车,write 用于不带换行的原始数据。