多智能体框架有个长期被忽视的暗病:当多个 Agent 共用一段对话历史时,上下文经常被「压平」成一个匿名字符串,导致角色归属丢失、缓存失效、上下文超线性膨胀。9 月 1 日 Swarms 发布 v15「Akira」,净减近万行代码,核心改动就是把所有多智能体结构的共享上下文,从 return_history_as_string() 的扁平 blob 换成真实的 [{role, content}] 对话轮次。
底层机制通俗拆解
旧实现里,每个 Agent 跑完把整段对话当字符串塞回共享 transcript,下一个 Agent 读到的就是「Researcher: ...\nAnalyst: ...」这样一段无主文本——它分不清哪些是自己刚说的、哪些是同伴说的,Prompt 缓存因此永远命中不了前缀,每轮都付全价。Akira 改成带角色的对话轮次后,Agent 自己的输出作为 assistant 轮次到达、同伴输出作为带标签的 user 轮次到达,缓存前缀得以复用,上下文也按真实结构增长而非凭空膨胀。实测中,一段错误的上下文折叠曾让 AgentRearrange 第 6 轮凭空多出 1,157 字符(正确值仅 116)。
本次核心优化点
除上下文重构,v15 还 ship 了两块实用能力:一是自主 Agent 循环(max_loops="auto")内置 16 个可用工具(文件、shell、grep、子 Agent、控制流),过去这些工具调用会因属性缺失静默报错;二是 DynamicToolLoader,不再每次请求都发送全部工具 schema,而是把工具注册为可延迟发现,通过单个 tool_search 按需取用,把 16 个内置工具约 2,600 token 的常驻开销从「每请求必付」转为「按需触发」。
技术取舍与固有局限
代价是破坏性重构与删减:AOP(5,633 行)、BaseSwarm/BaseStructure(2,637 行)被整体移除,27 个零调用站点模块清理,每个删除都经过全仓库 grep 验证。这意味着从旧版本升级需要重新审视自定义结构。此外 DynamicToolLoader 把工具塞进缓存前缀持续付费,对工具特别多的场景(一个 MCP Server 可再加 40+ schema)仍是成本压力,并非免费午餐。
同类方案对比
在 2026 多智能体框架格局里,LangGraph 主打有状态图、OpenAI Agents SDK 主打轻量 handoff、CrewAI 主打角色化 crew。Swarms v15 的差异化在于「诚实的上下文」——它直面前几代框架把多 Agent 历史压平导致的缓存与归属 bug,用结构化对话轮次兜底。对需要长程、多步、可审计协作的团队,这点比花哨的工具编排更底层。
开发者落地适配建议与踩坑提醒
如果你在用 Swarms 跑多 Agent 流水线,升级 v15 前务必先 grep 自定义 structure 是否依赖被移除的 BaseSwarm/BaseStructure;上线后重点观察两点:其一,长程任务的上下文长度是否从超线性增长回到线性;其二,缓存命中率是否明显回升以验证 token 成本下降。对仍用扁平字符串拼接多 Agent 历史的自研框架,建议直接借鉴这次重构思路——把「谁说的」当作一等公民,而非事后补标签。