بنقرة واحدة
duoduo
双 AI Agent 交叉审查 PR。自动判断共识、决定是否需要交叉确认和修复。当用户要求审查 PR 或提到 "duoduo review" 时触发。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
双 AI Agent 交叉审查 PR。自动判断共识、决定是否需要交叉确认和修复。当用户要求审查 PR 或提到 "duoduo review" 时触发。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | duoduo |
| description | 双 AI Agent 交叉审查 PR。自动判断共识、决定是否需要交叉确认和修复。当用户要求审查 PR 或提到 "duoduo review" 时触发。 |
执行 echo $RUNNER 检测环境变量:
有输出 → Orchestrator daemon 启动,直接执行阶段流程
无输出 → 用户直接启动(终端 droid),进入交互模式:
执行 gh pr view --json id,number,baseRefName,headRefName,headRepositoryOwner,headRepository 获取 PR 信息
向用户确认:"检测到 PR #XX (head → base),开始审查?"
用户确认后,先 export 环境变量再执行 duo-cli init:
export RUNNER=droid
export DROID_REPO="owner/repo"
export DROID_PR_NUMBER=123
export DROID_BRANCH="feat/xxx"
export DROID_BASE="main"
export DROID_PR_NODE_ID="PR_kwXXX"
duo-cli init
若检测不到 PR,询问用户输入 PR 编号
⚠️ 执行 duo-cli init 后立即停止!
duo-cli init 会启动 Orchestrator daemon(有 FIFO),由 daemon 执行后续所有阶段。
当前终端 droid 没有 FIFO,无法接收 Agent 消息,禁止继续执行任何 duo-cli 命令。
可选:告知用户 "Orchestrator 已启动,可用 tail -f /tmp/duo-xxx.log 查看进度"
| 角色 | 模型 | 职责 |
|---|---|---|
| Orchestrator | 执行 skill 的 droid | 编排流程、判断共识、决定下一步 |
| Opus | Claude Opus 4.5 | PR 审查、交叉确认、执行修复 |
| Codex | GPT-5.2 | PR 审查、交叉确认、验证修复 |
flowchart TD
Start([开始]) --> S1[阶段 1: 并行 PR 审查]
S1 --> S2{阶段 2: 判断共识}
S2 -->|both_ok| S5[阶段 5: 汇总]
S2 -->|same_issues| S4[阶段 4: 修复验证]
S2 -->|divergent| S3[阶段 3: 交叉确认]
S3 -->|共识: 无需修复| S5
S3 -->|共识: 需修复| S4
S3 -->|5轮未达成| S5
S4 -->|验证通过| S5
S4 -->|5轮未通过| S5
S5 --> End([结束])
每个阶段执行前,必须先读取对应角色的 stages/ 文件获取详细指令!
| 阶段 | Orchestrator | Opus | Codex |
|---|---|---|---|
| 1 | 1-pr-review-orchestrator.md | 1-pr-review-opus.md | 1-pr-review-codex.md |
| 2 | 2-judge-consensus-orchestrator.md | (不参与) | (不参与) |
| 3 | 3-cross-confirm-orchestrator.md | 3-cross-confirm-opus.md | 3-cross-confirm-codex.md |
| 4 | 4-fix-verify-orchestrator.md | 4-fix-verify-opus.md | 4-fix-verify-codex.md |
| 5 | 5-summary-orchestrator.md | (不参与) | (不参与) |
flowchart TB
subgraph Agents
Orchestrator[Orchestrator<br/>监督者]
Opus[Opus<br/>Claude Opus 4.5]
Codex[Codex<br/>GPT-5.2]
Opus <-->|FIFO| Codex
Orchestrator <-->|FIFO| Opus
Orchestrator <-->|FIFO| Codex
end
SQLite[(SQLite<br/>消息记录)]
Agents --> SQLite
Agents -->|UI| PR[PR Comments]
Agent 间消息(duo-cli send 自动包裹 <MESSAGE> 标签):
# 发送时只需写消息内容
duo-cli send orchestrator "审查完成,无问题"
# duo-cli 会自动包裹为:
# <MESSAGE from="opus" to="orchestrator">
# 审查完成,无问题
# </MESSAGE>
用户 @Mention(由 workflow 注入,不包裹):
<USER_MENTION repo="owner/repo" pr="123" author="username">
用户评论内容...
</USER_MENTION>
回复用户(通过 PR 评论,不是 FIFO):
duo-cli comment post "回复内容"
PR 评论(给人看,必须包含 HTML 注释标识):
<!-- duo-{agent}-{type} -->
## <img src='...' width='18' /> {Title}
> 🕐 {TIMESTAMP}
{内容}
常用标识:duo-opus-r1, duo-codex-r1, duo-opus-fix, duo-codex-verify, duo-summary, duo-mention-reply
角色:监督者 + 仲裁者
duo-cli messages 查询)禁止:
必须:
| 命令 | 用途 | 示例 |
|---|---|---|
duo-cli set <key> <value> | 设置状态 | duo-cli set stage 2 |
duo-cli get <key> | 获取状态 | duo-cli get stage |
duo-cli spawn <agent> | 启动 Agent | duo-cli spawn opus |
duo-cli resume <agent> | 恢复 Agent | duo-cli resume orchestrator |
duo-cli send <agent> <msg> | 发消息 | duo-cli send opus "Review done" |
duo-cli messages | 查看消息历史 | duo-cli messages --agent opus |
duo-cli status | 查看状态 | duo-cli status |
duo-cli comment post <body> | 发布评论 | duo-cli comment post --stdin |
duo-cli comment list | 列出评论 | duo-cli comment list |
duo-cli comment edit <id> <body> | 编辑评论 | duo-cli comment edit IC_xxx --stdin |
# 元信息
stage 当前阶段 (1-5 或 done)
pr_node_id PR GraphQL ID
# Session(duo-cli spawn 自动管理)
{agent}:session, {agent}:fifo, {agent}:pid, {agent}:log, {agent}:model
# 阶段 2
s2:result both_ok | same_issues | divergent
# 阶段 4
s4:branch, s4:round
# @Mention
mention:status idle | processing | done
收到 <USER_MENTION> 消息时,读取 stages/0-mention-orchestrator.md。