单篇 · 无期号ARTICLE
领域 Agent 与框架
5 分钟搭建 Polly 多 Agent 工作流
本期要点POINTS
本期要点
关键实测数据DATA
关键实测数据
Polly 是 Omnigent 自带的编排 Agent——她本人不写代码,她的工作是拆任务、分活、协调、交叉审查。做完上一期的横评后,我就在自己机器上跑了 Polly,这里把搭建过程记下来,你跟着走一遍,5 分钟就能跑起来。
前提条件
你电脑上已经装了的 Agent CLI 越多,Polly 能调度的"人手"就越多。理想情况是装了这些:
claude # Claude Code
codex # Codex (OpenAI)
hermes # Hermes Agent
cursor-agent # Cursor
pi # Pi
opencode # OpenCode
少几个也没关系,Polly 会在启动时自动检测可用的,只调度那些找到的。
第一步:安装 Omnigent(如果还没装)
一行命令搞定:
curl -fsSL https://raw.githubusercontent.com/omnigent-ai/omnigent/main/scripts/install_oss.sh | sh
或者用 Homebrew:
brew install omnigent-ai/tap/omnigent
装完验证:omni --version 应该看到 omnigent x.y.z。
第二步:拉 Polly
Omnigent 安装后,Polly 已经在内了——不需要额外下载。直接跑:
omni run examples/polly/
就是这么简单。
第三步:看 Polly 干活
跑起来后你会看到 Omnigent 的 Web UI(默认 http://localhost:6767),Polly 的 session 在那里。她的工作流程像一条流水线:
你给任务 → Polly 拆解 → 检测可用 Agent
↓
├── Claude Code → 实现模块A
├── Codex → 实现模块B
└── Pi → 调研文档
↓
收件箱收齐所有结果
↓
交叉审查(Claude 写的 Codex 审,反过来也审)
↓
每个实现者开自己的 PR → 你决定要不要合并
全程你可以在 Web UI 的 Subagents 面板里点开任何一个子 Agent 的终端,实时看到它正在做什么,甚至可以接管。
第四步:给 Polly 一个真实任务
别给 hello world。Polly 的设计目标是大任务——复杂点的重构、多模块功能、跨文件改造。
举个例子,你在一个项目里想加个新功能,可以这么跟 Polk 说:
"在
app/services/下新增一个通知服务,支持邮件和 Slack 两种推送方式。已有的用户模块在app/models/user.py。需要完整的 CRUD、单元测试、以及对应的迁移文件。"
Polly 收到后会:
- 拆成:设计 → 实现通知模型 → 实现邮件通道 → 实现 Slack 通道 → 实现 API 层 → 写测试
- 并行分派给不同的 Agent
- 每个子 Agent 在自己的独立 git worktree 里工作
- 完成后做交叉审查
- 每人开 PR
一个小技巧
Polly 有系统级策略配置,可以限制每轮最多派多少活(默认 6)、是否允许 push 到远程等。在 examples/polly/config.yaml 里能找到:
guardrails:
policies:
spawn_bounds:
arguments:
max_dispatches_per_turn: 6 # 每轮最多派 6 个任务
如果你想先试试水,把 max_dispatches_per_turn 改成 2 或 3,等熟悉了再放开。
踩坑提醒
- Polly 写不了代码——她是纯编排。如果你只装了 Claude Code 一个 Agent,Polly 也只能调度 Claude Code,那就没意义了。至少要两个不同的 Agent(Claude + Codex 或 Claude + Hermes)才能体现跨供应商交叉审查的价值。
- git worktree——每个子 Agent 在独立 worktree 里跑,所以你的项目必须是一个 git 仓库。
- 首次运行——Polly 会做一次预检,看看哪些 Agent 可用。如果某个 CLI 没找到,她会静默跳过,不会报错。
Polly 目前还是实验性功能(0.5.1),但方向清晰:把人工切换 Agent 的上下文损耗降到零。5 分钟搭完跑一次,你就会理解为什么 Agent 编排层值得关注。试试看。