第36章 Polly 多智能体编码调度器
Polly 多智能体编码调度器。Polly 会把你的任务拆解成子任务,分派给不同的 AI 智能体处理,并内置跨厂商代码审查。
omni polly omni run # 已配置 Claude 凭证时,启动默认智能体 Polly
工作原理 Polly 是一个从不亲自写代码的监督者。它把你的目标拆解为子任务,分别委派给运行在独立 harness 和 git worktree 上的子智能体。一个智能体负责实现,另一个智能体负责审查。每个实现者各自开自己的 PR,Polly 从不合并——由人来决定。
子智能体Harness角色claude_codeclaude-nativeClaude Codecodexcodex-nativeCodexopencodeopencode-nativeOpenCodecursorcursor-nativeCursorhermeshermes-nativeHermes Agent (Nous Research)agyantigravity-nativeGoogle Antigravity CLI (Gemini)pipiPi(无头模式,任意网关模型)
claude_code、codex、opencode、cursor、hermes 和 agy 是主要的实现者,各自以真实的 CLI 编码 harness 运行在独立终端中,你可以在 UI 的 Subagents 面板里打开这些终端,观察或接管它们的工作。pi 以无头模式运行,专职审查和探索。七个不同的厂商意味着任何一个实现者的 diff 都可以交给另一家审查——跨厂商检查正是关键所在。agy 是 Gemini 原生的:它通过自己的 Google 账号认证(经 ~/.gemini),不运行 Claude 或 GPT 系模型,因此天然适合作为跨审查的第三方厂商。每个 worker 需要其 CLI 在 PATH 中——agy 需要 agy 二进制,与 claude、codex、opencode、cursor-agent、hermes、pi 一起列入 Polly 的启动预检清单。
无头 worker 的工具审批 Polly 的原生 worker 在无头窗格中启动,没有人值守去应答工具审批提示,因此一旦 Edit/Write/Bash 触发提示就会卡住 worker。所以每个 worker 的 bundle 都声明了全绕过策略,以便无人值守地编辑和运行:
WorkerHarnessBypass 配置效果claude_codeclaude-nativepermission_mode: auto透传为 --permission-mode autocodexcodex-nativeyolo: true--dangerously-bypass-approvals-and-sandboxcursorcursor-nativeyolo: true--yolo(cursor-agent 的免询问/完全绕过)
在某个 worker 上设置 executor.config.yolo: false 可以保留审批提示——适用于只读或必须审批的子智能体(其被拦截的调用会以审批卡片形式呈现)。对于 Cursor worker,设置 executor.config.permission_mode: auto(或 exec_mode: auto / auto-review)会选择 Smart Auto(--auto-review)而非完全的 --yolo,与 Claude 的 permission_mode: auto 体验一致。
绕过只是跳过交互式的逐工具提示——Omnigent 的 blast_radius 策略仍会对灾难性操作返回 DENY。
技能
/fanout 并行运行独立任务,每个任务拥有自己的 git worktree 和子智能体,各自开自己的 PR。 /cross-review 把实现者的 diff 发给不同厂商的审查者,存在阻塞性问题时会以修复形式循环回来,直到通过。 /investigate 把只读工作(调试、审计、代码理解)委派给子智能体,并汇总结果。
目标模式 在 Web UI 中,对于顶层的 Polly 会话,输入框旁会显示一个 Goal 按钮。点击 Goal,输入完成条件(例如"所有测试通过且实现完成"),然后选择 Start goal。Polly 会持续工作直到条件满足,并在对话中报告进度和完成情况。
Omnigent 以 /goal <条件> 命令的形式发送给 Polly——会话空闲时立即发送,若正在流式输出则排队到下一轮——使目标跨轮次持续生效,而不是一次性指令。
目标模式仅适用于 brain harness 为 claude-sdk 或 codex 的顶层 Polly 会话。这是 Polly 自身监督循环运行的 harness,而非上表中的子智能体 harness;子智能体会话从不显示该控件(包括 claude-native 和 codex-native 的会话)。omni polly 运行的是 Claude 变体;要使用 Codex brain harness,请在 Web UI 中新建 Polly 会话并选择 Codex harness。
在 Claude harness 上要提前停止,发送 /goal clear 即可。Codex 没有等价操作:在 Codex 上发送 /goal clear 会设置一个目标为字面字符串 clear 的目标,所以不要用它来停止。
目标也可能以失败告终:Codex 会报告 blocked、usageLimited 或 budgetLimited,Claude 则可将条件报告为 unachievable。
在只读(共享、仅查看)会话中该按钮不可用。
适用场景
需要并行推进的大型重构。 跨厂商代码审查:一个智能体写代码,另一个审查。 把专门的子任务路由给最合适的 harness。
GitHub 上的源代码