基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-10-30 11:05

多 Agent 是否更强?先统一评测条件

dev.to · AI#多智能体#基准测试#工程评估
Editor brief · 编辑速览

文章指出,四 Agent 击败游戏首领与五十 Agent 建设文明的实验目标和条件不同,不能据此判断规模优势。它建议围绕自身任务建立评估表,衡量并行收益能否覆盖协调开销。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

4 个 AI Agent 打败了 Minecraft 的末影龙,50 个 Agent 组成的殖民地却遇到了资源短缺。两个故事放在一起,很容易得出「小团队比大集群更有效」的结论。但原文真正想说的是:它们根本不是一场公平比赛。

作者没有证明多 Agent 更强,而是给出了一套评估方法:在相同任务和预算下,把成功率、耗时、资源消耗与协调成本摆在一起。对正在尝试 AI 并行编程的开发者,这比观看一场热闹的演示更有参考价值。

4 个打赢、50 个受挫,为什么不能拿来排名

先看两组实验究竟做了什么。

4 个 Agent 的实验在随机生成的世界里进行,难度为 Easy。它们编写了 2,783 个程序,死亡 605 次,用 27 小时 14 分钟完成目标。据研究作者介绍,Agent 通过聊天和共享记忆协调,没有人类预先分配角色,也没有人为提供游戏逻辑。

另一组 50 个 Agent 的目标是建立繁荣的文明。它们产生了约 5,900 条消息,很快耗尽附近的树木;总共 34 次死亡中,有 22 次发生在第一个夜晚。它们也形成了层级结构,并通过共享笔记管理食物,但更多成员同时带来了更多食物需求。

这些数字展示了不同的能力和失败方式,却不能证明哪种配置更好。两组实验的目标、模型、Agent 数量、运行时长和环境条件都不同,也没有提供统一条件下的单 Agent 对照。

Agent 数量是配置项,完成目标的效率才是评估对象。

单 Agent 的优势是协调路径少:不用处理成员分歧、重复分工和共享账本的一致性。多 Agent 可以并行搜集信息、拆分独立任务,也可能在某个成员卡住时继续推进,但要额外承担消息、集成、冲突和重试的成本。

关键不在于系统做了多少动作,而在于这些动作推进了多少目标。如果任务的每一步都依赖上一步,多几个 Agent 可能只是多几份上下文,以及更多等待。

先约定怎么判输赢,再启动 Agent

原文最实用的建议,是先把任务写成可观察的完成条件。

「做点厉害的东西」很难评分;「收集 20 单位资源 A,并放进指定仓库」就清楚得多。后者能判断是否完成,也能记录失败发生在哪里。

接着固定六项条件:

  • 单 Agent 和多 Agent 接收相同目标,使用相同成功标准。
  • 设定相同的总预算,可以是 token、工具调用次数或实际经过时间的上限。
  • 保持初始环境、工具、权限和外部信息等价。
  • 使用多个种子或初始状态重复试验。
  • 统一在成功、失败或耗尽预算时停止。
  • 每轮记录结果、耗时、token、动作和协调消息。

这里最容易漏算的是总预算。4 个 Agent 各自拿到一份完整额度,不能直接与只拿到一份额度的单 Agent 比较。并行模型调用都要计入账单。

消息也要先统一口径:一条广播送达 4 个 Agent,究竟算 1 条广播,还是 4 次投递?两种定义都能使用,但不能中途切换。

如果真要做 Minecraft 实验,原文提到 Mineflayer 可以提供机器人与游戏世界的接口。它提供 JavaScript API,也可通过 Python 使用,涵盖移动、背包、合成、挖掘、建造和聊天。不过,作者没有复现上述实验,下面的程序也不负责运行 Agent,只负责统计运行后的日志。

这份评分表为什么不直接选出冠军

每轮试验在 trials.jsonl 中保存一行 JSON。原文给出的最小记录如下,它展示了相同起点下两种配置的记账方式:

{"setup":"single","trial":"seed-01","success":true,"seconds":840,"tokens":12000,"actions":83,"messages":0}
{"setup":"swarm-4","trial":"seed-01","success":true,"seconds":510,"tokens":27800,"actions":121,"messages":34}

要看的是两行相同的 trial:seed-01 表示它们共享同一个初始条件。这只是记录格式示例,不能据此认定多 Agent 已经获胜。

下面是原文的 score.py,用于检查必需字段并按配置汇总结果:

import json
import statistics
import sys
from collections import defaultdict
from pathlib import Path

REQUIRED = {"setup", "trial", "success", "seconds", "tokens", "actions", "messages"}

def load_trials(path):
    groups = defaultdict(list)
    for line_no, line in enumerate(Path(path).read_text().splitlines(), 1):
        if not line.strip():
            continue
        row = json.loads(line)
        missing = REQUIRED - row.keys()
        if missing:
            raise ValueError(f"line {line_no}: missing {sorted(missing)}")
        if row["seconds"] < 0 or row["tokens"] < 0:
            raise ValueError(f"line {line_no}: seconds and tokens must be non-negative")
        groups[row["setup"]].append(row)
    return groups

def summarize(rows):
    successes = [r for r in rows if r["success"]]
    return {
        "trials": len(rows),
        "success_rate": len(successes) / len(rows),
        "median_seconds_all": statistics.median(r["seconds"] for r in rows),
        "median_tokens_all": statistics.median(r["tokens"] for r in rows),
        "median_actions_all": statistics.median(r["actions"] for r in rows),
        "median_messages_all": statistics.median(r["messages"] for r in rows),
        "median_seconds_success": (
            statistics.median(r["seconds"] for r in successes) if successes else None
        ),
    }

def main():
    path = sys.argv[1] if len(sys.argv) > 1 else "trials.jsonl"
    groups = load_trials(path)
    if not groups:
        raise SystemExit("No trial rows found")
    for setup, rows in sorted(groups.items()):
        print(setup, json.dumps(summarize(rows), sort_keys=True))

if __name__ == "__main__":
    main()

最该留意的是 median_seconds_all 与 median_seconds_success 两处统计:前者保留失败和超时试验的耗时,后者只看成功试验,避免只展示成功案例带来的错觉。

执行 python3 score.py trials.jsonl,就能分别看到各配置的成功率,以及耗时、token、动作和消息数量的中位数。中位数比平均值更不容易被单次异常快的结果拉偏,但仍应保存完整记录。

作者刻意没有把这些指标揉成一个总分。假设多 Agent 成功时更快,却更贵、失败更多,那么是否采用,要看业务能否接受重试,以及截止时间是否比成本更重要。

消息数量也不是协作质量。大量消息可能在交换有效信息,也可能只是反复确认。需要抽样读消息,才能分辨两者。

我的判断

我赞成先从单 Agent 建立基线,再判断是否增加成员。它让讨论从「哪个演示更震撼」回到「我的任务有没有收益」。

但原文没有提供作者自己完成的受控对照数据。关于多 Agent 适用条件的建议,应当看作工程经验和实验设计指导,不能当作已经验证的性能结论。

这份脚本也只是起点。虽然保存了 trial,统计时却只按 setup 分组,没有检查两组是否覆盖相同的初始条件,也没有计算成对差异或结果分布。它检查必需字段,以及耗时、token 是否非负,但没有完整校验字段类型、重复记录和其他计数。要支撑生产选型,还需要补充这些环节。

原文提出可以从成功、时间或质量判断收益,但当前记录里没有质量字段。对代码任务,测试通过、行为正确、可维护程度未必能由一个 success 布尔值充分表达,成功标准必须提前明确。

相比一次性拉起很多成员,我更认可作者建议的折中路径:少量 worker 接收边界清晰的任务,各自返回可验证结果,再由集成步骤检查重复和矛盾。前提是任务确实能拆开。如果所有工作都挤在同一个共享文件、协调者或受限工具上,加人很难解决吞吐瓶颈。

能拿来做什么

  • 给日常 AI 编程建立一个单 Agent 基线,选定明确任务和验收标准,记录成功率、耗时与总 token,再用相同起点测试多 Agent 配置。
  • 前端或 Node 项目尝试并行处理时,优先选择结果能够分别验收的独立任务,并安排明确的集成检查;连续依赖前一步结果的工作,可以先交给单 Agent。
  • 给运行日志补上模型版本、提示词版本、工具权限和停止原因,保留失败记录,并检查两种配置是否完成了相同的一组试验。
  • 增加 worker 前先查看瓶颈,抽样检查协调消息。如果时间主要花在共享资源等待、重复工作或结果冲突上,先修任务分工和共享状态管理。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
谷歌收拢编程产品,Jules 将停运
下一篇
给 Agent API 设置可见的重试预算

资讯速览

dev.to · AI · 2026-10-30 11:05

AI 评分 8.0 / 10

相关标签

#多智能体#基准测试#工程评估

继续阅读

  • 用单个 Cloudflare Worker 承载 AI 视频应用
  • 谷歌收拢编程产品,Jules 将停运
  • 给 Agent API 设置可见的重试预算
  • Visual Studio 十月更新改善 AI 与 Git 工作流
  • Android Agent 用任务游标执行跨应用操作