Skip to content

上下文压缩与 MoA

源码版本v2026.7.20

职责

两件事:① 当历史消息逼近 provider 上下文上限时,把旧消息摘要/裁剪掉腾出预算(context_compressor);② 可选地用 Mixture-of-Agents 路径聚合多个模型的输出(moa_loop)。两者都在主循环内被调用,是「让长对话跑得下去」和「让回答更稳」的支撑件。

关键文件

数据流

  1. 主循环每轮评估是否需要压缩(见 _should_run_preflight_estimate:213)。
  2. 命中阈值后调用 context_compressor:
  3. 压缩产生的「新空间」通过 iteration_budget.refund()(agent/iteration_budget.py)部分退还,允许主循环多跑几轮。
  4. 若启用 MoA,moa_loop 在本轮并行调用多个 provider 并聚合,作为对主回答的增强或仲裁。

小结

压缩器是长对话的生命线,核心权衡是「丢什么、留什么」——它优先保留工具调用与路径提及,因为丢了这些会让后续轮次「失忆」。MoA 是正交增强,可开关。两者都不改变主循环结构,只在合适时机切入。

非官方社区学习站,内容以 MIT 许可的 NousResearch/hermes-agent 源码为依据。