iterative 是推荐拓扑。center 读取共享记忆、拆分任务并并行分发给子 Agent;
子 Agent 可以在执行过程中继续调用其他 Agent,所有调用完成后结果返回 center
进行最终综合。
flowchart TD
U["用户任务"] --> C0["center 读取记忆、拆解和分发"]
C0 --> P["planner"]
C0 --> K["critic"]
C0 --> R["refiner"]
C0 --> J["judger"]
P <-. "按需互相调用" .-> K
K <-. "按需互相调用" .-> R
R <-. "按需互相调用" .-> J
P --> W["等待全部调用完成"]
K --> W
R --> W
J --> W
W --> C1["center 汇总结果并更新记忆"]
C1 --> A["最终回答"]
--backend mock|hf
--text-model-source local|remote
--model <Hugging Face model>
--device cpu|cuda|cuda:0
--communication text|latent
--topology iterative|sequential|hierarchical
--transport local|tcp|grpc
--memory auto|memory|sqlite|chroma
--max-agent-rounds N
--max-agent-calls N
--save-log
--log-path <directory>
完整帮助:
uv run python hiveworks_run.py --help
uv run python hiveworks_gui.py --help
Benchmark
--models <one or more model IDs>
--datasets <one or more dataset IDs>
--feature-modes no_agent text_multi_agent latent_multi_agent
--repeats N
--max-samples N
--batch-size N
--latent-steps N
--max-new-tokens N
--device auto|cpu|cuda|cuda:0
--output-dir <directory>
--shard-name <machine label>
--resume <run directory>
--allow-unsafe-code-execution
完整帮助:
uv run python evaluate_benchmarks.py --help
uv run python aggregate_benchmarks.py --help
测试
运行评测与聚合相关测试:
uv run python -m unittest tests.test_evaluation tests.test_evaluation_report -v
HiveWorks
HiveWorks 是一个支持文本消息与潜向量消息的多智能体协作系统。它提供统一的 Agent 协议、可切换的协作拓扑、共享记忆、流式终端与网页 GUI、结构化运行日志,以及面向 六个通用数据集的可恢复评测和多机结果聚合流程。
项目包含两条相互独立但共享底层模型能力的使用路径:
hiveworks_run.py或hiveworks_gui.py处理用户任务;evaluate_benchmarks.py比较 HiveWorks 的三种功能模式,并由aggregate_benchmarks.py生成 Table 1 风格报告。核心能力
iterative、sequential、hierarchicalcenter、planner、critic、refiner、judgertext文本 JSON、latent量化潜状态local、TCP、gRPC安装
需要 uv 与传统 pip 两种安装方式、GUI/CLI/Benchmark 完整命令时,请阅读 简易运行指南。
环境要求
>= 3.14项目统一使用
uv管理环境,不需要直接调用python、pip或python -m pip。复制环境变量模板:
按需修改
.env。密钥和访问令牌不要提交到 Git。pyproject.toml同时声明了hiveworks、hiveworks-gui、hiveworks-eval和hiveworks-aggregate命令。直接从源码运行时,推荐使用本文中的uv run python <入口脚本>。快速开始
Mock 后端
Mock 后端不下载模型,适合验证拓扑、事件、日志、GUI 和传输流程:
本地 Hugging Face 文本协作
本地 Hugging Face Latent 协作
latent通信仅支持本地模型。它把语义模型状态编码为量化潜向量并作为接收 Agent 的 软前缀,在线缆上不传输自然语言 payload;当前运行时 Agent 仍可能在本地生成文本, 再由后端编码为潜状态。DeepSeek 远程文本协作
先在
.env中配置:运行:
--text-model-source remote必须与--communication text一起使用。网页 GUI
启动亮色单页 GUI:
默认地址为
http://127.0.0.1:8765/,启动后会自动打开浏览器。常用参数:GUI 提供:
logs目录选择结构化日志,复刻历史运行现场。GUI 上传的是
hiveworks_run.py --save-log产生的完整 JSON 日志,不是 benchmark 目录中的samples.jsonl。协作运行时
默认架构
iterative是推荐拓扑。center读取共享记忆、拆分任务并并行分发给子 Agent; 子 Agent 可以在执行过程中继续调用其他 Agent,所有调用完成后结果返回center进行最终综合。flowchart TD U["用户任务"] --> C0["center读取记忆、拆解和分发"] C0 --> P["planner"] C0 --> K["critic"] C0 --> R["refiner"] C0 --> J["judger"] P <-. "按需互相调用" .-> K K <-. "按需互相调用" .-> R R <-. "按需互相调用" .-> J P --> W["等待全部调用完成"] K --> W R --> W J --> W W --> C1["center
汇总结果并更新记忆"] C1 --> A["最终回答"]
默认 Agent:
centerplannercriticrefinerjudgerTopology
iterativecenter动态分发;子 Agent 并行执行并可互相调用sequentialplanner → critic → refiner → judgerhierarchicalplanner、critic、refiner并行输出,再由judger汇总资源保护参数:
--max-agent-rounds:限制并行子 Agent 的执行/恢复轮数;--max-agent-calls:限制一个 session 中累计发生的子 Agent 调用次数。前者控制调度可以推进多少轮,后者控制调用边的总数量。达到限制时运行会明确失败, 而不是无限递归。
Communication
textlatent这里的
text/latent是运行时通信表示。它与后文 benchmark 的No Agent/Text Multi-Agent/Latent Multi-Agent三种评测功能模式不是同一层参数。比较两种通信表示的线缆开销:
Transport
localtcpgrpc示例:
Shared Memory
memorysqlite.hiveworks-memorychromaauto所有 Agent 共享同一个记忆库。每条记忆包含来源、时间、主题、摘要、正文和 metadata。
事件、日志与现场复刻
终端事件
默认终端会输出 session、Agent、消息传输、共享记忆和调用链事件,并流式显示模型输出。
输出机器可读 JSON Lines:
显示传输 payload 预览:
结构化运行日志
为每次运行保存完整 JSON:
输出文件:
日志包含:
run_id、session_id、状态和起止时间;日志采用临时文件加原子替换的方式写入。运行失败时,只要日志目录可写,也会保存错误现场。
.env加载顺序当前进程已有环境变量始终优先,CLI 默认值最低。文件加载规则为:
HIVEWORKS_ENV_FILE时,只加载这个显式文件;.env,再加载项目根目录的.env;.env比项目根目录.env优先。常用变量:
HIVEWORKS_BACKENDmock或hfHIVEWORKS_MODELHIVEWORKS_DEVICEcpu、cuda、cuda:0等HIVEWORKS_COMMUNICATIONtext或latentHIVEWORKS_TEXT_MODEL_SOURCElocal或remoteHIVEWORKS_TOPOLOGYHIVEWORKS_TRANSPORTlocal、tcp、grpcHIVEWORKS_MEMORYmemory、sqlite、chroma、autoHIVEWORKS_MAX_AGENT_ROUNDSHIVEWORKS_MAX_AGENT_CALLSHIVEWORKS_SAVE_LOGHIVEWORKS_LOG_PATHHF_HOME/HF_TOKENDEEPSEEK_API_KEY完整模板见 .env.example。
六数据集评测
评测入口:
该入口比较的是同一 HiveWorks 的三种功能启用方式,不是三个独立模块:
no_agentsingletext_multi_agenttext_maslatent_multi_agentlatent_mas--feature-modes是推荐参数名;旧的--methods仍作为兼容别名保留。JSON 中继续保存 稳定内部 ID,并同时提供method_display_name,确保旧日志、断点和聚合键不失效。数据集与指标
arc_easyarc_challengegsm8kmedqambppplushumanevalplus指标:
Table 中的
Latent feature gain表示Latent Multi-Agent相对Text Multi-Agent的准确率百分点差、token 降幅和加速倍数。HTML 报告仅对 严格优于Text Multi-Agent的 Latent 数值和 gain 单元格进行强调。小规模验证
--max-samples N表示每个数据集最多取前 N 条,不是所有数据集合计 N 条。上述命令的进度总数为:
常用取值:
--max-samples 1:仅用于检查完整调用链;当--repeats 1时,每个 Acc. 单元格只能是0.0或100.0;--max-samples 10:小规模实验;单个 repeat 的 Acc. 分辨率为 10 个百分点;--max-samples -1或省略:使用每个数据集的全部样本。论文参数与 Qwen3.5 扩展
默认采样参数:
每个 Agent 的最大输出长度:
可用
--max-new-tokens统一覆盖。参考论文评测 Qwen3-4B/8B/14B;本项目默认使用
Qwen/Qwen3.5-4B和Qwen/Qwen3.5-9B。这是基于 Qwen3.5 混合 Gated DeltaNet/全注意力缓存的扩展实验,不应表述为论文 Qwen3 结果的逐位复现。代码题安全
MBPP+ 和 HumanEval+ 只有在执行生成代码后才能得到 Acc.:
该参数会在本机执行模型生成的 Python。只应在隔离机器或容器中启用。不传该参数时, 模型输出和 Token/Speed 仍会保存,但代码题的 Acc. 为
null。评测输出
每次新运行创建:
config.jsonevents.jsonlsamples.jsonlsummary.jsonsummary.csv每条样本完成后立即追加到 JSONL,并刷新 summary,因此中断时已完成的数据不会丢失。
断点续传
使用运行开始时打印的具体目录:
恢复时从原
config.json读取实验参数,并跳过已经完成的唯一键:不要通过修改参数把不同实验协议续写进同一目录。需要改变 token 上限、latent steps、 采样参数或代码执行策略时,应创建新运行。
多机器评测与 Table 1 聚合
不同机器只需要运行互不重叠的数据集/模型分片。
--shard-name和完整 UUID 会进入目录名 与记录,复制整个benchmark-*子目录时不会因同名而覆盖。下面的示例得到两个模型、六个数据集、三种 HiveWorks 功能模式、三个 repeats、每个 数据集 10 条样本的完整矩阵。
机器 A:Qwen3.5-4B,全部六个数据集
机器 B:Qwen3.5-9B,ARC-E 与 GSM8K
机器 C:Qwen3.5-9B,其余四个数据集
完成后,将三个完整的
benchmark-*子目录复制到同一个benchmark_results中。 聚合脚本也支持直接传入多个结果根目录,因此物理合并不是必须的。聚合与完整性检查
预期唯一记录数:
严格模式默认开启。聚合器会:
缺失、冲突、未评分或协议不一致时会返回非零退出码,不会静默挑选一个结果。
聚合输出:
table1.htmltable1.mdtable1.csvtable1.jsonmerged_samples.jsonl常用 CLI 参数
协作运行时
完整帮助:
Benchmark
完整帮助:
测试
运行评测与聚合相关测试:
运行全部测试:
测试覆盖协议编解码、传输层、共享记忆、远程模型、结构化日志、GUI 事件流、 Qwen3.5 hybrid cache、三种 HiveWorks 评测功能模式、断点续传和多机结果聚合。
故障排查
text payload cannot be emptyDeepSeek thinking 模式可能在生成预算过小时只返回
reasoning_content,尚未产生最终content。可以提高--max-new-tokens,或设置:远程模型不能使用 Latent 通信
远程 API 只返回文本,无法提供 HiveWorks latent 通信所需的本地隐藏状态。使用:
Latent 通信必须使用本地 Hugging Face 模型。
代码题 Acc. 为
null这是未启用
--allow-unsafe-code-execution时的预期行为。请先确认隔离环境,再决定 是否执行模型生成代码。Benchmark 很慢或输出 token 异常大
先检查
config.json中的max_new_tokens_by_dataset。当前论文默认值为 2,048/4,096,而不是 20,480/40,960。Text Multi-Agent 会连续运行四个 Agent, 生成开销天然高于 No Agent。没有安装
fla或causal_conv1d时,Qwen3.5 可能回退到较慢的 PyTorch 路径; 实际加速库状态会写入 benchmark 的config.json。终端中的 Agent 输出交错
终端会标记当前
agent_id,但多 Agent 并发时仍可能快速切换。需要清晰分栏、prompt 和调用链时,使用网页 GUI。如何恢复中断的 Benchmark
不要重新运行原命令并期望自动找到旧目录。使用:
项目结构
参考