Skip to Content
用户指南功能特性智能体竞技场

Agent Arena

同时调度多个 AI 模型执行同一任务,并排比较它们的解决方案,然后选择最佳结果应用到你的工作区。

[!warning] Agent Arena 是实验性功能。它在显示模式与会话管理方面存在已知限制

Agent Arena 让你在同一任务上让多个 AI 模型相互竞争。每个模型都在自己独立的 Git 工作树中作为一个完全独立的代理运行,因此文件操作永远不会相互干扰。当所有代理完成后,你可以比较结果并选择一个胜者,将其合并回主工作区。

子代理不同,子代理是在单个会话中委派聚焦的子任务,而 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,将会出现交互式模型选择对话框,让你从已配置的提供商中选择。

启动时发生什么

  1. 工作树设置:Qwen Code 为每个代理在 ~/.qwen/arena/<session-id>/worktrees/<model-name>/ 下创建隔离的 Git 工作树。每个工作树精确镜像你当前工作目录的状态——包括暂存的更改、未暂存的更改以及未跟踪的文件。
  2. 代理生成:每个代理在自己的工作树中启动,拥有完整的工具访问权限及其配置的模型。代理按顺序启动,但并行执行。
  3. 执行:所有代理独立工作,无共享状态或通信。你可以监控它们的进度,并与其中任何一个交互。
  4. 完成:当所有代理完成(或失败)后,进入结果比较阶段。

与代理交互

显示模式

Agent Arena 目前支持进程内模式,所有代理在同一终端进程内异步运行。终端底部的标签栏允许你在代理之间切换。

[!note] 分屏显示模式计划在未来实现。 我们打算支持基于 tmux 和 iTerm2 的分屏布局,每个代理拥有独立的终端面板,实现真正的并排查看。目前仅支持进程内标签切换。

在代理间导航

在进程内模式下,使用键盘快捷键切换代理视图:

快捷键操作
右方向键切换到下一个代理标签
左方向键切换到上一个代理标签
上方向键将焦点切换到输入框
下方向键将焦点切换到代理标签栏

标签栏显示每个代理的当前状态:

指示符含义
运行中或空闲
成功完成
失败
已取消

与单个代理交互

当查看某个代理的标签时,你可以:

  • 发送消息 — 在输入区域输入内容,向代理发送额外指令
  • 批准工具调用 — 如果代理请求工具批准,确认对话框会在其标签内显示
  • 查看完整历史 — 滚动浏览代理的完整对话,包括模型输出、工具调用和结果

每个代理都是一个完整的、独立的会话。你能对主代理做的任何事情,都能对 Arena 代理做。

比较结果并选择胜者

当所有代理完成后,Arena 进入结果比较阶段。你会看到:

  • 状态摘要:哪些代理成功、失败或已取消
  • 执行指标:每个代理的持续时间、推理轮数、token 使用量和工具调用次数
  • Arena 比较摘要:共同更改的文件与仅由某个代理更改的文件、行变更数量、token 效率,以及基于每个代理的 diff、指标和对话历史生成的高级方法摘要

一个选择对话框会列出成功的代理。选择一个将其更改应用到你的主工作区,或者放弃所有结果。按 p 键可以快速预览高亮代理的结果,按 d 键可以在选择胜者前切换查看该代理的详细 diff。

选择胜者后发生什么

  1. 胜出代理的更改会被提取为相对于基准的 diff
  2. diff 会被应用到你的主工作目录
  3. 所有工作树和临时分支会自动清理

如果你想在决定前检查完整的推理路径,选择对话框激活时,每个代理的完整对话历史仍可通过标签栏查看。

配置

Arena 的行为可以在 settings.json 中自定义:

{ "arena": { "worktreeBaseDir": "~/.qwen/arena", "maxRoundsPerAgent": 50, "timeoutSeconds": 600 } }
设置描述默认值
arena.worktreeBaseDirArena 工作树的基目录~/.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 TeamAgent Swarm 尚未实现——下表描述的是它们预想的设计,仅供参考。

Agent ArenaAgent Team(计划中)Agent Swarm(计划中)
目标竞争性:寻找同一任务的最佳解决方案协作性:分工合作处理不同方面批处理并行:动态生成工作线程处理批量任务
代理预配置的模型独立竞争团队成员协作,分配角色按需生成工作线程,完成后销毁
通信无代理间通信直接点对点消息传递单向:父代理汇总结果
隔离性完全隔离:独立的 Git 工作树独立会话,共享任务列表每个工作线程拥有轻量级临时上下文
输出选择一个解决方案应用到工作区综合来自多个视角的结果汇总并行处理的结果
最佳用途基准测试,在模型方案之间做选择研究、复杂协作、跨层工作批量操作、数据处理、Map-Reduce 任务

下一步

探索与并行和委派工作相关的其他方法:

  • 轻量级委派子代理在你的会话中处理聚焦的子任务——当你不需要模型比较时更合适
  • 手动并行会话:自己在不同终端中运行多个 Qwen Code 会话,配合 Git 工作树 实现完全手动控制
Last updated on