v0.20.4

Hermes Agent v0.20.4


Overview

v0.20.4 — The Glass Release(玻璃质感版)。 发布于 2026 年 8 月 18 日。自 v0.20.3 以来 合并约 74 个 PR · 约 146 个提交 · 改动约 265 个文件(+21,697 / −2,217)

在 Resilience Patch 发布一天后,这个窗口做的是没人点名要求、但人人都想要的事:桌面端终于不再跟你较劲。头条是 Glass——一种 macOS 半透明模式,模糊窗口但不牺牲文字可读性;围绕它落地了固定为标签页的 SESSIONS|BOTS 侧边栏、终于能收拾整齐的 bot 名单(隐藏、取消隐藏、解散群聊)、不再丢失长时任务的 Bot Mode 群聊、每次技能安装都会跑的 NVIDIA SkillEvaluator 咨询性扫描、cron 媒体发送加固(超时可配置、手动运行的附件不再被静默丢弃)、解除 gateway 卡死的 SessionDB 竞争修复、对停驻分支说实话的 hermes update,以及 Kanban 原生系统通知。

这是补丁版本,官方说明从简,完整文档随 v0.21.0 发布。本页覆盖该窗口最有价值的部分。


Highlights

1. 桌面 Glass——看得清文字的半透明效果(macOS)

窗口半透明过去直接映射到原生窗口不透明度,整个窗口一起变淡——文字也在内——所以桌面壁纸一花哨,这项功能基本只能钉在 0。Glass 在 macOS 上给这个调节杆赋予了第二种语义:窗口在原生层面保持不透明,改为让渲染层的表面区域在每一个聊天窗口都自带的 vibrancy 材质上变薄。你得到的是哑光模糊效果,而文字、卡片、弹出层和输入框保持全对比度(#88744)。

开启 Glass 后,有三个控制项:

  • Intensity(强度)——同一个调节杆,跑满整个量程。拉到顶时色调完全消失:纯无色调模糊,文字和卡片依然不透明。
  • Frost(霜感)——Deep / Soft / Bright / Glare 四档。macOS 没有暴露模糊半径旋钮,所以 vibrancy 材质本身就是霜感控制。
  • Area(范围)——整个窗口,或仅侧边栏(Finder 的形态:玻璃轨道 + 不透明内容栏)。

调节任意一项都会偷看(peek):设置浮层恰好盖住它自己的滑杆所控制的效果,所以按住滑杆时浮层淡出,实时窗口就是预览。全新 macOS 配置文件现在默认预选 Glass——强度仍默认 0,所以在你移动滑杆之前一切照旧,而刻意调过 clear 的配置文件保持不变。Windows 和 Linux 看到的还是今天那一行(#88956)。

2. SESSIONS|BOTS 侧边栏固定为标签页——bot 也能藏起来

桌面端左侧边栏现在每次启动都把 SESSIONS | BOTS 作为同一区域里的并排标签页。Bots 面板带一个强制的 dock 不变量:每次启动的首次接管阶段,任何“上下堆叠”的旧布局都会被重新归位成中间标签页——那种布局绝不允许再活过任何一次更新(#88872)。

名单也更整齐了:右键点一个 bot 行 → Hide Bot 把它从名单和 Active-now 条里藏起来(不影响 @mention、群聊成员关系或已打开的聊天),顶栏的眼睛切换按钮——只在至少藏了一个 bot 时才渲染——把隐藏的 bot 以半透明样式显示出来,右键 → Unhide Bot 恢复。隐藏状态通过 profile.yamlui_meta 跨机器同步(#88800)。

3. Bot Mode 群聊不再丢失长时任务

群聊成员的轮次过去有固定的 3 分钟截止时间;超时的轮次返回 null,而轮询循环把 null 当作“这一轮无事发生”——于是第 7 分钟才跑完的回复无处安放。现在截止时间会在成员的会话仍报告 inflight/running 时自动延长,上限 20 分钟硬顶;仍然超时的轮次会记录一个 stranded(搁浅)基线,在下一个轮次边界被收回群里——迟到,但绝不丢失,窗口重载也扛得住(#88885)。围绕它:群聊消息支持 Markdown 渲染(#88553)、跨机器群聊路由在连接切换后依然存活(#88921)、一个 bot 可以同时坐在多个群聊里(#88980)、群聊变成在主聊天窗口打开的一等公民 Discord 式行(#88738)、并且终于能在 GUI 里解散群聊(#88659)。

4. NVIDIA SkillEvaluator——技能安装的咨询性第二意见

hermes skills install 现在会在每次 hub 安装时运行 NVIDIA SkillEvaluator Tier 1(PII、Unicode 走私、脚本 lint)作为咨询性扫描——发现的问题在安装确认前以 file:line 形式展示,安装始终照常继续。这是刻意只警告不拦截:上游 PII 扫描器有已知的误报类别([email protected] 这类 SSH 语法、文档里的示例邮箱、op:// 密钥管理器引用),所以发现结果用来辅助你的安装决策,而不是替你做决定。密钥类发现(私钥、云密钥、token、带凭据的连接串)以红色渲染并带明确的复核警告。扫描是可选的——没有 skillevaluator 二进制时静默降级为不执行——也可以用 skills.tier1_advisory: false 关闭(#88573)。

5. cron 媒体发送加固

这个窗口补上了 cron 投递的三个缺口:

  • 超时可配置: 媒体附件发送过去只有固定 30 秒窗口,大导出(长 TTS 音频、大 PDF)一碰就超时,日志里冒号后面什么都没有。现在超时走 HERMES_CRON_MEDIA_SEND_TIMEOUTcron.media_send_timeout_seconds默认 300 秒,超时也总会记录非空的失败原因(#88787)。
  • 手动运行不再丢附件: hermes cron run <job-id> 过去可能只投递了任务文本,PDF/图片附件被静默丢弃,运行却仍报告成功——独立发送器把上传失败只写进 warnings,而没有任何代码读它。现在附件失败在两条投递通道的运行状态里都可见(#88631)。
  • 漏触发可见: 托管触发路径连不上 gateway 时,任务会盖上持久的 last_fire_error 印记,在 cronjob listhermes cron list 和 dashboard 里都能看到——下次成功运行后清除(#88555)。

6. SessionDB 不再卡死事件循环

一家企业客户遇到过再也起不来的 gateway:一次不干净的关机撞上第二个 gateway 实例,每次重启都阻塞在事件循环线程上的 v25 模式迁移里,循环存活看门狗触发 exit 75,supervisor 重启后又回到同一个状态。现在 SessionDB(schema 初始化 + 对受竞争的 state.db 做迁移)再也不会在事件循环线程上构造:缓存未命中时启动一次性后台引导,最多等待 250ms——健康的初始化在窗口内完成,受竞争的初始化则降级为 None(所有调用方本来就能处理 None),循环的停滞远低于看门狗的探测超时(#88753)。

7. hermes update 对停驻分支说实话

源码检出停在功能分支上时,hermes update 过去会 stash、同步、打印 ✓ Code updated!——然后把检出留在过时的分支上,main 的新代码一行都没有。现在:当停驻分支可以安全离开时(工作树干净 + 已完全合并)自动切回 main;不安全时大声警告并把代码更新标记为 SKIPPED;摘要行带上真实分支 + HEAD 短哈希,漂移一目了然:

✓ Update complete! [main @ 30fcf9580]

(#88928)

8. Kanban 任务原生通知

桌面端现在会在 Kanban 任务完成、撞上 blocker 或失败时弹出原生系统通知——覆盖完整终态事件集(completedblockedgave_upcrashedtimed_outblock_loop_detected),按类型分级严重度,你在别的应用里忙活时 worker 卡在 blocker 上不再无声无息。由 设置 ▸ Notifications ▸ Plugin notifications 控制(#88765)。

Improvements

  • 项目技能扫描隔离 + 非交互式信任继承(安全):项目技能现在在加载时先做注入扫描隔离,非交互式表面(cron/API/ACP)继承人类对仓库的信任决定,不再弹提示或自动信任——补完了项目本地技能史诗的剩余条目(#88643)。
  • 一次性轮次持久化: hermes chat -Q / -q 的一次性轮次现在会写进恢复的会话——bot 对 bot 的 Bot Chat 消息也包括在内(#88763)。
  • Bot Mode 群聊房间显示头像图片(#88746);CLI 创建的 Bot Mode 会话不再出现在全局 Sessions 侧边栏(#88677)。
  • 桌面 Gateways 设置页:Gateway 与 Connections 合并为一个机器级页面(#88735、#88812);即使后端以两个地址注册,每个 bot 也只显示一行(#88828)。
  • 供应商:Muse Spark 1.2 加入 OpenRouter 精选列表(#88600),api.meta.ai 改走 Responses API 以获得提示缓存(#88601)。

Fixes

  • SessionDB 事件循环线程停滞(见 Highlight 6);虚拟模型别名泄漏在写入、读取、恢复缓存三条路径上封堵(#88761);multiplex 会话现在存进所属 profile 的 state.db,不再存根目录(#88734)。
  • Windows 下删除 bot/profile 不再报 WinError 32——删除目录前先释放内存占用(#88727)。
  • OpenAI 适配器容忍稀疏 response 对象;relay 解开惰性完成流并使用规范化的托管操作名(#85581、#85579、#85582)。
  • 桌面:远程 gateway 桌面不再显示幻影本地默认(#88554);已删除的 profile 停止自动重连、切换中的 404 不再被当作会话删除(#88638、#88699);Bots 面板总是打开固定的规范 Bot Chat(#88690)。

Upgrade

hermes update

升级后运行 hermes doctor 验证安装,并重启 gateway(hermes gateway)让平台变更生效。macOS 用户:桌面应用刷新后,Glass 模式出现在 外观 ▸ Window Translucency 中。

← Hermes Agent Changelog