Technical Report · EvoX Swarm Mode

EvoX 蜂群模式
设计与实战验证报告

从论文数据到生产落地:用第一性原理 + 剃刀原理 + 对抗性验证,把 LLM 从“传递链路”中移除,让并行 Worker swarm 替代理性代理的接力损耗。

70.7%Swarm 模式准确率
38.5%Sub-Agent 模式
26.3%单上下文模式
Swarm 蜂群模式70.7%
Sub-Agent38.5%
Single Context 单上下文26.3%
01

背景与动机

EvoX 论文的核心发现指出:同一模型、同一任务,组织方式不同,结果天差地别。当问题被拆成多个独立 slot 并行求解,再由确定性程序汇合时,准确率可达 70.7%;而让 LLM 扮演“Sub-Agent”互相传递结果,准确率跌至 38.5%;传统的单上下文模式只有 26.3%。

数据背后的关键事实:Sub-Agent 模式虽然看起来更接近“智能体协作”,却丢失了 166 个正确答案,答案保留率仅 55.5%。这意味着接近一半的可用信息在传递过程中被改写、压缩或误读。

核心问题
166
Sub-Agent 模式丢失的正确答案数量
保留率
55.5%
Sub-Agent 答案经多轮传递后的存活比例

根本原因:LLM 在传递链路上做“重新理解”

LLM 不是无损信道。当一个 Agent 把结果“总结”给下一个 Agent 时,它实际上在进行新一轮的推理与生成。这一行为会引入三层损耗:

  • 语义漂移(Semantic Drift):关键词、约束条件、数值精度在转述中被改写。
  • 上下文压缩(Context Loss):为了塞进下一段 prompt,中间结果被迫截断,细节不可逆丢失。
  • 幻觉注入(Hallucination Injection):Sub-Agent 会基于自己的理解“补全”缺失信息,产生原本不存在的结论。

因此,优化的首要目标不是让 LLM 更好地“传递”,而是把 LLM 从传递链路中移除

02

第一性原理设计

在动手写代码之前,先确立三条不可再约的公理和一条奥卡姆剃刀。

  • 公理 A:LLM 是推理 + 生成引擎,不是传递 + 汇总引擎。它的价值在“第一次思考”时最大;让它反复搬运中间结果,只会放大误差。
  • 公理 B:上下文窗口稀缺,污染不可逆。每引入一段非必要上下文,都会稀释有效信号;一旦污染,无法通过后续 prompt 完全洗回。

奥卡姆剃刀

切掉 LLM 在传递链路中的位置。能由程序搬运的数据,绝不经过 LLM;能由文件系统承载的状态,绝不塞进 prompt。

三条工程约束

  1. 原子化 + 稳定 ID:每个 slot 只负责一个最小可交付单元,拥有全局唯一、可重入的 slot_id。
  2. 执行隔离:slot 之间只通过文件/JSON 交换数据,Worker 进程互不阻塞,失败可独立重试。
  3. 程序化汇合:最终组装必须是确定性程序(Python Collector),而非让 LLM 再次“读一遍然后写一遍”。
03

架构设计

整体数据流

Claude Code
task_map.json
Hermes 调度器
并行 Worker
Python Collector
验证

Claude Code 只负责“拆解”与生成 task_map.json;Hermes 只负责按依赖调度;每个 Worker 只写自己的 slot 文件;Collector 按顺序拼接并校验;最终验证程序确认完整性。

Hermes

只看覆盖率数字与依赖图:哪些 slot 已完成、哪些可并行、哪些必须等待。

Claude Code Worker

只管自己被分配的 slot。不读其他 slot 的输出,不写公共状态。

Collector

确定性程序,按 task_map 中的顺序读取文件并拼接,不做任何 LLM 中转。

task_map.json schema

{
  "project": "pmo-platform-report",
  "slots": [
    {
      "slot_id": "css-base",
      "file_path": "parts/css-base.html",
      "dependencies": [],
      "parallel_group": "wave-1",
      "description": "CSS variables + base typography"
    },
    {
      "slot_id": "css-components",
      "file_path": "parts/css-components.html",
      "dependencies": [],
      "parallel_group": "wave-1",
      "description": "Component CSS + responsive rules"
    },
    {
      "slot_id": "assembly",
      "file_path": "index.html",
      "dependencies": ["css-base", "css-components", "..."],
      "parallel_group": "wave-5",
      "description": "Deterministic full assembly"
    }
  ],
  "max_parallel_workers": 3,
  "collector": "scripts/assemble.py"
}

与 project-blueprint 的关系

在既有 project-blueprint 工作流中,本架构替换的是阶段三“实现”。原本由单一长上下文 LLM 逐步编码的阶段,被替换为:

  1. 阶段 3a:拆解 → Claude Code 输出 task_map.json 与 slot 清单。
  2. 阶段 3b:蜂群执行 → Hermes + Worker swarm 并行完成所有 slot。
  3. 阶段 3c:程序化汇合 → Python Collector 组装、验证、输出最终产物。
04

swarm-execution Skill

文件位置:~/.hermes/skills/software-development/swarm-execution/SKILL.md

该 skill 把蜂群模式封装成可复用的执行协议。它不关心业务逻辑,只关心“如何把一个大任务切小、并行执行、再安全地拼回来”。

5 步执行流程

  1. 环境准备:创建 parts/ 目录,校验目标路径,初始化状态文件。
  2. 拆解(Decompose):Claude Code 读取完整需求,输出 task_map.json 与每个 slot 的规格。
  3. 确认闸门(Approval Gate):人类确认 slot 清单、依赖与并行分组; skill 只在通过后才启动 Worker。
  4. Worker 执行:Hermes 按 wave 与 max_parallel_workers 调度 Claude Code Worker,每个 Worker 只写自己的 slot 文件。
  5. 汇合与验证:Collector 拼接所有 slot,验证大小、标签、结构,输出最终产物。

关键特性

特性说明值 / 状态
并行上限同一 wave 内最多同时运行的 Worker 数,防止资源耗尽3
全链路零 LLM 中转slot 之间只通过文件交换,Hermes 只读取状态 JSON已保证
slot 级幂等重试每个 slot 独立文件路径,失败可单独重跑而不污染其他 slot已保证
依赖 DAGwave 按依赖拓扑生成,无环图自动排序已保证
程序化汇合最终组装由 Python 脚本完成,非 LLM 二次生成已保证
05

实战验证 — PMO 平台报告重构

目标

将一个 61 KB 的单文件 HTML 报告,按功能边界拆成 11 个独立 slot,通过蜂群模式并行重建,最终由 Collector 组装为完整页面。

拆解方案

Slot ID内容文件状态
css-baseCSS 变量 + 基础排版parts/css-base.html✅ 1.3 KB
css-components组件 CSS + 响应式parts/css-components.html✅ 13.8 KB
tab-systemTab 切换按钮parts/tab-system.html✅ 0.6 KB
sidebar两个侧边导航parts/sidebar.html✅ 1.3 KB
hero两个 Hero 区域parts/hero.html✅ 0.8 KB
scheme-content落地方案 7 章节parts/scheme-content.html✅ 14.8 KB
report-content-a调研报告前半parts/report-content-a.html✅ 10.1 KB
report-content-b调研报告后半parts/report-content-b.html✅ 14.0 KB
footer页脚 + 回顶parts/footer.html✅ 0.2 KB
scripts交互 JSparts/scripts.html✅ 3.1 KB
assembly完整组装index.html✅ 61.7 KB

执行时间线

Wave 1 并行

基础设施样式优先,两个 CSS slot 无依赖,可并行启动。

css-base css-components
Wave 2 并行

页面骨架与导航结构,彼此独立,可并行。

tab-system sidebar hero
Wave 3 并行

内容主体拆为三块,降低单 slot 上下文长度,提升生成质量。

scheme-content report-content-a report-content-b
Wave 4 顺序

页脚与交互脚本,依赖前文 DOM 结构已确定。

footer scripts
Wave 5 200+ 秒 · 唯一 LLM 环节

assembly slot 由 Collector 触发最终确认,读取全部 parts 并生成 index.html。这是整个链路中唯一合理的 LLM 参与点:把已生成的零件组合成最终产物。

assembly
06

对抗性验证结果

验证不是为了证明“没有 bug”,而是主动寻找“哪里可能丢失信息”。以下 10 项验证覆盖了结构、内容、运行时、安全性四个维度。

验证项方法结果
内容完整性 对比原始产物与重构产物的 <h2><section>.card<table> 数量 ✅ 零丢失
文件大小 对比原始 61465 B 与组装后大小 ✅ 61687 B
Tab 切换 浏览器点击 + JS API 调用,检查 active 类与内容显隐 ✅ 正常
JS 错误 浏览器控制台 browser_console 监控 ✅ 0 错误
CSS 变量 检查 :root 中 CSS 自定义属性定义 ✅ 12 个全部保留
响应式 检查 CSS media queries 断点与移动端布局 ✅ 767 px / 1025 px
LLM 中转检查 逐段审查链路:拆解→JSON→Hermes→Worker→Collector→验证 ✅ assembly 唯一 LLM 环节(合理)
内容丢失检查 grep 关键词计数:关键术语、章节标题、组件类名 ✅ 所有术语存在
OOM 风险 执行期间 free -h 监控,观察内存峰值 ✅ 内存充足
并行安全 确认所有 Worker 写入独立文件路径,无共享可变状态 ✅ 无冲突
结论

蜂群模式在真实重构任务中实现了零信息丢失。文件大小、结构、交互行为均与原始产物保持一致。

关键洞察

assembly 是唯一合理的 LLM 环节。它不是“中转”,而是“最终确认”:把已验证的零件组合成可交付产物。

可复用性

同一 swarm-execution 协议可套用到任何 HTML、文档、代码生成任务,只需替换 task_map.json