编码代理Skill coding-agent

此技能专注于使用bash命令和编码代理(如Codex、Claude Code、OpenCode、Pi)进行程序化控制,以自动化软件开发任务,包括代码生成、代码审查、并行问题修复等。关键功能包括使用PTY模式确保交互性、工作目录管理、背景进程监控,适用于提高开发效率和批量处理任务。关键词:编码代理、bash程序化控制、AI编码自动化、Codex CLI、PTY模式、并行开发、代码审查。

AI智能体 0 次安装 0 次浏览 更新于 3/24/2026

name: coding-agent description: 通过后台进程运行Codex CLI、Claude Code、OpenCode或Pi Coding Agent进行程序化控制。 metadata: { “otto”: { “emoji”: “🧩”, “requires”: { “anyBins”: [“claude”, “codex”, “opencode”, “pi”] } }, }

编码代理(bash优先)

使用bash(可选后台模式)进行所有编码代理工作。简单高效。

⚠️ 需要PTY模式!

编码代理(Codex、Claude Code、Pi)是交互式终端应用程序,需要伪终端(PTY)才能正常工作。没有PTY,你会得到损坏的输出、缺少颜色,或者代理可能挂起。

运行编码代理时始终使用pty:true

# ✅ 正确 - 使用PTY
bash pty:true command:"codex exec '你的提示'"

# ❌ 错误 - 没有PTY,代理可能损坏
bash command:"codex exec '你的提示'"

Bash工具参数

参数 类型 描述
command string 要运行的shell命令
pty boolean 用于编码代理! 为交互式CLI分配伪终端
workdir string 工作目录(代理只能看到此文件夹的上下文)
background boolean 在后台运行,返回sessionId用于监控
timeout number 超时时间(秒),到期时终止进程
elevated boolean 在主机上运行而不是沙箱(如果允许)

进程工具操作(用于后台会话)

操作 描述
list 列出所有运行/最近的会话
poll 检查会话是否仍在运行
log 获取会话输出(可选偏移/限制)
write 发送原始数据到stdin
submit 发送数据 + 换行(如键入并按下Enter)
send-keys 发送键令牌或十六进制字节
paste 粘贴文本(可选括号模式)
kill 终止会话

快速开始:一次性任务

对于快速提示/聊天,创建临时git仓库并运行:

# 快速聊天(Codex需要git仓库!)
SCRATCH=$(mktemp -d) && cd $SCRATCH && git init && codex exec "你的提示在这里"

# 或在真实项目中 - 使用PTY!
bash pty:true workdir:~/Projects/myproject command:"codex exec '为API调用添加错误处理'"

为什么需要git init? Codex拒绝在可信git目录外运行。创建临时仓库解决此问题以进行草稿工作。


模式:workdir + background + pty

对于较长任务,使用后台模式与PTY:

# 在目标目录中启动代理(使用PTY!)
bash pty:true workdir:~/project background:true command:"codex exec --full-auto '构建贪吃蛇游戏'"
# 返回sessionId用于跟踪

# 监控进度
process action:log sessionId:XXX

# 检查是否完成
process action:poll sessionId:XXX

# 发送输入(如果代理提问)
process action:write sessionId:XXX data:"y"

# 使用Enter提交(如键入"yes"并按下Enter)
process action:submit sessionId:XXX data:"yes"

# 如有需要则终止
process action:kill sessionId:XXX

为什么workdir重要: 代理在专注的目录中启动,不会漫游读取不相关文件(如你的soul.md 😅)。


Codex CLI

模型: gpt-5.2-codex是默认(设置在~/.codex/config.toml)

标志

标志 效果
exec "prompt" 一次性执行,完成后退出
--full-auto 沙箱化但在工作空间中自动批准
--yolo 无沙箱,无批准(最快,最危险)

构建/创建

# 快速一次性(自动批准) - 记住PTY!
bash pty:true workdir:~/project command:"codex exec --full-auto '构建暗模式切换'"

# 后台用于较长工作
bash pty:true workdir:~/project background:true command:"codex --yolo '重构认证模块'"

审查PR

⚠️ 关键:永远不要在Otto自己的项目文件夹中审查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"
# 完成后清理:删除$REVIEW_DIR

# 或使用git worktree(保持主分支完整)
git worktree add /tmp/pr-130-review pr-130-branch
bash pty:true workdir:/tmp/pr-130-review command:"codex review --base main"

批量PR审查(并行大军!)

# 首先获取所有PR引用
git fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'

# 部署大军 - 每个PR一个Codex(全部使用PTY!)
bash pty:true workdir:~/project background:true command:"codex exec '审查PR #86。git diff origin/main...origin/pr/86'"
bash pty:true workdir:~/project background:true command:"codex exec '审查PR #87。git diff origin/main...origin/pr/87'"

# 监控所有
process action:list

# 发布结果到GitHub
gh pr comment <PR#> --body "<审查内容>"

Claude Code

# 使用PTY以获得正确的终端输出
bash pty:true workdir:~/project command:"claude '你的任务'"

# 后台
bash pty:true workdir:~/project background:true command:"claude '你的任务'"

OpenCode

bash pty:true workdir:~/project command:"opencode run '你的任务'"

Pi Coding Agent

# 安装:npm install -g @mariozechner/pi-coding-agent
bash pty:true workdir:~/project command:"pi '你的任务'"

# 非交互模式(仍推荐PTY)
bash pty:true command:"pi -p '总结src/'"

# 不同提供商/模型
bash pty:true command:"pi --provider openai --model gpt-5-mini -p '你的任务'"

注意: Pi现在启用了Anthropic提示缓存(PR #584,合并于2026年1月)!


使用git worktrees并行修复问题

为并行修复多个问题,使用git worktrees:

# 1. 为每个问题创建worktrees
git worktree add -b fix/issue-78 /tmp/issue-78 main
git worktree add -b fix/issue-99 /tmp/issue-99 main

# 2. 在每个中启动Codex(后台 + PTY!)
bash pty:true workdir:/tmp/issue-78 background:true command:"pnpm install && codex --yolo '修复问题 #78: <描述>。提交并推送。'"
bash pty:true workdir:/tmp/issue-99 background:true command:"pnpm install && codex --yolo '修复问题 #99: <描述>。提交并推送。'"

# 3. 监控进度
process action:list
process action:log sessionId:XXX

# 4. 修复后创建PRs
cd /tmp/issue-78 && git push -u origin fix/issue-78
gh pr create --repo user/repo --head fix/issue-78 --title "fix: ..." --body "..."

# 5. 清理
git worktree remove /tmp/issue-78
git worktree remove /tmp/issue-99

⚠️ 规则

  1. 始终使用pty:true - 编码代理需要终端!
  2. 尊重工具选择 - 如果用户要求Codex,使用Codex。
    • 编排器模式:不要自己手写补丁。
    • 如果代理失败/挂起,重新启动它或向用户询问方向,但不要静默接管。
  3. 耐心等待 - 不要因为"慢"而终止会话
  4. 使用process:log监控 - 检查进度而不干扰
  5. 构建使用–full-auto - 自动批准更改
  6. 审查使用普通模式 - 不需要特殊标志
  7. 并行可行 - 运行多个Codex进程以进行批量工作
  8. 永远不要在~/agent/中启动Codex - 它会读取你的灵魂文档并对组织结构产生奇怪想法!
  9. 永远不要在~/Projects/otto/中检出分支 - 那是LIVE Otto实例!

进度更新(关键)

当你在后台启动编码代理时,保持用户知情。

  • 启动时发送1条短消息(什么在运行 + 在哪里)。
  • 然后只在有变化时再次更新:
    • 里程碑完成(构建完成,测试通过)
    • 代理提问 / 需要输入
    • 遇到错误或需要用户操作
    • 代理完成(包括更改内容 + 位置)
  • 如果终止会话,立即说明你终止了它以及原因。

这防止用户只看到"代理在回复前失败"而不知道发生了什么。


完成时自动通知

对于长时间运行的后台任务,在提示中附加唤醒触发,以便在代理完成时立即通知Otto(而不是等待下一个心跳):

... 你的任务在这里。

当完全完成后,运行此命令通知我:
otto gateway wake --text "完成:[简短总结构建了什么]" --mode now

示例:

bash pty:true workdir:~/project background:true command:"codex --yolo exec '构建REST API用于待办事项。

当完全完成后,运行: otto gateway wake --text \"完成:构建了带有CRUD端点的待办事项REST API\" --mode now'"

这触发立即唤醒事件 — Skippy在几秒内被ping到,而不是10分钟。


学习要点(2026年1月)

  • PTY至关重要: 编码代理是交互式终端应用。没有pty:true,输出损坏或代理挂起。
  • 需要git仓库: Codex不会在git目录外运行。使用mktemp -d && git init进行草稿工作。
  • exec是你的朋友: codex exec "prompt"运行并干净退出 - 非常适合一次性任务。
  • submit vs write: 使用submit发送输入 + Enter,write用于无换行的原始数据。
  • 调侃有效: Codex对俏皮的提示反应良好。尝试让它为你的项目写一首俳句。