Agent Arena
同时调度多个 AI 模型执行同一任务,并排比较它们的解决方案,然后选择最佳结果应用到你的工作区。
[!warning] Agent Arena 是实验性功能。它在显示模式与会话管理方面存在已知限制。
Agent Arena 让你在同一任务上让多个 AI 模型相互竞争。每个模型都在自己独立的 Git 工作树中作为一个完全独立的代理运行,因此文件操作永远不会相互干扰。当所有代理完成后,你可以比较结果并选择一个胜者,将其合并回主工作区。
与子代理不同,子代理是在单个会话中委派聚焦的子任务,而 Arena 代理是完整的、顶级的代理实例——每个代理都有自己的模型、上下文窗口和完整的工具访问权限。
本页涵盖:
- 何时使用 Agent Arena
- 启动 Arena 会话
- 与代理交互,包括显示模式和导航
- 比较结果并选择胜者
- 最佳实践
何时使用 Agent Arena
Agent Arena 在你希望评估或比较不同模型如何处理同一问题时最为有效。最适用的场景包括:
- 模型基准测试:在实际代码库中评估不同模型在真实任务上的能力,而非使用合成基准
- 最佳选择 (Best-of-N):获取多个独立解决方案,然后挑选出最佳实现
- 探索方法:观察不同模型如何推理并解决同一个问题——对学习和获取洞察很有帮助
- 降低风险:对于关键变更,在提交前验证多个模型是否趋近于相似的实现方案
Agent Arena 比单个会话消耗更多 token(每个代理都有自己的上下文窗口和模型调用)。当比较的价值能证明成本合理时,它才最为有用。对于日常任务,如果你信任默认模型,单个会话效率更高。
启动 Arena 会话
使用 /arena 斜杠命令启动一个会话。指定要竞争的模型和任务:
/arena --models qwen3.5-plus,glm-5,kimi-k2.5 "将认证模块重构为使用 JWT 令牌"如果省略 --models,将会出现交互式模型选择对话框,让你从已配置的提供商中选择。
启动时发生什么
- 工作树设置:Qwen Code 为每个代理在
~/.qwen/arena/<session-id>/worktrees/<model-name>/下创建隔离的 Git 工作树。每个工作树精确镜像你当前工作目录的状态——包括暂存的更改、未暂存的更改以及未跟踪的文件。 - 代理生成:每个代理在自己的工作树中启动,拥有完整的工具访问权限及其配置的模型。代理按顺序启动,但并行执行。
- 执行:所有代理独立工作,无共享状态或通信。你可以监控它们的进度,并与其中任何一个交互。
- 完成:当所有代理完成(或失败)后,进入结果比较阶段。
与代理交互
显示模式
Agent Arena 目前支持进程内模式,所有代理在同一终端进程内异步运行。终端底部的标签栏允许你在代理之间切换。
[!note] 分屏显示模式计划在未来实现。 我们打算支持基于 tmux 和 iTerm2 的分屏布局,每个代理拥有独立的终端面板,实现真正的并排查看。目前仅支持进程内标签切换。
在代理间导航
在进程内模式下,使用键盘快捷键切换代理视图:
| 快捷键 | 操作 |
|---|---|
右方向键 | 切换到下一个代理标签 |
左方向键 | 切换到上一个代理标签 |
上方向键 | 将焦点切换到输入框 |
下方向键 | 将焦点切换到代理标签栏 |
标签栏显示每个代理的当前状态:
| 指示符 | 含义 |
|---|---|
● | 运行中或空闲 |
✓ | 成功完成 |
✗ | 失败 |
○ | 已取消 |
与单个代理交互
当查看某个代理的标签时,你可以:
- 发送消息 — 在输入区域输入内容,向代理发送额外指令
- 批准工具调用 — 如果代理请求工具批准,确认对话框会在其标签内显示
- 查看完整历史 — 滚动浏览代理的完整对话,包括模型输出、工具调用和结果
每个代理都是一个完整的、独立的会话。你能对主代理做的任何事情,都能对 Arena 代理做。
比较结果并选择胜者
当所有代理完成后,Arena 进入结果比较阶段。你会看到:
- 状态摘要:哪些代理成功、失败或已取消
- 执行指标:每个代理的持续时间、推理轮数、token 使用量和工具调用次数
- Arena 比较摘要:共同更改的文件与仅由某个代理更改的文件、行变更数量、token 效率,以及基于每个代理的 diff、指标和对话历史生成的高级方法摘要
一个选择对话框会列出成功的代理。选择一个将其更改应用到你的主工作区,或者放弃所有结果。按 p 键可以快速预览高亮代理的结果,按 d 键可以在选择胜者前切换查看该代理的详细 diff。
选择胜者后发生什么
- 胜出代理的更改会被提取为相对于基准的 diff
- diff 会被应用到你的主工作目录
- 所有工作树和临时分支会自动清理
如果你想在决定前检查完整的推理路径,选择对话框激活时,每个代理的完整对话历史仍可通过标签栏查看。
配置
Arena 的行为可以在 settings.json 中自定义:
{
"arena": {
"worktreeBaseDir": "~/.qwen/arena",
"maxRoundsPerAgent": 50,
"timeoutSeconds": 600
}
}| 设置 | 描述 | 默认值 |
|---|---|---|
arena.worktreeBaseDir | Arena 工作树的基目录 | ~/.qwen/arena |
arena.maxRoundsPerAgent | 每个代理的最大推理轮数 | 50 |
arena.timeoutSeconds | 每个代理的超时时间(秒) | 600 |
最佳实践
选择互补的模型
当你比较具有显著不同优势的模型时,Arena 最有价值。例如:
/arena --models qwen3.5-plus,glm-5,kimi-k2.5 "优化数据库查询层"比较同一模型家族的三个版本,其洞察力不如跨提供商比较。
保持任务自包含
Arena 代理独立工作,彼此无通信。任务应能在提示中完整描述,无需来回讨论:
好的示例:「将支付模块重构为使用策略模式。更新所有测试。」
效果较差的示例:「我们来讨论一下如何改进支付模块」——这需要对话,更适合单个会话。
限制代理数量
最多可以同时运行 5 个代理。实际上,2-3 个代理能在比较价值与资源成本之间取得最佳平衡。更多代理意味着:
- 更高的 token 成本(每个代理都有自己的上下文窗口)
- 总执行时间更长
- 需要比较的结果更多
先从 2-3 个开始,只有当比较价值能够证明增加数量是合理的时候再扩展。
在影响重大的决策中使用 Arena
当任务重要性足以证明运行多个模型是合理的时候,Arena 能大显身手:
- 为新模块选择架构
- 为复杂重构选择实现方案
- 从多个角度验证关键 Bug 修复
对于像重命名变量或更新配置文件这样的常规更改,单个会话更快、更划算。
故障排除
代理启动失败
- 确认
--models中的每个模型都已正确配置,且 API 凭据有效 - 检查你的工作目录是否是一个 Git 仓库(工作树需要 Git)
- 确保你对工作树基目录(默认为
~/.qwen/arena/)有写入权限
工作树创建失败
- 运行
git worktree list检查是否有来自之前会话的过期工作树 - 使用
git worktree prune清理过期工作树 - 确保你的 Git 版本支持工作树(
git --version,需要 Git 2.5+)
代理耗时过长
- 增加超时时间:在设置中配置
arena.timeoutSeconds - 降低任务复杂性——Arena 任务应聚焦且定义清晰
- 如果代理执行轮数过多,降低
arena.maxRoundsPerAgent
应用胜者失败
- 检查主工作目录中是否有未提交的更改可能导致冲突
- diff 以补丁形式应用——如果在会话期间你的工作目录发生了变化,可能会产生合并冲突
限制
Agent Arena 是实验性功能。当前限制包括:
- 仅限进程内模式:尚不支持通过 tmux 或 iTerm2 进行分屏显示。所有代理在单个终端窗口内运行,通过标签切换。
- 选择前无 diff 预览:你可以查看每个代理的对话历史,但在选择胜者前没有统一的 diff 查看器来并排比较解决方案。
- 不保留工作树:选择后工作树始终会被清理。没有保留它们以供进一步检查的选项。
- 无法恢复会话:退出后无法恢复 Arena 会话。如果在会话中途关闭终端,工作树会留在磁盘上,必须通过
git worktree prune手动清理。 - 最多 5 个代理:5 个并发代理的硬限制无法更改。
- 需要 Git 仓库:Arena 需要 Git 仓库来实现工作树隔离。无法在非 Git 目录中使用。
与其他多代理模式比较
Agent Arena 是 Qwen Code 中计划支持的多种多代理模式之一。Agent Team 和 Agent Swarm 尚未实现——下表描述的是它们预想的设计,仅供参考。
| Agent Arena | Agent Team(计划中) | Agent Swarm(计划中) | |
|---|---|---|---|
| 目标 | 竞争性:寻找同一任务的最佳解决方案 | 协作性:分工合作处理不同方面 | 批处理并行:动态生成工作线程处理批量任务 |
| 代理 | 预配置的模型独立竞争 | 团队成员协作,分配角色 | 按需生成工作线程,完成后销毁 |
| 通信 | 无代理间通信 | 直接点对点消息传递 | 单向:父代理汇总结果 |
| 隔离性 | 完全隔离:独立的 Git 工作树 | 独立会话,共享任务列表 | 每个工作线程拥有轻量级临时上下文 |
| 输出 | 选择一个解决方案应用到工作区 | 综合来自多个视角的结果 | 汇总并行处理的结果 |
| 最佳用途 | 基准测试,在模型方案之间做选择 | 研究、复杂协作、跨层工作 | 批量操作、数据处理、Map-Reduce 任务 |
下一步
探索与并行和委派工作相关的其他方法: