Hermes Agent v0.16.0 → v0.17.0 版本对比
第 21 讲:架构演进与核心变化
基于 Hermes Agent 源码 · 2026-07-04
一、版本概览
本次对比覆盖 Hermes Agent 从 v0.16.0 (v2026.6.19) 到 v0.17.0 (v2026.7.1) 的完整演进,历时约 12 天,是 Hermes 历史上改动量最大的版本迭代之一。
📊 版本数据总览
| 指标 | 数值 |
|---|---|
| 提交总数 | 1,760 次 |
| 文件变更 | 2,225 个文件 |
| 代码增删 | +254,012 / -41,540 行 |
| 新特性 (feat) | 239 次 |
| Bug 修复 (fix) | 1,179 次 |
| 安全加固 (security) | 88 次 |
| 代码重构 (refactor) | 106 次 |
二、架构演进全景
v0.17.0 的核心架构变化可以归纳为六大方向:
方向 1:MoA (Mixture of Agents) 系统落地
MoA 是 v0.17.0 最重大的新特性,实现了多模型并行咨询 + 聚合器决策的架构模式。30+ 次 MoA 相关提交,从概念验证走向生产可用。
核心提交链:
c6575df feat(moa): expose MoA presets as selectable virtual models
4d2351a feat(moa): stream the aggregator response to the user
2e8748e feat(moa): opt-in full-turn trace persistence to JSONL
7c38249 feat(moa): references see full tool state + fire on every user/tool response
a653bb0 refactor(moa): unify slot provider-identity on the single call_llm chokepoint
架构意义:MoA 不是简单的"多模型调用",而是引入了全新的虚拟 Provider 层,在 Provider 抽象之上增加了一层"预设路由器"。每个 MoA preset 包含 advisor 模型列表和 aggregator 模型,形成"咨询-聚合"两阶段推理。
方向 2:安全加固 — 系统性防御升级
88 次安全相关提交,覆盖6 大安全域,是 Hermes 历史上最密集的安全加固周期。
🔒 安全加固六大域
⬇️
① Gateway IDOR 防护 — /resume 和 /sessions 作用域隔离
⬇️
② Shell 注入防御 — 硬底线规则 + 缩写标志拦截
⬇️
③ SSRF 防护 — httpx 下载钩子 + 元数据端点封锁
⬇️
④ 浏览器安全 — 私有网络守卫 + 凭据查询黑名单
⬇️
⑤ 凭据保护 — 子进程环境净化 + 日志脱敏
⬇️
⑥ 插件安全 — tool_override 授权 + 非捆绑插件隔离
方向 3:压缩系统重构 — In-place Compaction 默认启用
上下文压缩系统经历了一次重大架构升级:in_place 模式从实验性选项变为默认行为。
关键变更链:
2107b86 feat(compression): flip in_place default to True
47fadc2 feat(compression): in-place compaction option that keeps one session id
b795a45 fix(compaction): detect and strip merge-into-tail summaries past the delimiter
8972404 fix(acp): stop _persist from deleting compression-archived history
架构变化:之前压缩会创建新 session ID(session rotation),现在压缩后保持同一 session ID,archived 历史记录通过 soft-archive 保留,session_search 仍可发现。
方向 4:Desktop 应用架构重构
Desktop 端经历了最大规模的重构,从"单体文件"走向"模块化组件"架构。
重构规模:30+ 次 desktop refactor 提交
fa7bce0 refactor(desktop): colocate hook/component families into scoped folders
88e29e3 refactor(desktop): split sidebar/index.tsx god file into focused modules
7ff6908 refactor(desktop): split thread.tsx god file into focused modules
18d54bf refactor(desktop): split onboarding overlay god file into onboarding/ folder
新特性:Memory Graph 可播放径向时间线、Project Workspace 工具、多终端面板、漫游宠物、Codex 风格审查面板。
方向 5:Gateway 架构升级
Gateway 端核心文件 gateway/run.py 改动最大(+3,193 行),引入多项架构改进:
🔹 Scale-to-zero 空闲检测 — 休眠静默机制 (Phase 0)
🔹 外部排空触发 — accept-gating 控制通道
🔹 Relay 多平台每代理 — Phase 1.5 多身份支持
🔹 AsyncSessionDB 卸载 — 数据库操作异步化
🔹 平台适配器插件化 — Slack/DingTalk/WhatsApp 等迁移至内置插件
方向 6:Provider 扩展与认证增强
新增 Google Vertex AI Provider(OAuth2),移除 Google Gemini CLI 和 Antigravity OAuth providers。
c73e743 feat(vertex): add Google Vertex AI provider for Gemini (OAuth2)
3f6c6bd fix(vertex): surface Vertex on the desktop Keys tab for provider parity
三、核心模块变更详情
3.1 Agent 核心 (agent/)
| 变更域 | 关键变更 |
|---|---|
| 验证系统 | pre_verify hook + verify-on-stop 编码指导,默认关闭 |
| 消息持久化 | 按内在标记持久化消息,阻止 id() 重用导致的数据丢失 |
| 委托系统 | 子代理始终继承父代理工具集,移除 model-facing toolsets 参数 |
| 错误分类 | 5xx 上下文溢出路由至压缩,Anthropic 订阅耗尽指导 |
| 编码指令 | 新增 configurable coding_instructions |
3.2 Gateway 网关 (gateway/)
| 变更域 | 关键变更 |
|---|---|
| IDOR 防护 | /resume 和 /sessions 按调用者来源作用域隔离,10+ 次安全提交 |
| Auto-resume | 验证用户授权后再自动恢复,失败则关闭 |
| Scale-to-zero | 空闲检测 + 休眠静默,go_dormant() 传输模式 |
| 插件化 | Slack/DingTalk/WhatsApp/Matrix 等迁移至内置插件 |
| Relay 升级 | 多平台每代理、scope_id 统一、休眠原语 |
3.3 新增/废弃功能对照
| 新增功能 | 说明 |
|---|---|
| MoA Presets | 虚拟模型选择器,CLI/桌面/Web 全表面支持 |
| Vertex AI Provider | Google Vertex AI OAuth2,Gemini 模型支持 |
| Project Workspace | 项目工具 + Git worktree + 审查面板 |
| /learn Skill 系统 | 从任意描述蒸馏可复用 skill |
| Memory Graph | 可播放径向时间线,记忆 + 技能图谱 |
| /journey 时间线 | CLI + TUI 学习节点时间线 |
| Background Fan-out | 并行子代理,一个汇总返回 |
| Computer Use | 跨平台 cua-driver (macOS/Windows/Linux) |
| 废弃/移除 | 说明 |
|---|---|
| Google Gemini CLI Provider | 被 Vertex AI Provider 替代 |
| Google Antigravity OAuth | 认证方式变更 |
| Open WebUI messaging | 文档中移除 |
| verify_on_stop 默认开启 | v32 迁移翻转为默认关闭 |
四、架构对比图
v0.16.0 → v0.17.0 架构演进
v0.16.0 架构
CLI / Gateway / Cron → AIAgent → Tool Registry + Session DB
Provider 抽象层 (20+ providers)
⬇️ 核心变化 ⬇️
v0.17.0 架构
+ MoA 虚拟 Provider 层 (Presets 路由器)
+ 安全中间件层 (IDOR/SSRF/Shell 注入防护)
+ In-place Compaction (session 内压缩)
+ Scale-to-zero + Relay 多平台架构
+ 插件化平台适配器 (Slack/WhatsApp 等)
五、代码规模变化
| 模块 | 变更量 | 主要变化 |
|---|---|---|
| gateway/run.py | +3,193 行 | IDOR 防护、MoA 路由、平台插件化 |
| gateway/session.py | +579 行 | 压缩会话管理、持久化 /resume |
| gateway/relay/ | +1,318 行 | 多平台每代理、休眠原语 |
| gateway/slash_commands.py | +887 行 | /journey、/goal、/learn 等新命令 |
| agent/ | 大量变更 | 验证系统、消息持久化、委托改进 |
| apps/desktop/ | 大规模重构 | 30+ refactor 提交,组件模块化 |
六、关键设计决策分析
决策 1:MoA 作为虚拟 Provider 而非独立模块
设计选择:MoA preset 被暴露为"可选虚拟模型",而非独立子系统。
这意味着 MoA 复用现有的 Provider 抽象层,通过 virtual provider row 注册到模型选择器中。CLI、Desktop、Dashboard 的模型切换器天然支持 MoA preset,无需额外 UI 开发。
决策 2:安全加固优先于功能开发
设计选择:88 次安全提交占全部提交的 5%,远超常规比例。
/resume IDOR 防护用了 10+ 次提交逐步收紧,从"宽松默认"到"fail-closed"。这种渐进式加固模式避免了大规模行为变更导致的回归风险。
决策 3:In-place Compaction 成为默认
设计选择:压缩后保持同一 session ID,archived 历史 soft-archive 而非删除。
这解决了之前 session rotation 导致的"压缩后丢失历史上下文"问题。代价是 session DB 需要维护 archived rows,但 session_search 仍可发现压缩归档内容。
七、总结
v0.17.0 的核心价值:
🔹 MoA 系统从实验走向生产,多模型并行推理正式可用
🔹 安全加固覆盖 6 大安全域,IDOR/SSRF/Shell 注入全面防御
🔹 压缩系统重构,in-place compaction 默认启用
🔹 Desktop 端大规模模块化重构,组件化架构成型
🔹 Gateway 引入 Scale-to-zero 和插件化平台适配器
🔹 新增 Vertex AI、Project Workspace、/learn、/journey 等关键特性
下一讲(第 22 讲)将深入分析 MoA 系统、代码验证、Vertex AI、Kanban 改进和安全加固的具体实现细节。
📚 系列导航
← 第 20 讲:Hermes Agent 总结与实战指南
第 22 讲:新特性详解 →
关注公众号获取更多技术干货
🔗 源码仓库:https://github.com/NousResearch/hermes-agent
夜雨聆风