名称: coding-agent
描述: 通过后台进程运行 Codex CLI、Claude Code、OpenCode 或 Pi Coding Agent,实现程序化控制。
元数据: {"clawdbot":{"emoji":"🧩","requires":{"anyBins":["claude","codex","opencode","pi"]}}}
使用 bash 后台模式 处理非交互式编码任务。对于交互式编码会话,请使用 tmux 技能(始终如此,除非是非常简单的一次性提示)。
# 为聊天/临时工作创建临时空间
SCRATCH=$(mktemp -d)
# 在目标目录中启动代理(“小盒子” - 仅能看到相关文件)
bash workdir:$SCRATCH background:true command:"<agent command>"
# 或者用于项目工作:
bash workdir:~/project/folder background:true command:"<agent command>"
# 返回用于跟踪的 sessionId
# 监控进度
process action:log sessionId:XXX
# 检查是否完成
process action:poll sessionId:XXX
# 发送输入(如果代理提问)
process action:write sessionId:XXX data:"y"
# 必要时终止
process action:kill sessionId:XXX
为何工作目录重要: 代理在指定的专注目录中启动,不会漫游读取无关文件(比如你的 soul.md 😅)。
模型: gpt-5.2-codex 是默认模型(在 ~/.codex/config.toml 中设置)
# --full-auto: 沙盒化,但在工作空间内自动批准
bash workdir:~/project background:true command:"codex exec --full-auto \"构建一个暗黑主题的贪吃蛇游戏\""
# --yolo: 无沙盒,无批准(最快,最危险)
bash workdir:~/project background:true command:"codex --yolo \"构建一个暗黑主题的贪吃蛇游戏\""
# 注意:--yolo 是 --dangerously-bypass-approvals-and-sandbox 的快捷方式
⚠️ 关键:切勿在 Clawdbot 自己的项目文件夹中审查 PR!
- 要么在提交 PR 的项目中进行审查(如果它不是 ~/Projects/clawdbot)
- 要么先克隆到临时文件夹
# 选项 1:在实际项目中审查(如果不是 clawdbot)
bash workdir:~/Projects/some-other-repo background:true command:"codex review --base main"
# 选项 2:克隆到临时文件夹进行安全审查(对 clawdbot 的 PR 是必需的!)
REVIEW_DIR=$(mktemp -d)
git clone https://github.com/clawdbot/clawdbot.git $REVIEW_DIR
cd $REVIEW_DIR && gh pr checkout 130
bash workdir:$REVIEW_DIR background:true command:"codex review --base origin/main"
# 完成后清理:rm -rf $REVIEW_DIR
# 选项 3:使用 git worktree(保持主分支完整)
git worktree add /tmp/pr-130-review pr-130-branch
bash workdir:/tmp/pr-130-review background:true command:"codex review --base main"
原因: 在正在运行的 Clawdbot 仓库中检出分支可能会破坏实时实例!
# 首先获取所有 PR 引用
git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'
# 部署大军 - 每个 PR 一个 Codex!
bash workdir:~/project background:true command:"codex exec \"审查 PR #86。git diff origin/main...origin/pr/86\""
bash workdir:~/project background:true command:"codex exec \"审查 PR #87。git diff origin/main...origin/pr/87\""
bash workdir:~/project background:true command:"codex exec \"审查 PR #95。git diff origin/main...origin/pr/95\""
# ... 对所有 PR 重复此操作
# 监控所有进程
process action:list
# 获取结果并发布到 GitHub
process action:log sessionId:XXX
gh pr comment <PR#> --body "<审查内容>"
git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'git diff origin/main...origin/pr/XXgh pr comment 将审查发布到 GitHubbash workdir:~/project background:true command:"claude \"你的任务\""
bash workdir:~/project background:true command:"opencode run \"你的任务\""
# 安装:npm install -g @mariozechner/pi-coding-agent
bash workdir:~/project background:true command:"pi \"你的任务\""
--print / -p:非交互式;运行提示后退出。--provider <name>:选择提供商(默认:google)。--model <id>:选择模型(默认:gemini-2.5-flash)。--api-key <key>:覆盖 API 密钥(默认为环境变量)。示例:
# 设置提供商 + 模型,非交互式
bash workdir:~/project background:true command:"pi --provider openai --model gpt-4o-mini -p \"总结 src/\""
对于交互式编码会话,请使用 tmux 技能(始终如此,除非是非常简单的一次性提示)。对于非交互式运行,优先使用 bash 后台模式。
要并行修复多个问题,请使用 git worktrees(隔离分支)+ tmux 会话:
# 1. 将仓库克隆到临时位置
cd /tmp && git clone git@github.com:user/repo.git repo-worktrees
cd repo-worktrees
# 2. 为每个问题创建工作树(隔离分支!)
git worktree add -b fix/issue-78 /tmp/issue-78 main
git worktree add -b fix/issue-99 /tmp/issue-99 main
# 3. 设置 tmux 会话
SOCKET="${TMPDIR:-/tmp}/codex-fixes.sock"
tmux -S "$SOCKET" new-session -d -s fix-78
tmux -S "$SOCKET" new-session -d -s fix-99
# 4. 在每个会话中启动 Codex(在 pnpm install 之后!)
tmux -S "$SOCKET" send-keys -t fix-78 "cd /tmp/issue-78 && pnpm install && codex --yolo '修复问题 #78:<描述>。提交并推送。'" Enter
tmux -S "$SOCKET" send-keys -t fix-99 "cd /tmp/issue-99 && pnpm install && codex --yolo '修复问题 #99:<描述>。提交并推送。'" Enter
# 5. 监控进度
tmux -S "$SOCKET" capture-pane -p -t fix-78 -S -30
tmux -S "$SOCKET" capture-pane -p -t fix-99 -S -30
# 6. 检查是否完成(提示符已返回)
tmux -S "$SOCKET" capture-pane -p -t fix-78 -S -3 | grep -q "❯" && echo "完成!"
# 7. 修复后创建 PR
cd /tmp/issue-78 && git push -u origin fix/issue-78
gh pr create --repo user/repo --head fix/issue-78 --title "fix: ..." --body "..."
# 8. 清理
tmux -S "$SOCKET" kill-server
git worktree remove /tmp/issue-78
git worktree remove /tmp/issue-99
为何使用 worktrees? 每个 Codex 在隔离的分支中工作,无冲突。可以同时运行 5 个以上的并行修复!
为何使用 tmux 而非 bash 后台? Codex 是交互式的 — 需要 TTY 以获得正确的输出。tmux 提供具有完整历史记录的持久会话。
向外部仓库提交 PR 时,请使用此格式以确保质量和对维护者友好:
## 原始提示
[确切的请求/问题陈述]
## 功能说明
[高层次描述]
**特性:**
- [关键特性 1]
- [关键特性 2]
**使用示例:**
```bash
# 示例
命令示例
```
## 功能意图(对维护者友好)
[为何有用,如何契合,支持的工作流]
## 提示历史(带时间戳)
- YYYY-MM-DD HH:MM UTC:[步骤 1]
- YYYY-MM-DD HH:MM UTC:[步骤 2]
## 测试方式
**手动验证:**
1. [测试步骤] - 输出:`[结果]`
2. [测试步骤] - 结果:[结果]
**测试的文件:**
- [详情]
- [边界情况]
## 会话日志(实现过程)
- [研究了什么]
- [发现了什么]
- [花费的时间]
## 实现细节
**新增文件:**
- `path/file.ts` - [描述]
**修改的文件:**
- `path/file.ts` - [变更]
**技术说明:**
- [细节 1]
- [细节 2]
---
*由 Razor 🥷 - Mariano 的 AI 代理提交*
关键原则:
1. 人工编写的描述(无 AI 废话)
2. 为维护者说明功能意图
3. 带时间戳的提示历史
4. 如果使用 Codex/代理,提供会话日志
示例: https://github.com/steipete/bird/pull/22