搜索

PythonReactSEOPDF
GitHub Skill

duoduo

双 AI Agent 交叉审查 PR。自动判断共识、决定是否需要交叉确认和修复。当用户要求审查 PR 或提到 "duoduo review" 时触发。

notdp☆ 3 仓库 Stars3 仓库 Forks

安装与使用

请根据来源仓库和你的 AI 工具说明安装此技能。先阅读技能文件和依赖要求,再添加到工作流。

查看来源 ↗使用指南

技能说明

Duo Review - 双 Agent 交叉审查

1. 启动检测 ⚠️

执行 echo $RUNNER 检测环境变量:

有输出 → Orchestrator daemon 启动,直接执行阶段流程

无输出 → 用户直接启动(终端 droid),进入交互模式:

  1. 执行 gh pr view --json id,number,baseRefName,headRefName,headRepositoryOwner,headRepository 获取 PR 信息

  2. 向用户确认:"检测到 PR #XX (head → base),开始审查?"

  3. 用户确认后,先 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
    
  4. 若检测不到 PR,询问用户输入 PR 编号

⚠️ 执行 duo-cli init 后立即停止!

duo-cli init 会启动 Orchestrator daemon(有 FIFO),由 daemon 执行后续所有阶段。 当前终端 droid 没有 FIFO,无法接收 Agent 消息,禁止继续执行任何 duo-cli 命令。

可选:告知用户 "Orchestrator 已启动,可用 tail -f /tmp/duo-xxx.log 查看进度"


2. 角色

角色 模型 职责
Orchestrator 执行 skill 的 droid 编排流程、判断共识、决定下一步
Opus Claude Opus 4.5 PR 审查、交叉确认、执行修复
Codex GPT-5.2 PR 审查、交叉确认、验证修复

3. 流程总览

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 (不参与) (不参与)

4. 通信架构

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]
  • 阶段 1-2:Opus/Codex → Orchestrator(汇报结果)
  • 阶段 3:Opus ↔ Codex 直接对话(交叉确认)
  • SQLite - 所有消息自动记录
  • 评论 = 纯 UI(给人看)
消息格式

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


5. Orchestrator 行为规范

角色:监督者 + 仲裁者

  • 启动流程,分配任务
  • 监控进度(通过 duo-cli messages 查询)
  • 在僵局时介入仲裁

禁止:

  • 读取 PR diff、REVIEW.md、代码文件
  • 等待 Agent 时执行任何命令(FIFO 消息会丢失!)

必须:

  • 启动 Agent 后直接回复"等待中..."然后结束回复
  • Agent 结果会自动作为新消息发来

6. CLI 命令

命令 用途 示例
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

7. 状态 Keys

# 元信息
stage               当前阶段 (1-5 或 done)
runner              droid | workflow
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

8. @Mention 处理

收到 <USER_MENTION> 消息时,读取 stages/0-mention-orchestrator.md。

使用示例

查看来源仓库中的使用示例与配置说明。

查看来源 ↗

来源历史

收录时间
2026-01-20
索引更新时间
2026-01-30
Branch
main

收录与同步日期属于本站记录。源码修改历史请查看来源仓库。

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!