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