Hermes Agent v0.18.0 — The Judgment Release(审判者版本)
概览
v0.18.0 — The Judgment Release(审判者版本),2026 年 7 月 1 日发布。~1,720 次提交 · 998 个合并 PR · 2,215 个文件变更 · ~251,000 行新增 · ~41,000 行删除 · 949 个 issue 关闭 · 370+ 社区贡献者。
这个版本的核心转变就一句话:Hermes Agent 学会了用证据说话,而不是靠“我感觉搞定了”来交差。Mixture-of-Agents 从一个小开关进化成了一级模型系统——每个参考模型的推理过程你都能看到,最终答案实时流式输出。/goal 有了完成合约,/learn 和 /journey 让 Agent 的自我进化变得可视、可控。底层方面,Gateway 实现了 scale-to-zero + 优雅排空,已经可以上生产环境了;桌面端也终于有了真正的一级编程项目系统。
除此之外,还有一件事:团队花了十二天,把整个仓库里所有 P0 和 P1 全部干掉了。零 P0,零 P1。这是新的底线。
P0/P1 大清扫
| 优先级 | Issue 关闭 | PR 合并 |
|---|---|---|
| P0(致命) | 3 | 8 |
| P1(高危) | 493 | 188 |
| 合计 | 496 | 196 |
十二天消化了 ~692 个最高优先级项。最后一个倒下的 P0 是中断保护压缩的 sibling-fork bug(#56391,由 #56416 修复),发版前夜通宵拿下的。
特别鸣谢 @kshitijk4poor,这位大佬跟核心团队一起日夜爆肝——cron 可靠性波次、compression-fork 修复、credential-exfil 加固,还有一大票 P1 关闭都是他的功劳。
从现在开始,P0/P1 永远保持 零。
重磅功能
1. Mixture-of-Agents(MoA)—— 一级模型选择器
MoA 从一个小开关跃升为模型系统的一等公民。每个命名好的 MoA preset 现在作为虚拟模型挂在 moa provider 下面——在 CLI、TUI、桌面端、Gateway 的每一个模型选择器里,它和 Claude、GPT、Grok 平起平坐。选 “my-council” 就跟选任何一个模型一样顺手,Hermes 自动把你的 prompt 路由到那个 ensemble。
像选模型一样选专家团:
# 在 CLI 中通过模型选择器切换到 MoA preset
/hermes model:moa/my-council
# /moa 变成一次性快捷方式——用默认 preset 跑一次,跑完自动恢复之前的模型
/moa 评审一下这个架构方案
每个参考模型的推理单独展示。 在 CLI、TUI、桌面端中,每个参考模型的完整输出独立渲染成一个带标签的区块——GPT-5 怎么想的、Claude 怎么想的、Grok 怎么想的,一清二楚。然后 aggregator 汇总出最终答案。你不再是等宣判结果,而是现场观摩委员会怎么讨论的。
Aggregator 实时流式输出。 不再是沉默半天然后一堵墙一样砸过来。最终答案在三个终端界面里逐 token 流式推送。
配置方法:
# hermes.config.yaml
moa:
presets:
my-council:
references:
- provider: anthropic
model: claude-sonnet-4-20250514
role: reference
- provider: openai
model: gpt-5
role: reference
- provider: xai
model: grok-3
role: reference
aggregator:
provider: openai
model: gpt-5
save_traces: true # 可选:把完整 turn trace 持久化到 JSONL,方便调试和评估
底层原理:
- 参考模型能看到完整工具状态,在每次 user/tool 响应时都会触发——不只是初始 prompt
- Advisory references 在 user turn 结束并拿到 reference-role system prompt
- 参考模型和 aggregator 模型通过各自 provider 的真实路由调用——不走捷径
- Context window 从 aggregator 解析,不再用 256K 默认值
- Auxiliary tasks 自动解析到 aggregator
- 虚拟 provider 被阻止作为 reference/aggregator slot——杜绝递归 ensemble
- 手改 preset 配置也能容错——不会因为格式有点小问题就崩
- MoA slot provider-identity 统一收敛到
call_llm单一 choke point - HermesBench 评估结果已文档化
2. Verification —— Agent 学会了自己证明工作做完了
Hermes 现在会记录编码工作的验证证据,并通过实际跑你的项目检查来决定是否完成——而不是凭嘴说“搞定了”。
/goal 完成合约:
# 设定目标时声明"完成"的标准
/goal "修复 auth handler 里的竞态条件"
# Hermes 会提示你定义"搞定"的标准:
# "搞定 = 所有单测通过 + 零 lint 报错 + 并发测试连续 10 次不出问题"
# standing-goal 循环拿证据说话,不是模型说了算。
# 合约不满足就不停。
# 把 goal 循环挂到后台进程上,不用反复戳 Agent
/goal wait 12345
验证证据账本:
# hermes.config.yaml
coding_context:
verify_on_stop: auto # 自动检测项目类型,跑对应的检查
pre_verify: # 自定义验证钩子,声称完成前必须先过这关
- command: "npm run test -- --coverage"
- command: "npm run lint"
- command: "npm run typecheck"
实现细节:
- Profile 级别的证据账本,由
agent.coding_context自动检测 - Gateway 通过
GET /api/verification/status暴露验证状态 pre_verify钩子接受任意脚本作为验证关卡- 验证停止循环 + 临时验证脚本支持
- verify-on-stop 默认关闭,附带一次性 v32 迁移;跳过纯文档编辑;消息界面禁用
- Surface-aware “auto” 默认已恢复(区分交互式和非交互式场景)
3. /learn —— 一键把任何工作流蒸馏成可复用技能
跑 /learn <任何东西>,Hermes 自动从你指定的内容中提炼出可复用 skill,并按照 CONTRIBUTING.md 标准写入。下次再需要这个工作流,它已经在技能库里了。教 Hermes 新本事,现在就是一条命令的事。
# 从目录学习——package.json、脚本、README,全部分析
/learn ./my-deployment-scripts
# 从 URL 学习——文档、API 参考、博客文章
/learn https://docs.example.com/api-reference
# 从刚走完的工作流学习——Hermes 观察最近 N 轮对话
/learn workflow # 自动识别最近的工作流模式
底层发生了什么:
- 分析结构(目录内容、URL 内容或对话历史)
- 识别可复用模式和领域特定流程
- 按你项目的 CONTRIBUTING.md 标准生成 skill 文件
- 遵守混合要求——如果 CONTRIBUTING.md 规定了特定格式,就用那个格式
- 下次需要这个工作流时,它已经在技能库里等着了
本版本新增的 skill 工具:
cloudflare-temporary-deploy—— 可选 skill,快速 Cloudflare 部署creative-ideationv2.1.0 —— 创意方法库
4. /journey —— 可交互的 Agent 记忆时间线
CLI 和 TUI 都有了 /journey —— 一条展示 Hermes 积累的记忆和技能的学习时间线,支持原地编辑和删除。再配上桌面端新增的 memory graph(一个自上而下、可交互的放射状记忆时间线),你第一次可以真正看到你的 Agent 知道什么、观察它如何成长、并修剪掉错误的记忆。
/journey
# 显示所有记忆和技能的可滚动时间线
# 方向键:浏览
# Enter:展开详情
# e:原地编辑
# d:删除
桌面端记忆图谱: 放射状时间线可视化(俯视图、交互节点),按时间段聚类展示记忆和技能。可播放——拖动时间轴、缩放到特定时间段、点击节点查看完整记忆内容。
5. Background Fan-Out —— 后台并行委派子 Agent
delegate_task 现在可以把多个子 Agent 作为后台任务并行分发——你的主聊天完全不受影响。等全部子 Agent 完工后,结果合并成一个 turn 返回给你。
# 并行调研委派
/delegate_task "并行调研 A、B、C 三家竞品——列出定价、功能、最新融资情况"
# 背后发生了什么:
# 1. 三个后台子 Agent 同时启动
# 2. CLI/TUI 状态栏显示后台活跃数
# 3. 主聊天保持响应——你继续干别的事
# 4. 三个子 Agent 全部完工后,一份合并汇总送达
基础设施:
- CLI + TUI 状态栏实时跟踪后台子 Agent
- 后台有活时静默提示“稍后回来”
- 一份合并结果——不用挨个盯子 Agent
6. 桌面端 —— 一级编程项目系统
桌面端终于有了真正意义上的 per-profile Projects 功能,底层是 project → repo → lane 模型。你的编程工作不再散落在零散的聊天会话中,而是组织成 Agent 看得懂、能操作的项目。
项目结构解剖:
Project "auth-service"
├── Repo: github.com/myorg/auth-service
│ ├── Lane: main(当前工作分支)
│ ├── Lane: feat/oauth-refactor(worktree)
│ └── Lane: fix/race-condition(worktree)
└── Tools: Agent 可调用的项目工具(lint、test、build)
编程驾驶舱功能:
- 侧边栏:per-profile 项目列表 + 编码工具栏
- 审查面板:git 状态、diff 视图、worktree 管理
- 远程 Gateway 感知的文件夹选择器:托管 Gateway 也能用
- Git 驾驶舱:内联状态、PR 风格 diff 审查、worktree 创建/切换/删除
多终端面板:
- 只读 Agent 终端——观察 Agent 在干什么
- 终端标签页和滚动历史跨重启持久化恢复
PR 风格文件 diff:
- 文件变更以内联 side-by-side 或 unified diff 形式展示
- 内置就地编辑器用于文件预览窗格
- Assistant markdown 支持内联富嵌入、图表和警告框
UX 增强:
- 对话时间线 rail——长线程导航利器
- 上下文用量明细弹窗——看清楚你的 context window 都塞了什么
- 子 Agent 旁观者转录——只读观察窗口
- 可拖拽浮动 composer——把输入框弹出独立窗口
- 自动 TTS composer 开关——朗读回复
- 窗口状态持久化——大小、位置、最大化状态跨启动记住
- 重新设计的 clarify prompt
- 共享 overlay Panel 原语——cron/profiles/agents 统一管理
桌面宠物:
- Opt-in 漫游宠物,更安静、更自然的 roam 行为
- Alt+滚轮缩放——永不裁剪
- 帧精确孵化流程 + CPU 安全色度渲染
- 弹窗 overlay + 通知
重构浪潮:
- Composer 分解为独立 engine hooks
- Branch/esc/url/placeholder/popout engines 各自提取为独立模块
- God file 拆分:
thread.tsx、sidebar/index.tsx、onboarding overlay、use-prompt-actions全部拆成专注模块 - 共享 WebSocket 层解耦桌面端与 Dashboard(
hermes serve) - 性能:限制 tool-result 渲染,防止
/learn大批量数据冻结界面;负载下快速会话切换
7. Gateway —— Scale-to-Zero + 优雅排空
Gateway 现在可以在空闲时进入休眠,并在重启、迁移或自动更新前优雅排空——不会丢失正在进行的对话。
Scale-to-zero 工作流:
# 启动 Gateway 并开启 scale-to-zero
hermes serve --scale-to-zero --drain-timeout 30s
# 背后逻辑:
# 1. Gateway 监控活跃连接
# 2. 闲置一定时间后(可配置),进入休眠状态
# 3. 新连接进来时,透明唤醒
# 4. 闲置期间零计算开销
优雅排空(安全关机):
# 维护/重启前优雅排空
hermes serve --drain
# 进行中的对话自然完成
# 新连接被拒绝并收到 retry-after 信号
# 排空超时后持久化对话转录
# 忙碌/空闲状态暴露给生命周期编排系统
生产级加固:
- 默认
restart_drain_timeout设为 0,干掉 systemd crash loop - 从卡死的 draining/degraded 状态自动恢复
- 排空标记时抑制 home-channel 关机广播
- Harden dormancy arm-gate 防止 disabled placeholder 平台干扰
8. Relay(Phase 5 / 6)——中继系统成熟化
中继基础设施在多平台、多 Agent 部署方面大幅成熟:
- Wake 原语(Gateway 侧)——远程中继可唤醒休眠的 Gateway
- Going-idle / buffered-flip 原语——状态转换时干净交接
- WebSocket 上的
passthrough_forward——轻量级中继消息代理 - Multi-platform-per-agent 身份——一个 Agent、多个消息平台、统一身份
- Per-frame egress——精细控制哪些消息通过哪个通道发出
- 稳定的 instance id——自配置时转发,方便可靠追踪
- Relevance policy在 connector 层声明——中继层过滤噪音
- 基于 delivery 的授权——中继事件按 delivery 鉴权,而非
source.platform scope_idwire key 全面采用——清理平台特定的 scope 术语
9. Google Vertex AI —— 一级 Provider
Vertex AI 现在是 Gemini 模型的一级 provider,走 Vertex 的 OpenAI 兼容端点。核心突破:Hermes 自动签发并刷新短周期 OAuth2 access token,从你的 service-account JSON 或 Application Default Credentials 中搞定——不再需要静态 API key。
# hermes.config.yaml
providers:
- name: vertex-gemini
provider: vertex
credentials: /path/to/service-account.json
model: gemini-2.5-pro
region: us-central1
# 或者用 Application Default Credentials(ADC)——不需要指定文件路径
- name: vertex-gemini-adc
provider: vertex
model: gemini-2.5-flash
region: europe-west4
为什么这很重要: 普通 custom-provider 方式连 Vertex 总是 mid-session 断连,因为 token 约 1 小时就过期。Hermes 现在完整接管 OAuth2 生命周期——签发、刷新、重试——全程透明。把 service account 指向它,剩下的事不用管。
10. 消息平台 —— 重大更新
Cron 可续接:
- Cron job 现在支持优先线程续接,DM 镜像为兜底方案
- Slack 支持扁平频道内可续接 cron 投递
- Cron 创建/列表时检查 Gateway 是否在运行
平台级更新总览:
| 平台 | 更新点 |
|---|---|
| Telegram | 可配置命令菜单 + 提升默认上限,skill 不会被挤出;富文本草稿预览独立开关;send pool 超时后排空再重试 |
| Slack | Opt-in Block Kit 渲染 Agent 消息;--no-assistant 标志用于 manifest 生成 |
| Discord | 通过 -# 前缀将推理内容渲染为副文本;可配置 display.reasoning_style |
通过 Baileys bridge 原生媒体投递(send_video/send_voice/send_document) |
|
| Teams | 原生 send_video/send_voice/send_document 支持 |
| Signal | AAC 语音笔记重新封装 + 共享 markdown 格式 |
| iMessage | Photon sidecar 升级到 spectrum-ts v8,支持 tapback 关联 |
| Raft | 新部署 Gateway setup wizard |
适配器迁移: Slack、钉钉、WhatsApp、Matrix、飞书、Telegram、企业微信、Email、SMS 适配器全部迁移到 bundled 格式,加载更快,版本管理更可靠。
新增内置工具与命令
| 工具 / 命令 | 描述 | 用法 |
|---|---|---|
web_extract |
截断并存储网页内容(替代 LLM 摘要,更快更省) | web_extract https://example.com |
/reasoning full |
不限制思考 token 上限——适合深度分析 | /reasoning full 然后输入你的问题 |
llm.oneshot |
通过 Gateway RPC 发起一次性 LLM 调用 | hermes rpc llm.oneshot '{"prompt": "..."}' |
project.facts |
通过 Gateway RPC 暴露编码上下文项目事实 | hermes rpc project.facts |
/timestamps |
切换聊天历史中的消息时间戳显示 | /timestamps |
/history |
可组合的历史记录视图,带搜索和过滤 | /history 关键词 |
/prompt |
在 $EDITOR 中编写完整 markdown prompt,保存后排队发送 |
/prompt |
/journey |
交互式记忆/技能时间线,支持原地编辑/删除 | /journey |
/learn |
从目录、URL 或工作流中蒸馏可复用 skill | /learn ./路径 |
/moa |
通过默认 preset 执行一次性 MoA prompt | /moa <问题> |
/goal wait <pid> |
把 goal 循环挂到后台进程 | /goal wait 12345 |
ctx.profile_name |
插件中的会话无关 profile 访问 | ctx.profile_name |
| Blank Slate | 极简 Agent 启动模式——按需开启一切 | 配置:setup: blank_slate |
cloudflare-temporary-deploy |
可选 skill,快速 Cloudflare 部署 | Skill 安装 |
creative-ideation v2.1.0 |
扩展创意方法库 | Skill 安装 |
改进
核心 Agent 与工具
- 并发 @-引用展开:多个
@file和@url引用现在并行解析而非串行——多引用 prompt 速度显著提升 - 人性化工具标签:所有内置工具现在有可读的自然语言描述,降低学习曲线
HERMES_WRITE_SAFE_ROOT:支持多个允许写入目录——将 Agent 文件写入限制在审批路径内- Opt-in HTTP/WS 体抓取:将请求/响应体记录到隔离的
gui_bodies.log(分享排除,需手动开启) - Per-reasoning-model stale-timeout floor:区分流式和非流式 LLM 调用的超时检测,避免误判
- SIGTERM→SIGKILL 升级:host-pid 终止后宽限期过后升级,确保清理彻底
压缩与会话
- 原地压缩:不创建新 ID,原地压缩单个会话;默认翻转为
true并加了防护修复 - 备份扩展:升级前快照现在包含
projects.db和 kanban 看板,保证状态完整
Provider 与模型
- Krea 通过托管的 Nous Subscription gateway 可用
- Z.AI 端点选择器(Global/China/Coding Plan),区域感知路由
- Ollama-cloud
reasoning_effort接线完成 - 移除 google-gemini-cli 和 google-antigravity OAuth provider(整合到 Vertex AI)
- 支持
NOUS_INFERENCE_BASE_URL环境变量覆盖 Nous OAuth - 空闲 dashboard/gateway Agent 保持 Nous auth 新鲜——防止会话过期
Kanban
- 任务生命周期插件钩子:
claimed、completed、blocked事件 - 带类型的阻塞原因 + unblock-loop breaker——防止无限阻塞/解阻塞循环
- Handoff freshness stamping——追踪任务所有权最后转移时间
LSP
- PowerShellEditorServices 语言服务器加入——PowerShell 诊断现在可用
- mem0 v3 API + OSS 模式 + update/delete 工具,记忆管理升级
Web Dashboard
- 未认证加载自动 SSO 跳转
- No-provider non-loopback 绑定时的交互式认证引导
- Confidential-client OIDC(
client_secret)支持自托管身份提供商 - API Key 目录:所有 memory-provider key 在
OPTIONAL_ENV_VARS中列出 - 自定义
.envkey:从 Keys 页面列出并添加任意环境变量 - Cron 执行字段暴露用于监控
- 备份管理:从 Web UI 导入/创建/下载
- PTY 异步化:spawn/close 操作移出 event loop,防止阻塞
性能
- 冷启动优化:Gateway 平台适配器懒加载;配置和插件 manifest 用
CSafeLoader(libyaml)解析,替代纯 Python YAML - FTS5 写锁竞争:合并并索引 segment,减少并发写入时数据库锁竞争
- Profile 列表:单次遍历 alias map + skill 数量缓存 + event-loop 卸载
list_profiles——多 profile 系统提速明显 - Gateway API 服务器:可配置并发运行上限,防止高负载下 DoS
安全与可靠性
攻击面加固
- MCP-config 持久化攻击面锁定——防止恶意 skill 跨会话常驻
- Cron
base_url凭据窃取拦截——cron job 不能通过覆盖 provider base URL 来截获凭据 - 前缀密钥哨兵(non-reusable sentinel)——文件读取中可能泄露 secret 的特定模式会被捕获并拒绝
- Slack
xapp-token 脱敏——应用级 token 自动从日志和诊断信息中抹除 - 浏览器 cloud-metadata floor——所有 CDP 后端强制执行(包括非本地场景)
- 导航后重检 privat-network guard——防止通过重定向绕过
/resume和/sessions限定到调用方 origin——防止 IDOR 攻击aiohttpCVE 底线设为 3.14.1,覆盖所有 lazy messaging path,附带 pin-drift guard
Cron 可靠性波次
- Fail closed——unpinned job 的 provider 漂移时不静默回退
- Missed-grace job 只跑一次——不再无限推迟,防止无限追赶循环
BaseException时 ticker 存活 + heartbeat 感知状态——cron 不会无声挂掉- MCP server 按 job 叠加到工具集——每个 cron job 拿到正确的工具
- Model-tool path guard + auto-resume loop breaker——防止工具链失控
Windows 可靠性
- 抑制 Gateway 操作期间的 console 闪烁
- Harden Gateway 重启,处理各种边界情况
- PATH fallback 时优先用 cmd npm shim
- GUI 更新后窗口化重生 Gateway
- WhatsApp/桌面集成优先用托管 node
回滚记录(本窗口内)
- Cron job 存储回退到 per-profile(回滚集中存储 #32117 + #50993)
auth.json克隆已禁用——复制 OAuth grant 会导致兄弟撤销- Windows terminal-popup PR 回滚,待稳定性重新评估
prompt_caching.enabled开关撤回,待重新评估
Breaking Changes(破坏性变更)
- verify-on-stop 默认关闭:一次性 v32 迁移;跳过纯文档编辑;消息界面禁用。如需开启:
coding_context:
verify_on_stop: auto
- 移除 google-gemini-cli 和 google-antigravity OAuth provider——迁移到 Vertex AI provider
- 适配器迁移:消息平台适配器现为 bundled 格式——自定义适配器路径可能需要更新
升级
hermes update
全新安装请参考安装指南。
← 版本发布