用途
Agent Roundtable 用于对某个功能、PR/diff 或任务规格做多智能体审计。它让多个编码智能体就同一目标展开有主持的辩论,最终收敛为一份一致认可的规格。发起会话的 Claude 是主持人和总结者,不参与辩论本身。
主要能力
- 两种传输方式:ACP(Agent Client Protocol)为每个智能体维持一个实时会话;headless 则每回合发起一次 CLI 调用,按显式 session id 恢复(如
codex exec resume <id>、cmd --resume <id>、claude -p --resume <id>)。runner 从不恢复“最近一次会话”。 - 三种辩论形式:pingpong(2 个智能体轮流,适合窄 diff 和单一焦点问题)、panel(N 个智能体并行审计再交叉批评,适合范围较广的功能,是默认形式)、roles(在 panel 基础上为每个智能体分配视角,如审计者、反方、架构师、QA,适合前提本身存疑的规格与设计)。
- 健康检查:
doctor子命令用每个智能体的默认传输方式发起一句提示,提前暴露过期密钥或登录失败。 - 故障恢复:某回合失败(崩溃、卡死、超时或结束状态非
end_turn)时,runner 会在整个运行中给该智能体 3 次重试:同一传输重启并重建上下文、切换为 headless 并原生恢复、最终将其剔除。被剔除智能体的投票立即清空,运行标记为 degraded。 - 只读尽力保障:ACP 权限规则按路径判定;headless 智能体运行在各自 CLI 的防护下。每回合后 runner 对比目标内容指纹,有变化会在
state.json加警告。 - 死锁检测:同一组阻塞项连续两轮成立时,即使 auto 模式也会切换到
awaiting_moderator。
使用方式
先询问用户参与程度(hands-on 用 --mode active,result only 用 --mode auto),再识别目标类型并写 brief.md(目标、类型、审计目的、范围、验证方式、已知上下文,建议 150 行以内)。选择格式后运行:
node ~/.claude/skills/agent-roundtable/scripts/roundtable.mjs doctor
node ~/.claude/skills/agent-roundtable/scripts/roundtable.mjs run \
--brief RUN/brief.md --run-dir RUN --cwd TARGET_REPO \
--agents codex,cmd --format panel --rounds 3 --mode auto
首次安装需 cd ~/.claude/skills/agent-roundtable/scripts && npm install。常用选项包括 --rounds(默认 3)、--min-rounds(默认 2)、--turn-timeout(默认 900 秒)、--budget-min(默认 60 分钟)、--transport auto|acp|headless、--roles、--no-veto、--drain-timeout(默认 30 秒)、--kill-grace(默认 5 秒)、--registry。
运行目录中,runner 写 state.json、rounds/、veto/、events.log;主持人写 moderator/rN.md 与 synthesis.md(需原子写入,如先写 .tmp 再 mv)。状态为 awaiting_moderator 时主持人读取分歧并通过 cenno 询问用户如何引导;awaiting_synthesis 时按模板撰写合成稿,每项仍有智能体视为阻塞的分歧都要列入 Open disagreements 并按原文呈现各方立场,主持人自己的发现放在“Moderator notes”下接受否决。随后进行一轮否决,按 veto.json 的异议修正后定稿,除非用户要求否则不进行第二轮否决。最后可交付为仓库内的 final.md 或直接在对话中给出规格、任务清单与开放分歧,并说明所用智能体与传输、state.result、轮数与停止原因、否决结果及警告。
适用场景
功能审计、PR/diff 审查、任务规格评审,尤其适合需要多模型视角对照、希望得到可交接文档的团队。
限制
- 只读为尽力而为,并非强制隔离;智能体可读取任意内容并执行命令。
- 内容指纹仅覆盖已跟踪 diff 与未跟踪文件(排除运行目录),不覆盖 gitignore 的文件。
- gemini 的 ACP 需要有效的 Google OAuth 登录;opencode 密钥过期时会在首个提示处失败;gemini 与 opencode 没有 headless 适配(其 CLI 无法按 id 恢复会话)。
- 运行目录必须全新,已有
state.json、moderator/或synthesis.md的目录会被拒绝。 - 被切换或剔除智能体的 degraded 运行不能作为完整共识呈现。