# Hermes Agent v0.12.0 (v2026.4.30)
**发布日期:** 2026年4月30日
**自 v0.11.0 以来:** 1,096 次提交 · 550 个合并的 PR · 1,270 个文件变更 · 217,776 行新增 · 213 位社区贡献者(包括共同作者)
> **策展人版本** — Hermes Agent 现在能够自我维护。一个自主的后台策展器按照自己的时间表(默认为7天周期)对技能库进行评分、修剪和整合。用于审查应保存内容的自我改进循环得到了实质性升级。新增四个推理服务提供商、第18个消息平台、通过 Teams 插件的第19个平台、原生 Spotify + Google Meet 集成、ComfyUI 和 TouchDesigner-MCP 从可选变为默认捆绑,以及可见 TUI 冷启动时间减少约 **57%**。
---
## ✨ 亮点
- **自主策展器** — `hermes curator` 作为后台代理在网关的 cron 定时器上运行(默认为7天周期)。它对技能库进行评分、整合相关技能、修剪无效技能,并将每次运行的报告写入 `logs/curator/run.json` 和 `REPORT.md`。归档的技能通过模型+启发式方法分类为“整合”或“修剪”。纵深防御机制保护捆绑/中心技能免受篡改。统一由 `auxiliary.curator` 管理 — 在 `hermes model` 中选择策展器模型,从仪表板进行管理。`hermes curator status` 按使用率对技能排名(最常用/最不常用)。 ([#17277](https://github.com/NousResearch/hermes-agent/pull/17277), [#17307](https://github.com/NousResearch/hermes-agent/pull/17307), [#17941](https://github.com/NousResearch/hermes-agent/pull/17941), [#17868](https://github.com/NousResearch/hermes-agent/pull/17868), [#18033](https://github.com/NousResearch/hermes-agent/pull/18033))
- **自我改进循环 — 重大升级** — 后台审查分支(Hermes 自我改进的核心:每轮后决定保存或更新哪些记忆/技能)现在是基于类别的(基于评分标准而非自由形式)、偏向主动更新(优先更新代理刚加载的技能)、处理 `references/`/`templates/` 子文件,并正确继承父级的实时运行时(提供商、模型、凭据实际传播)。仅限于记忆+技能工具集,防止扩散。记忆提供商干净关闭。前一轮工具消息从摘要中排除,使分支看到干净的上下文。 ([#16026](https://github.com/NousResearch/hermes-agent/pull/16026), [#17213](https://github.com/NousResearch/hermes-agent/pull/17213), [#16099](https://github.com/NousResearch/hermes-agent/pull/16099), [#16569](https://github.com/NousResearch/hermes-agent/pull/16569), [#16204](https://github.com/NousResearch/hermes-agent/pull/16204), [#15057](https://github.com/NousResearch/hermes-agent/pull/15057))
- **技能集成 — 大规模扩展** — **ComfyUI v5** 提供官方 CLI + REST + 硬件控制的本地安装,从可选变为 **默认内置** ([#17610](https://github.com/NousResearch/hermes-agent/pull/17610), [#17631](https://github.com/NousResearch/hermes-agent/pull/17631), [#17734](https://github.com/NousResearch/hermes-agent/pull/17734))。**TouchDesigner-MCP** 默认捆绑,扩展了 GLSL、后处理、音频、几何功能和 9 个新参考文档 ([#16753](https://github.com/NousResearch/hermes-agent/pull/16753), [#16624](https://github.com/NousResearch/hermes-agent/pull/16624), [#16768](https://github.com/NousResearch/hermes-agent/pull/16768) — @kshitijk4poor + @SHL0MS)。**Humanizer** 技能移植了去除 AI 痕迹的文本清理器 ([#16787](https://github.com/NousResearch/hermes-agent/pull/16787))。**claude-design** HTML 工件技能 + design-md(Google DESIGN.md 规范)+ airtable 抢救 + `skill_manage` 在 `external_dirs` 中编辑 + 直接 URL 技能安装 + `/reload-skills` 斜杠命令。 ([#16358](https://github.com/NousResearch/hermes-agent/pull/16358), [#14876](https://github.com/NousResearch/hermes-agent/pull/14876), [#16291](https://github.com/NousResearch/hermes-agent/pull/16291), [#17512](https://github.com/NousResearch/hermes-agent/pull/17512), [#16323](https://github.com/NousResearch/hermes-agent/pull/16323), [#17744](https://github.com/NousResearch/hermes-agent/pull/17744))
- **LM Studio — 一级提供商** — 从自定义端点别名升级为完整的原生提供商:专用认证、`hermes doctor` 检查、推理传输、实时 `/models` 列表。(抢救 @kshitijk4poor 的 #17061。) ([#17102](https://github.com/NousResearch/hermes-agent/pull/17102))
- **新增四个推理服务提供商** — **GMI Cloud**(一级,抢救 #11955 — @isaachuangGMICLOUD)、**Azure AI Foundry** 带自动检测、**MiniMax OAuth** 带 PKCE 浏览器流程(抢救 #15203)、**Tencent Tokenhub**(抢救 #16860)。 ([#16663](https://github.com/NousResearch/hermes-agent/pull/16663), [#15845](https://github.com/NousResearch/hermes-agent/pull/15845), [#17524](https://github.com/NousResearch/hermes-agent/pull/17524), [#16960](https://github.com/NousResearch/hermes-agent/pull/16960))
- **可插拔网关平台 + Microsoft Teams** — 网关现在是一个插件主机。即插即用消息适配器位于核心之外,Microsoft Teams 是第一个插件式平台。(抢救 #17664。) ([#17751](https://github.com/NousResearch/hermes-agent/pull/17751), [#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- **Tencent 元宝 — 第18个消息平台** — 原生网关适配器,支持文本+媒体传输。 ([#16298](https://github.com/NousResearch/hermes-agent/pull/16298), [#17424](https://github.com/NousResearch/hermes-agent/pull/17424))
- **Spotify — 原生工具 + 捆绑技能 + 向导** — 7 个工具(播放、搜索、队列、播放列表、设备)通过 PKCE OAuth 保护、交互式设置向导、捆绑技能、在 `hermes tools` 中显示、记录 cron 使用情况。 ([#15121](https://github.com/NousResearch/hermes-agent/pull/15121), [#15130](https://github.com/NousResearch/hermes-agent/pull/15130), [#15154](https://github.com/NousResearch/hermes-agent/pull/15154), [#15180](https://github.com/NousResearch/hermes-agent/pull/15180))
- **Google Meet 插件** — 加入通话、转录、说话、跟进。实时 OpenAI 传输 + Node 机器人服务器,完整管道作为插件捆绑。 ([#16364](https://github.com/NousResearch/hermes-agent/pull/16364))
- **`hermes -z` 单次运行模式 + `hermes update --check`** — 非交互式 `hermes -z <prompt>` 支持 `--model`/`--provider`/`HERMES_INFERENCE_MODEL`。`hermes update --check` 预检。可选预更新 HERMES_HOME 备份。 ([#15702](https://github.com/NousResearch/hermes-agent/pull/15702), [#15704](https://github.com/NousResearch/hermes-agent/pull/15704), [#15841](https://github.com/NousResearch/hermes-agent/pull/15841), [#16539](https://github.com/NousResearch/hermes-agent/pull/16539), [#16566](https://github.com/NousResearch/hermes-agent/pull/16566))
- **模型仪表板标签页 + 浏览器内模型配置** — 丰富的每模型分析,从仪表板切换主模型和辅助模型。 ([#17745](https://github.com/NousResearch/hermes-agent/pull/17745), [#17802](https://github.com/NousResearch/hermes-agent/pull/17802))
- **远程模型目录清单** — OpenRouter + Nous Portal 模型目录现在从远程清单拉取,新模型无需发布即可显示。 ([#16033](https://github.com/NousResearch/hermes-agent/pull/16033))
- **原生多模态图像路由** — 图像现在基于模型的实际视觉能力而非提供商默认值进行路由。 ([#16506](https://github.com/NousResearch/hermes-agent/pull/16506))
- **网关媒体一致性** — 在 Telegram、Discord、Slack、Mattermost、Email 和 Signal 上原生发送多张图片;集中式音频路由支持 FLAC + Telegram 文档回退。 ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909), [#17833](https://github.com/NousResearch/hermes-agent/pull/17833))
- **TUI 追平(并超越)经典 CLI** — LaTeX 渲染 (@austinpickett)、`/reload` .env 热重载、可插拔忙碌指示器样式 (@OutThisLife, #13610)、可选自动恢复上次会话、扩展的浅色终端自动检测、从 `/resume` 选择器按 `d` 删除会话、修改鼠标滚轮行滚动、以及 `/mouse` 切换可禁用 ConPTY 的幽灵鼠标注入 (@kevin-ho)。 ([#17175](https://github.com/NousResearch/hermes-agent/pull/17175), [#17286](https://github.com/NousResearch/hermes-agent/pull/17286), [#17150](https://github.com/NousResearch/hermes-agent/pull/17150), [#17130](https://github.com/NousResearch/hermes-agent/pull/17130), [#17113](https://github.com/NousResearch/hermes-agent/pull/17113), [#17668](https://github.com/NousResearch/hermes-agent/pull/17668), [#17669](https://github.com/NousResearch/hermes-agent/pull/17669), [#15488](https://github.com/NousResearch/hermes-agent/pull/15488))
- **可观测性 + 成就插件** — 捆绑 Langfuse 可观测性插件(抢救 #16845)+ 捆绑 hermes-achievements 插件,扫描完整会话历史。 ([#16917](https://github.com/NousResearch/hermes-agent/pull/16917), [#17754](https://github.com/NousResearch/hermes-agent/pull/17754))
- **TTS 提供商注册表 + Piper 本地 TTS** — 可插拔 `tts.providers.<name>` 注册表;Piper 作为原生本地 TTS 提供商提供。(关闭 #8508。) ([#17843](https://github.com/NousResearch/hermes-agent/pull/17843), [#17885](https://github.com/NousResearch/hermes-agent/pull/17885))
- **Vercel Sandbox 后端** — Vercel sandboxes 作为 execute_code/terminal 后端 (@kshitijk4poor)。 ([#17445](https://github.com/NousResearch/hermes-agent/pull/17445))
- **密钥脱敏默认关闭** — 默认切换为关闭。防止长期存在的补丁损坏问题,即虚假的密钥形子字符串破坏工具输出。需要时通过 `redaction.enabled: true` 启用。 ([#16794](https://github.com/NousResearch/hermes-agent/pull/16794))
- **冷启动性能** — 可见 TUI 冷启动时间减少 **~57%**,通过延迟代理初始化 (@OutThisLife)、延迟导入 OpenAI / Anthropic / Firecrawl / account_usage、基于 mtime 缓存的 `load_config()`、带 TTL 缓存 `check_fn` 结果的记忆化 `get_tool_definitions()`、预编译危险命令模式。 ([#17190](https://github.com/NousResearch/hermes-agent/pull/17190), [#17046](https://github.com/NousResearch/hermes-agent/pull/17046), [#17041](https://github.com/NousResearch/hermes-agent/pull/17041), [#17098](https://github.com/NousResearch/hermes-agent/pull/17098), [#17206](https://github.com/NousResearch/hermes-agent/pull/17206))
- **可配置的提示缓存 TTL** — `prompt_caching.cache_ttl`(默认 5 分钟,1 小时可选 — 为保持缓存温暖的突发会话节省成本)。抢救 #12659。 ([#15065](https://github.com/NousResearch/hermes-agent/pull/15065))
---
## 🧠 自主策展器与自我改进循环
### 策展器 — 自主技能维护
- **`hermes curator` 作为后台代理** — 在网关的 cron 定时器上运行,默认为7天周期,伞式优先提示,继承父配置,无限制迭代 ([#17277](https://github.com/NousResearch/hermes-agent/pull/17277) — 问题 #7816)
- **每次运行报告** — 每个周期生成 `logs/curator/run.json` + `REPORT.md` ([#17307](https://github.com/NousResearch/hermes-agent/pull/17307))
- **整合与修剪分类** — 归档技能按模型+启发式方法分割 ([#17941](https://github.com/NousResearch/hermes-agent/pull/17941))
- **`hermes curator status`** — 按使用率对技能排名,显示最常用和最不常用 ([#18033](https://github.com/NousResearch/hermes-agent/pull/18033))
- **统一由 `auxiliary.curator` 管理** — 在 `hermes model` 中选择模型,从仪表板配置 ([#17868](https://github.com/NousResearch/hermes-agent/pull/17868))
- **文档** — 文档站点上设有专门的策展器功能页面 ([#17563](https://github.com/NousResearch/hermes-agent/pull/17563))
- 修复:更新时种子默认值,创建 `logs/curator/` 目录,延迟 fire 导入 ([#17927](https://github.com/NousResearch/hermes-agent/pull/17927))
- 修复:在 `restore_skill` 中扫描嵌套归档子目录 (@0xDevNinja) ([#17951](https://github.com/NousResearch/hermes-agent/pull/17951))
- 修复:在策展器状态中使用实际技能活动 (@y0shua1ee) ([#17953](https://github.com/NousResearch/hermes-agent/pull/17953))
- 修复:`skill_manage` 拒绝写入固定技能;固定现在阻止策展器写入 ([#17562](https://github.com/NousResearch/hermes-agent/pull/17562), [#17578](https://github.com/NousResearch/hermes-agent/pull/17578))
- 修复:`bump_use()` 连接到技能调用 + 预加载 + skill_view(抢救 #17782)([#17932](https://github.com/NousResearch/hermes-agent/pull/17932))
### 自我改进循环(后台审查分支)
- **基于类别的技能审查提示** — 基于评分标准的评分而非自由形式“是否应更新” ([#16026](https://github.com/NousResearch/hermes-agent/pull/16026))
- **主动更新偏向** — 优先更新代理刚加载的技能,处理 `references/` + `templates/` 子文件 ([#17213](https://github.com/NousResearch/hermes-agent/pull/17213))
- **分支继承父级实时运行时** — 提供商、模型、凭据现在实际传播 ([#16099](https://github.com/NousResearch/hermes-agent/pull/16099))
- **范围工具集** — 审查分支限制在记忆+技能(无 shell,无 web)([#16569](https://github.com/NousResearch/hermes-agent/pull/16569))
- **干净关闭** — 后台审查记忆提供商正常退出(抢救 #15289)([#16204](https://github.com/NousResearch/hermes-agent/pull/16204))
- **干净上下文** — 排除先前历史工具消息于审查摘要外(抢救 #14967)([#15057](https://github.com/NousResearch/hermes-agent/pull/15057))
---
## 🧩 技能生态系统
### 技能集成 — 新捆绑或升级
- **ComfyUI v5** — 官方 CLI + REST + 硬件控制本地安装;**从可选变为内置** ([#17610](https://github.com/NousResearch/hermes-agent/pull/17610), [#17631](https://github.com/NousResearch/hermes-agent/pull/17631), [#17734](https://github.com/NousResearch/hermes-agent/pull/17634), [#17612](https://github.com/NousResearch/hermes-agent/pull/17612))
- **TouchDesigner-MCP** — **默认捆绑** ([#16753](https://github.com/NousResearch/hermes-agent/pull/16753) — @kshitijk4poor),扩展 GLSL、后处理、音频、几何参考 ([#16624](https://github.com/NousResearch/hermes-agent/pull/16624)),9 个新参考文档 ([#16768](https://github.com/NousResearch/hermes-agent/pull/16768) — @SHL0MS)
- **Humanizer** — 从文本中去除 AI 痕迹 ([#16787](https://github.com/NousResearch/hermes-agent/pull/16787))
- **claude-design** — HTML 工件技能,与其他设计技能区分 ([#16358](https://github.com/NousResearch/hermes-agent/pull/16358))
- **design-md** — Google DESIGN.md 规范技能 ([#14876](https://github.com/NousResearch/hermes-agent/pull/14876))
- **airtable** — 抢救技能 + 技能 API 密钥连接到 `.env` (#15838) ([#16291](https://github.com/NousResearch/hermes-agent/pull/16291))
- **pretext** — 使用 @chenglou/pretext 的创意浏览器演示 ([#17259](https://github.com/NousResearch/hermes-agent/pull/17259))
- **spike** + **sketch** — 一次性实验 + HTML 模型,改编自 gsd-build ([#17421](https://github.com/NousResearch/hermes-agent/pull/17421))
### 技能用户体验
- **从直接 HTTP(S) URL 安装技能** — `hermes skills install <url>` ([#16323](https://github.com/NousResearch/hermes-agent/pull/16323))
- **`/reload-skills`** 斜杠命令(抢救 #17670)([#17744](https://github.com/NousResearch/hermes-agent/pull/17744))
- **`hermes skills list`** 显示启用/禁用状态 ([#16129](https://github.com/NousResearch/hermes-agent/pull/16129))
- **`skill_manage` 拒绝写入固定技能** ([#17562](https://github.com/NousResearch/hermes-agent/pull/17562))
- **`skill_manage` 就位编辑 external_dirs 技能**(抢救 #9966)([#17512](https://github.com/NousResearch/hermes-agent/pull/17512), [#17289](https://github.com/NousResearch/hermes-agent/pull/17289))
- 修复:`skill_view` 中的内联 shell 渲染 ([#15376](https://github.com/NousResearch/hermes-agent/pull/15376))
- 修复:从技能索引遍历中排除 `.archive/`(抢救 #17639)([#17931](https://github.com/NousResearch/hermes-agent/pull/17931))
- 修复:每个捆绑+可选技能有专门的文档页面 ([#14929](https://github.com/NousResearch/hermes-agent/pull/14929))
- 修复:`google-workspace` 共享 HERMES_HOME 助手 + 将依赖作为可选额外项运送 ([#15405](https://github.com/NousResearch/hermes-agent/pull/15405))
- 修复:在生成的技能页面中自动换行 ASCII 艺术代码块 ([#16497](https://github.com/NousResearch/hermes-agent/pull/16497))
- 将代理指向 `hermes-agent` 技能 + 文档站点以获取 Hermes 问题 ([#16535](https://github.com/NousResearch/hermes-agent/pull/16535))
---
## 🏗️ 核心代理与架构
### 提供商与模型支持
#### 新提供商
- **GMI Cloud** — 与 Arcee/Kilocode/Xiaomi 同级的一级 API 密钥提供商(抢救 #11955 — @isaachuangGMICLOUD)([#16663](https://github.com/NousResearch/hermes-agent/pull/16663))
- **Azure AI Foundry** — 自动检测,完整连接 ([#15845](https://github.com/NousResearch/hermes-agent/pull/15845))
- **LM Studio** — 从自定义端点别名升级为一级提供商:专用认证、doctor 检查、推理传输、实时 `/models`(抢救 #17061 — @kshitijk4poor)([#17102](https://github.com/NousResearch/hermes-agent/pull/17102))
- **MiniMax OAuth** — 带完整 OAuth 集成的 PKCE 浏览器流程(抢救 #15203)([#17524](https://github.com/NousResearch/hermes-agent/pull/17524))
- **Tencent Tokenhub** — 新提供商(抢救 #16860)([#16960](https://github.com/NousResearch/hermes-agent/pull/16960))
#### 模型目录
- **远程模型目录清单** — OpenRouter + Nous Portal 目录从远程清单拉取,新模型无需发布即可显示 ([#16033](https://github.com/NousResearch/hermes-agent/pull/16033))
- `openai/gpt-5.5` 和 `gpt-5.5-pro` 添加到 OpenRouter + Nous Portal ([#15343](https://github.com/NousResearch/hermes-agent/pull/15343))
- `deepseek-v4-pro` 和 `deepseek-v4-flash` 已添加 ([#14934](https://github.com/NousResearch/hermes-agent/pull/14934))
- `qwen3.6-plus` 添加到阿里支持模型 ([#16896](https://github.com/NousResearch/hermes-agent/pull/16896))
- Gemini 免费层密钥在设置时被阻止,显示 429 指导 ([#15100](https://github.com/NousResearch/hermes-agent/pull/15100))
#### 模型配置
- **可配置的 `prompt_caching.cache_ttl`** — 默认 5 分钟,1 小时可选(抢救 #12659)([#15065](https://github.com/NousResearch/hermes-agent/pull/15065))
- `/fast` 白名单扩展到所有 OpenAI + Anthropic 模型 ([#16883](https://github.com/NousResearch/hermes-agent/pull/16883))
- `auxiliary.extra_body.reasoning` 转换为 Codex Responses API ([#17004](https://github.com/NousResearch/hermes-agent/pull/17004))
- `hermes fallback` 命令用于管理回退提供商 ([#16052](https://github.com/NousResearch/hermes-agent/pull/16052))
### 代理循环与对话
- **原生多模态图像路由** — 基于模型视觉能力,而非提供商默认值 ([#16506](https://github.com/NousResearch/hermes-agent/pull/16506))
- **委托 `child_timeout_seconds` 默认提升至 600 秒** ([#14809](https://github.com/NousResearch/hermes-agent/pull/14809))
- **子代理超时且 0 次 API 调用时进行诊断转储** ([#15105](https://github.com/NousResearch/hermes-agent/pull/15105))
- **网关在压缩/context_length 配置编辑时使缓存的代理失效** ([#17008](https://github.com/NousResearch/hermes-agent/pull/17008))
- **最终回复上可选运行时元数据页脚** ([#17026](https://github.com/NousResearch/hermes-agent/pull/17026))
- `/reload-mcp` 感知 — 重建缓存代理 + 提示缓存成本确认 ([#17729](https://github.com/NousResearch/hermes-agent/pull/17729))
- 修复:修复 CamelCase + `_tool` 后缀工具调用输出 ([#15124](https://github.com/NousResearch/hermes-agent/pull/15124))
- 修复:在 `json.JSONDecodeError` 上重试,而非视为本地验证错误 ([#15107](https://github.com/NousResearch/hermes-agent/pull/15107))
- 修复:处理 `tool_call.arguments` 中未转义的控制字符 ([#15356](https://github.com/NousResearch/hermes-agent/pull/15356))
- 修复:`_copy_reasoning_content_for_api` 中的顺序修复 — 跨提供商推理隔离 (@Zjianru) ([#15749](https://github.com/NousResearch/hermes-agent/pull/15749))
- 修复:为 DeepSeek/Kimi `tool_calls` 无条件注入空 `reasoning_content` (@Zjianru) ([#15762](https://github.com/NousResearch/hermes-agent/pull/15762))
- 修复:在助手回合持久化流式 `reasoning_content` (#16844) ([#16892](https://github.com/NousResearch/hermes-agent/pull/16892))
- 修复:超时时取消协程使工作线程退出;工具失败时完整回溯 ([#17428](https://github.com/NousResearch/hermes-agent/pull/17428))
- 修复:隔离 `get_tool_definitions` quiet_mode 缓存 + 去重 LCM 注入 (#17335) ([#17889](https://github.com/NousResearch/hermes-agent/pull/17889))
- 修复:序列化来自 `execute_code` 的并发 `hermes_tools` RPC 调用 (#17770) ([#17894](https://github.com/NousResearch/hermes-agent/pull/17894), [#17902](https://github.com/NousResearch/hermes-agent/pull/17902))
- 修复:将所有用户注入标记中的 `[SYSTEM:` 重命名为 `[IMPORTANT:`(规避 Azure 内容过滤器)([#16114](https://github.com/NousResearch/hermes-agent/pull/16114))
### 压缩
- **未知错误时在主模型上重试摘要,再放弃** ([#16774](https://github.com/NousResearch/hermes-agent/pull/16774))
- **即使用户主模型回退恢复,也通知用户辅助模型失败** ([#16775](https://github.com/NousResearch/hermes-agent/pull/16775))
- `/compress` 包裹在 `_busy_command` 中以在压缩期间阻止输入 ([#15388](https://github.com/NousResearch/hermes-agent/pull/15388))
- 修复:当辅助绑定阈值时保留系统+工具头空间 ([#15631](https://github.com/NousResearch/hermes-agent/pull/15631))
- 修复:在 `_find_tail_cut_by_tokens` 中对多模态令牌估算使用文本字符和 ([#16369](https://github.com/NousResearch/hermes-agent/pull/16369))
### 会话、记忆与状态
- **用于 CJK 搜索的三元组 FTS5 索引,替换 LIKE 回退** (@alt-glitch) ([#16651](https://github.com/NousResearch/hermes-agent/pull/16651))
- **在 FTS5 中索引 `tool_name` + `tool_calls`,带修复+迁移**(抢救 #16866)([#16914](https://github.com/NousResearch/hermes-agent/pull/16914))
- **检查点:启动时自动修剪孤立和过时的影子仓库** ([#16303](https://github.com/NousResearch/hermes-agent/pull/16303))
- **记忆提供商在进程间 session_id 轮换时收到通知** (#6672) ([#17409](https://github.com/NousResearch/hermes-agent/pull/17409))
- 修复:在 FTS5 查询消毒中引用带下划线术语 ([#16915](https://github.com/NousResearch/hermes-agent/pull/16915))
- 修复:解决 viking_read 在文件 URI + 伪摘要 URI 上的 500/412(抢救 #5886)([#17869](https://github.com/NousResearch/hermes-agent/pull/17869))
- 修复:在中断回合上跳过外部提供商同步 ([#15395](https://github.com/NousResearch/hermes-agent/pull/15395))
- 修复:干净关闭嵌入式 Hindsight 异步客户端(抢救 #14605)([#16209](https://github.com/NousResearch/hermes-agent/pull/16209))
- 修复:在网关+CLI 上将会话记录传递给 `shutdown_memory_provider` (#15165) ([#16571](https://github.com/NousResearch/hermes-agent/pull/16571))
- 修复:写入来源元数据接缝 ([#15346](https://github.com/NousResearch/hermes-agent/pull/15346))
- 修复:在原子文件写入期间保留符号链接 ([#16980](https://github.com/NousResearch/hermes-agent/pull/16980))
- 重构:完全移除 `flush_memories` ([#15696](https://github.com/NousResearch/hermes-agent/pull/15696))
### 辅助模型
- 修复:在 UI 中显示辅助失败(之前静默)([#15324](https://github.com/NousResearch/hermes-agent/pull/15324))
- 修复:显示标题生成辅助失败而非静默丢弃 ([#16371](https://github.com/NousResearch/hermes-agent/pull/16371))
- 修复:泛化不支持参数检测并强化 `max_tokens` 重试 ([#15633](https://github.com/NousResearch/hermes-agent/pull/15633))
---
## 📱 消息平台(网关)
### 新平台
- **Microsoft Teams(第19个平台)** — 作为插件,+ xdist 冲突防护 ([#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- **元宝(Tencent 元宝,第18个平台)** — 原生适配器,支持文本+媒体传输 ([#16298](https://github.com/NousResearch/hermes-agent/pull/16298), [#17424](https://github.com/NousResearch/hermes-agent/pull/17424), [#16880](https://github.com/NousResearch/hermes-agent/pull/16880))
### 可插拔网关平台
- **即插即用消息适配器** — 网关现在是平台的插件主机(抢救 #17664)([#17751](https://github.com/NousResearch/hermes-agent/pull/17751))
### Telegram
- **群组和论坛的聊天白名单** (@web3blind) ([#15027](https://github.com/NousResearch/hermes-agent/pull/15027))
- **为过时预览流发送新鲜最终结果**(移植 openclaw#72038)([#16261](https://github.com/NousResearch/hermes-agent/pull/16261))
- **将 markdown 表格渲染为行组项目符号 + 提示** ([#16997](https://github.com/NousResearch/hermes-agent/pull/16997))
- 在集中式音频路由中记录文档回退 ([#17833](https://github.com/NousResearch/hermes-agent/pull/17833))
- 原生多图片发送 ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
### Discord
- **可选工具集 + ID 注入 + 工具分割 + Feishu 连接**(抢救 #15457, #15458)([#15610](https://github.com/NousResearch/hermes-agent/pull/15610), [#15613](https://github.com/NousResearch/hermes-agent/pull/15613))
- 修复:在 `min()` 调用前将 `limit` 参数强制转换为整数 ([#16319](https://github.com/NousResearch/hermes-agent/pull/16319))
### Slack
- **将每个网关命令注册为原生斜杠(Discord/Telegram 一致性)** ([#16164](https://github.com/NousResearch/hermes-agent/pull/16164))
- **`strict_mention` 配置** — 防止线程自动参与 ([#16193](https://github.com/NousResearch/hermes-agent/pull/16193))
- **`channel_skill_bindings`** — 将特定技能绑定到特定 Slack 频道 ([#16283](https://github.com/NousResearch/hermes-agent/pull/16283))
### Signal
- **原生格式化** — markdown → bodyRanges、回复引用、反应 ([#17417](https://github.com/NousResearch/hermes-agent/pull/17417))
- 原生多图片发送 ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
### Feishu / Mattermost / Email / Signal
- 全部参与 **原生多图片发送** ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
### 网关核心
- **集中式音频路由 + FLAC 支持 + Telegram 文档回退** ([#17833](https://github.com/NousResearch/hermes-agent/pull/17833))
- **跨 Telegram、Discord、Slack、Mattermost、Email、Signal 的原生多图片发送** ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
- **使卫生硬消息限制可配置** ([#17000](https://github.com/NousResearch/hermes-agent/pull/17000))
- **最终回复上可选运行时元数据页脚** ([#17026](https://github.com/NousResearch/hermes-agent/pull/17026))
- **`pre_gateway_dispatch` 钩子** — 插件可在分发前拦截 ([#15050](https://github.com/NousResearch/hermes-agent/pull/15050))
- **`pre_approval_request` / `post_approval_response` 钩子** ([#16776](https://github.com/NousResearch/hermes-agent/pull/16776))
- 修复:超时 — 保护 `load_config()` 调用免受运行时异常 ([#16318](https://github.com/NousResearch/hermes-agent/pull/16318))
- 修复:支持通过注册表传递处理程序工具 ([#15613](https://github.com/NousResearch/hermes-agent/pull/15613))
---
## 🔧 工具系统
### 插件优先架构
- **可插拔网关平台** — 平台可作为插件运送 ([#17751](https://github.com/NousResearch/hermes-agent/pull/17751))
- **Microsoft Teams 作为第一个插件式平台** ([#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- **`pre_gateway_dispatch` 钩子** ([#15050](https://github.com/NousResearch/hermes-agent/pull/15050))
- **`pre_approval_request` + `post_approval_response` 钩子** ([#16776](https://github.com/NousResearch/hermes-agent/pull/16776))
- **`post_tool_call` 上的 `duration_ms`**(受 Claude Code 2.1.119 启发)([#15429](https://github.com/NousResearch/hermes-agent/pull/15429))
- **捆绑插件**:Spotify ([#15174](https://github.com/NousResearch/hermes-agent/pull/15174))、Google Meet ([#16364](https://github.com/NousResearch/hermes-agent/pull/16364))、Langfuse 可观测性 ([#16917](https://github.com/NousResearch/hermes-agent/pull/16917))、hermes-achievements ([#17754](https://github.com/NousResearch/hermes-agent/pull/17754))
- **内置仪表板页面的页面范围插件槽** ([#15658](https://github.com/NousResearch/hermes-agent/pull/15658))
- **NixOS 模块的声明式插件安装** (@alt-glitch) ([#15953](https://github.com/NousResearch/hermes-agent/pull/15953))
### 浏览器
- **CDP 监督器** — 对话框检测 + 响应 + 跨源 iframe 求值 ([#14540](https://github.com/NousResearch/hermes-agent/pull/14540))
- **云提供商配置时为 LAN/localhost URL 自动生成本地 Chromium** ([#16136](https://github.com/NousResearch/hermes-agent/pull/16136))
### 执行代码 / 终端
- **Vercel Sandbox 后端用于 `execute_code` / 终端** (@kshitijk4poor) ([#17445](https://github.com/NousResearch/hermes-agent/pull/17445))
- **将子代理 `task_id` 折叠到共享容器** ([#16177](https://github.com/NousResearch/hermes-agent/pull/16177))
- **Docker:以主机用户身份运行容器** 以避免 root 拥有的绑定挂载 (@benbarclay) ([#17305](https://github.com/NousResearch/hermes-agent/pull/17305))
- 修复:在包装的 `cd` 命令中安全引用 `~/` 子路径 ([#15394](https://github.com/NousResearch/hermes-agent/pull/15394))
- 修复:在 `LocalEnvironment._update_cwd` 中关闭文件描述符 ([#17300](https://github.com/NousResearch/hermes-agent/pull/17300))
- 修复:SSH — 防止 tar 覆盖远程 home 目录权限 ([#17898](https://github.com/NousResearch/hermes-agent/pull/17898), [#17867](https://github.com/NousResearch/hermes-agent/pull/17867))
### 图像生成
- 请参阅提供商部分;此窗口无新图像提供商。
### TTS / 语音
- **可插拔 TTS 提供商注册表** 在 `tts.providers.<name>` 下 ([#17843](https://github.com/NousResearch/hermes-agent/pull/17843))
- **Piper** 作为原生本地 TTS 提供商(关闭 #8508)([#17885](https://github.com/NousResearch/hermes-agent/pull/17885))
- **TUI 中的语音模式 CLI 一致性** — VAD 循环 + TTS + 崩溃取证 ([#14810](https://github.com/NousResearch/hermes-agent/pull/14810))
- 修复:视觉 — 使用基于 HERMES_HOME 的缓存目录而非 cwd ([#17719](https://github.com/NousResearch/hermes-agent/pull/17719))
### Cron
- **为 cron 平台尊重 `hermes tools` 配置** ([#14798](https://github.com/NousResearch/hermes-agent/pull/14798))
- **每作业 `workdir`** — 项目感知 cron 运行 ([#15110](https://github.com/NousResearch/hermes-agent/pull/15110))
- **`context_from` 字段** — 链接 cron 作业输出 ([#15606](https://github.com/NousResearch/hermes-agent/pull/15606))
- 修复:将 `croniter` 提升为核心依赖 ([#17577](https://github.com/NousResearch/hermes-agent/pull/17577))
### 网络搜索
- **为 `web_search` 暴露 `limit`** ([#16934](https://github.com/NousResearch/hermes-agent/pull/16934))
### 地图
- 修复:在时区 UTC 偏移输出中包含秒 ([#16300](https://github.com/NousResearch/hermes-agent/pull/16300))
### 审批
- **不可恢复命令的硬性阻止列表** ([#15878](https://github.com/NousResearch/hermes-agent/pull/15878))
- 性能:预编译 DANGEROUS_PATTERNS 和 HARDLINE_PATTERNS ([#17206](https://github.com/NousResearch/hermes-agent/pull/17206))
### ACP
- **广告和转发图像提示** ([#18030](https://github.com/NousResearch/hermes-agent/pull/18030))
### API 服务器
- **POST `/v1/runs/{run_id}/stop`**(抢救 #15656)([#15842](https://github.com/NousResearch/hermes-agent/pull/15842))
- **为外部 UI 暴露运行状态** (#17085) ([#17458](https://github.com/NousResearch/hermes-agent/pull/17458))
### Nix
- **NixOS 模块的声明式插件安装** (@alt-glitch) ([#15953](https://github.com/NousResearch/hermes-agent/pull/15953))
- 修复:在 fix-lockfiles 中使用 `--rebuild` 绕过缓存的 FOD 存储路径 ([#15444](https://github.com/NousResearch/hermes-agent/pull/15444))
- 修复:`extraPackages` 现在通过每用户配置文件实际工作 ([#17047](https://github.com/NousResearch/hermes-agent/pull/17047))
- 修复:刷新 web/ npm-deps 哈希以解除主构建阻塞 ([#17174](https://github.com/NousResearch/hermes-agent/pull/17174))
- 修复:用 Cachix 替换 magic-nix-cache ([#17928](https://github.com/NousResearch/hermes-agent/pull/17928))
---
## 🖥️ TUI
### 新功能
- **LaTeX 渲染** (@austinpickett) ([#17175](https://github.com/NousResearch/hermes-agent/pull/17175))
- **`/reload` .env 热重载** — 从经典 CLI 移植 ([#17286](https://github.com/NousResearch/hermes-agent/pull/17286))
- **可插拔忙碌指示器样式** (@OutThisLife, #13610) ([#17150](https://github.com/NousResearch/hermes-agent/pull/17150))
- **可选自动恢复最近会话** (@OutThisLife) ([#17130](https://github.com/NousResearch/hermes-agent/pull/17130))
- **扩展浅色终端自动检测** — `HERMES_TUI_THEME` + 背景十六进制 (@OutThisLife) ([#17113](https://github.com/NousResearch/hermes-agent/pull/17113))
- **从 `/resume` 选择器按 `d` 删除会话** (@OutThisLife) ([#17668](https://github.com/NousResearch/hermes-agent/pull/17668))
- **修改鼠标滚轮行滚动** (@OutThisLife) ([#17669](https://github.com/NousResearch/hermes-agent/pull/17669))
- **编辑时按 ctrl-x 删除排队消息,按 esc 取消** (@OutThisLife) ([#16707](https://github.com/NousResearch/hermes-agent/pull/16707))
- **详细信息折叠窗的每部分可见性** (@OutThisLife) ([#14968](https://github.com/NousResearch/hermes-agent/pull/14968))
- **语音模式 CLI 一致性** — VAD 循环 + TTS + 崩溃取证 ([#14810](https://github.com/NousResearch/hermes-agent/pull/14810))
- **上下文首次触摸提示移植到 TUI** — `/busy`、`/verbose` ([#16054](https://github.com/NousResearch/hermes-agent/pull/16054))
- **输入字段中 `?` 的迷你帮助菜单** (@ethernet8023) ([#18043](https://github.com/NousResearch/hermes-agent/pull/18043))
### 修复
- 修复:ConPTY 上主动鼠标禁用 + `/mouse` 切换命令 (@kevin-ho,WSL2 幽灵鼠标修复)([#15488](https://github.com/NousResearch/hermes-agent/pull/15488))
- 修复:恢复技能搜索 RPC ([#15870](https://github.com/NousResearch/hermes-agent/pull/15870))
- 性能:跨 yoga flex 重传递缓存文本测量 ([#14818](https://github.com/NousResearch/hermes-agent/pull/14818))
- 性能:稳定长会话滚动 ([#15926](https://github.com/NousResearch/hermes-agent/pull/15926))
- 性能:延迟种子虚拟历史高度 ([#16523](https://github.com/NousResearch/hermes-agent/pull/16523))
- 性能:通过延迟代理初始化将可见冷启动削减 ~57% ([#17190](https://github.com/NousResearch/hermes-agent/pull/17190))
---
## 🖱️ CLI 与用户体验
### 新命令
- **`hermes -z <prompt>`** — 非交互式单次运行模式 ([#15702](https://github.com/NousResearch/hermes-agent/pull/15702))
- **`hermes -z` 带 `--model` / `--provider` / `HERMES_INFERENCE_MODEL`** ([#15704](https://github.com/NousResearch/hermes-agent/pull/15704))
- **`hermes update --check`** 预检标志 ([#15841](https://github.com/NousResearch/hermes-agent/pull/15841))
- **`hermes fallback`** 管理回退提供商的命令 ([#16052](https://github.com/NousResearch/hermes-agent/pull/16052))
- **`/busy`** 斜杠命令用于忙碌输入模式 ([#15382](https://github.com/NousResearch/hermes-agent/pull/15382))
- **`/busy` 输入模式 'steer'** 作为第三个选项 ([#16279](https://github.com/NousResearch/hermes-agent/pull/16279))
- **`/btw` 作为 `/background` 的别名** ([#16053](https://github.com/NousResearch/hermes-agent/pull/16053))
- **`/reload-skills`** 斜杠命令(抢救 #17670)([#17744](https://github.com/NousResearch/hermes-agent/pull/17744))
- **在代理运行占位符中显示 `/queue`、`/bg`、`/steer`** ([#16118](https://github.com/NousResearch/hermes-agent/pull/16118))
### 设置 / 入门
- **现有安装上自动重新配置** ([#15879](https://github.com/NousResearch/hermes-agent/pull/15879))
- **`/busy` 和 `/verbose` 的上下文首次触摸提示** ([#16046](https://github.com/NousResearch/hermes-agent/pull/16046))
- **来自 4 月 30 日每日提示的成本节省技巧** ([#17841](https://github.com/NousResearch/hermes-agent/pull/17841))
- **启动横幅标题超链接到最新 GitHub 版本** ([#14945](https://github.com/NousResearch/hermes-agent/pull/14945))
### 更新 / 备份
- **`git pull` 前快照配对数据** ([#16383](https://github.com/NousResearch/hermes-agent/pull/16383))
- **`hermes update` 前自动备份 HERMES_HOME**(可选,默认关闭)([#16539](https://github.com/NousResearch/hermes-agent/pull/16539), [#16566](https://github.com/NousResearch/hermes-agent/pull/16566))
- **从备份中排除 `checkpoints/`** ([#16572](https://github.com/NousResearch/hermes-agent/pull/16572))
- **从备份中排除 SQLite WAL/SHM/journal 伴生文件** ([#16576](https://github.com/NousResearch/hermes-agent/pull/16576))
- **Linux 上 root 安装的安装程序 FHS 布局** ([#15608](https://github.com/NousResearch/hermes-agent/pull/15608))
- 修复:杀死过时仪表板而非警告 ([#17832](https://github.com/NousResearch/hermes-agent/pull/17832))
- 修复:在 nix 构建的 hermes 上显示正确更新状态 ([#17550](https://github.com/NousResearch/hermes-agent/pull/17550))
### 斜杠命令维护
- 重构:删除 `/provider`、`/plan` 处理程序,清理斜杠注册表 ([#15047](https://github.com/NousResearch/hermes-agent/pull/15047))
- 重构:删除 `persist_session` 管道 + 修复中断的 `/btw` 中途旁路 ([#16075](https://github.com/NousResearch/hermes-agent/pull/16075))
### OpenClaw 迁移(针对 OpenClaw 用户)
- **强化 OpenClaw 导入** — 计划优先应用、脱敏、迁移前备份 ([#16911](https://github.com/NousResearch/hermes-agent/pull/16911))
- 修复:保留大小写品牌重写 + 一次性 `~/.openclaw` 残留横幅 ([#16327](https://github.com/NousResearch/hermes-agent/pull/16327))
- 修复:从 `agents.defaults.workspace` 解析 `openclaw` 工作区文件 ([#16879](https://github.com/NousResearch/hermes-agent/pull/16879))
- 修复:针对真实 OpenClaw 目录架构解析模型别名(抢救 #16778)([#16977](https://github.com/NousResearch/hermes-agent/pull/16977))
---
## 📊 Web 仪表板
- **模型标签页** — 丰富的每模型分析 ([#17745](https://github.com/NousResearch/hermes-agent/pull/17745))
- **从模型页面配置主模型和辅助模型** ([#17802](https://github.com/NousResearch/hermes-agent/pull/17802))
- **仪表板聊天标签页 — xterm.js + JSON-RPC 辅助进程**(取代 #12710 + #13379,@OutThisLife)([#14890](https://github.com/NousResearch/hermes-agent/pull/14890))
- **仪表板布局刷新** (@austinpickett) ([#14899](https://github.com/NousResearch/hermes-agent/pull/14899))
- **仪表板 CLI 上的 `--stop` 和 `--status` 标志** ([#17840](https://github.com/NousResearch/hermes-agent/pull/17840))
- **内置页面的页面范围插件槽** ([#15658](https://github.com/NousResearch/hermes-agent/pull/15658))
- 修复:用设计系统按钮替换所有按钮 ([#17007](https://github.com/NousResearch/hermes-agent/pull/17007))
---
## ⚡ 性能
- **TUI 可见冷启动减少 ~57%** 通过延迟代理初始化 ([#17190](https://github.com/NousResearch/hermes-agent/pull/17190))
- **延迟导入 OpenAI、Anthropic、Firecrawl、account_usage** ([#17046](https://github.com/NousResearch/hermes-agent/pull/17046))
- **基于 mtime 缓存 `load_config()` 和 `read_raw_config()`** ([#17041](https://github.com/NousResearch/hermes-agent/pull/17041))
- **记忆化 `get_tool_definitions()` + TTL 缓存 `check_fn` 结果** ([#17098](https://github.com/NousResearch/hermes-agent/pull/17098))
- **预编译 DANGEROUS_PATTERNS 和 HARDLINE_PATTERNS** ([#17206](https://github.com/NousResearch/hermes-agent/pull/17206))
- **跨 yoga flex 重传递缓存 Ink 文本测量** ([#14818](https://github.com/NousResearch/hermes-agent/pull/14818))
- **稳定长会话滚动** ([#15926](https://github.com/NousResearch/hermes-agent/pull/15926))
- **延迟种子虚拟历史高度** ([#16523](https://github.com/NousResearch/hermes-agent/pull/16523))
---
## 🔒 安全与可靠性
- **密钥脱敏默认关闭** — 阻止虚假密钥替换破坏补丁/API 载荷的长期问题。需要时通过 `redaction.enabled: true` 启用 ([#16794](https://github.com/NousResearch/hermes-agent/pull/16794))
- **所有用户注入标记中 `[SYSTEM:` → `[IMPORTANT:`**(规避 Azure 内容过滤器)([#16114](https://github.com/NousResearch/hermes-agent/pull/16114))
- **不可恢复命令的硬性阻止列表** ([#15878](https://github.com/NousResearch/hermes-agent/pull/15878))
- **规范 `mask_secret` 助手;修复 status.py DIM 漂移** ([#17207](https://github.com/NousResearch/hermes-agent/pull/17207))
- **在真实计时器上清理过期的 paste.rs 上传** ([#16431](https://github.com/NousResearch/hermes-agent/pull/16431))
- **原子文件写入期间保留符号链接** ([#16980](https://github.com/NousResearch/hermes-agent/pull/16980))
- **通过打开而非裸存在来探测 `/dev/tty`** ([#17024](https://github.com/NousResearch/hermes-agent/pull/17024))
---
## 🐛 值得注意的错误修复
此窗口包含 360 个 `fix:` PR。跨堆栈选出的亮点:
- **后台审查分支继承父级实时运行时** — 提供商/模型/凭据现在正确传播 ([#16099](https://github.com/NousResearch/hermes-agent/pull/16099))
- **Hindsight 可配置 `HINDSIGHT_TIMEOUT` 环境变量** ([#15077](https://github.com/NousResearch/hermes-agent/pull/15077))
- **工具:规范化数字条目 + 清除 `_save_platform_tools` 中的陈旧 `no_mcp`** ([#15607](https://github.com/NousResearch/hermes-agent/pull/15607))
- **MCP:将 `definitions` 引用重写为输入架构中的 `$defs`** — 关闭提供商端 400 错误
- **Azure 内容过滤器兼容性** — 重命名 `[SYSTEM:` 标记,使 Azure 内容过滤器停止标记它们 ([#16114](https://github.com/NousResearch/hermes-agent/pull/16114))
- **视觉缓存使用 HERMES_HOME 而非 cwd** ([#17719](https://github.com/NousResearch/hermes-agent/pull/17719))
- **FTS5 搜索** — 带修复+迁移的 tool_name + tool_calls 索引 ([#16914](https://github.com/NousResearch/hermes-agent/pull/16914))
- **流式推理在助手回合上持久化** ([#16892](https://github.com/NousResearch/hermes-agent/pull/16892))
- **execute_code 并发 RPC 序列化** (#17770) ([#17894](https://github.com/NousResearch/hermes-agent/pull/17894), [#17902](https://github.com/NousResearch/hermes-agent/pull/17902))
- **后台审查器限制在记忆+技能工具集** — 不再意外 web/shell 逃逸 ([#16569](https://github.com/NousResearch/hermes-agent/pull/16569))
- **压缩恢复** — 主模型重试再放弃;辅助失败时通知用户 ([#16774](https://github.com/NousResearch/hermes-agent/pull/16774), [#16775](https://github.com/NousResearch/hermes-agent/pull/16775))
- **`croniter` 提升为核心依赖** ([#17577](https://github.com/NousResearch/hermes-agent/pull/17577))
- **Discord 工具 `limit` 参数在 `min()` 调用前强制转换为整数** ([#16319](https://github.com/NousResearch/hermes-agent/pull/16319))
- **元宝消息平台入口修复** ([#16880](https://github.com/NousResearch/hermes-agent/pull/16880))
- **ACP 广告和转发图像提示** ([#18030](https://github.com/NousResearch/hermes-agent/pull/18030))
- **DeepSeek / Kimi 推理内容隔离** 跨提供商历史 (@Zjianru) ([#15749](https://github.com/NousResearch/hermes-agent/pull/15749), [#15762](https://github.com/NousResearch/hermes-agent/pull/15762))
- **在 DeepSeek v4 + Kimi/Moonshot 思维上保留 reasoning_content 重放** ([#18045](https://github.com/NousResearch/hermes-agent/pull/18045))
360 个修复中的绝大多数落在所有提供商的流式传输/压缩/工具调用路径上 — DeepSeek、Kimi、Moonshot、GLM、Qwen、MiniMax、Gemini、Anthropic、OpenAI — 以及 TUI 打磨(调整大小、滚动、粘性提示)和网关平台特定边缘情况。
---
## 🧪 测试与 CI
- 此窗口保持 hermetic 测试一致性 (`scripts/run_tests.sh`)
- **Microsoft Teams xdist 冲突防护** — 防止 Teams 平台测试并行运行时工作程序冲突 ([#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- 杂项:移除未使用导入和死局部变量 (ruff F401, F841) ([#17010](https://github.com/NousResearch/hermes-agent/pull/17010))
---
## 📚 文档
- **策展器功能页面** 添加到文档站点 ([#17563](https://github.com/NousResearch/hermes-agent/pull/17563))
- **文档固定也阻止 `skill_manage` 写入** ([#17578](https://github.com/NousResearch/hermes-agent/pull/17578))
- **直接 URL 技能安装** 在功能、参考、指南和 `hermes-agent` 技能中记录 ([#16355](https://github.com/NousResearch/hermes-agent/pull/16355))
- **钩子教程 — 构建 BOOT.md 启动清单**(替换移除的内置钩子)([#17202](https://github.com/NousResearch/hermes-agent/pull/17202))
- **ComfyUI 文档:硬件检查前先询问本地 vs 云** ([#17612](https://github.com/NousResearch/hermes-agent/pull/17612))
- **Obliteratus 技能:在 SKILL.md 中链接 YouTube 视频指南** ([#15808](https://github.com/NousResearch/hermes-agent/pull/15808))
- 为捆绑+可选技能生成每技能文档页面;ASCII 艺术代码块自动换行 ([#14929](https://github.com/NousResearch/hermes-agent/pull/14929), [#16497](https://github.com/NousResearch/hermes-agent/pull/16497))
---
## ⚖️ 移除 / 回滚
- **看板多配置文件协作板** — 在 #16081 中落地,在 ([#16098](https://github.com/NousResearch/hermes-agent/pull/16098)) 中回滚,同时重新设计
- **computer-use cua-driver** — 3 个准备 PR 落地后在 ([#16927](https://github.com/NousResearch/hermes-agent/pull/16927)) 中回滚
- **BOOT.md 内置钩子** 移除 ([#17093](https://github.com/NousResearch/hermes-agent/pull/17093));钩子教程 ([#17202](https://github.com/NousResearch/hermes-agent/pull/17202)) 展示如何用 shell 钩子构建相同工作流
- **`/provider` + `/plan` 斜杠命令删除** ([#15047](https://github.com/NousResearch/hermes-agent/pull/15047))
- **完全移除 `flush_memories`** ([#15696](https://github.com/NousResearch/hermes-agent/pull/15696))
---
## 👥 贡献者
### 核心
- **@teknium1** (Teknium)
### 顶级社区贡献者(按 v0.11.0 以来合并 PR 数排序)
- **@OutThisLife** (Brooklyn) — 52 个 PR · TUI — 浅色终端检测 + 可插拔忙碌样式 + 自动恢复 + 从 /resume 删除会话 + 鼠标滚轮滚动 + xterm.js 仪表板聊天标签页 + 冷启动削减 + 手风琴打磨
- **@kshitijk4poor** — 12 个 PR · LM Studio 一级提供商(抢救)、Vercel Sandbox 后端、GMI Cloud 抢救、默认捆绑 touchdesigner-mcp、许多工具调用/推理修复
- **@helix4u** — 10 个 PR · MCP 架构稳健性、各种稳定性修复
- **@alt-glitch** — 8 个 PR · 三元组 FTS5 CJK 搜索、Nix 插件安装声明式、matrix/feishu 提示和修复
- **@ethernet8023** — 4 个 PR
- **@austinpickett** — 4 个 PR · TUI 中 LaTeX 渲染、仪表板布局刷新
- **@benbarclay** — 3 个 PR · Docker 以主机用户运行,避免绑定挂载获得 root 所有权
- **@vominh1919** — 2 个 PR
- **@stephenschoettler** — 2 个 PR
- **@kevin-ho** — ConPTY 鼠标注入修复 (#15488)
- **@Zjianru** — 跨提供商 reasoning_content 隔离 + DeepSeek/Kimi 空推理注入 (#15749, #15762)
- **@web3blind** — Telegram 群组和论坛聊天白名单 (#15027)
- **@SHL0MS** — 9 个新 TouchDesigner-MCP 参考文档 (#16768)
- **@0xDevNinja** — 策展器 `restore_skill` 嵌套归档修复 (#17951)
- **@y0shua1ee** — 策展器 `use` 活动修复 (#17953)
### 另有贡献
来自 **@isaachuangGMICLOUD** (GMI Cloud)、原始作者早期上游 PR 的抢救或合著工作,以及社区的长尾一次性修复、文档推动和技能贡献。
### 所有贡献者(按字母顺序,排除 @teknium1)
@0xbyt4, @0xharryriddle, @0xDevNinja, @0z1-ghb, @5park1e, @A-FdL-Prog, @aj-nt, @akhater, @alblez, @alexg0bot,
@alexzhu0, @AllardQuek, @alt-glitch, @amanning3390, @amanuel2, @AndreKurait, @andrewhosf, @Andy283, @andyylin,
@angel12, @AntAISecurityLab, @ash, @austinpickett, @badgerbees, @BadTechBandit, @Bartok9, @beenherebefore,
@beesrsj2500, @BeliefanX, @benbarclay, @benjaminsehl, @BlackishGreen33, @bloodcarter, @BlueBirdBack,
@briandevans, @brooklynnicholson, @bsgdigital, @buray, @bwjoke, @camaragon, @cdanis, @cgarwood82,
@charles-brooks, @chen1749144759, @chengoak, @ching-kaching, @Contentment003111, @crayfish-ai, @CruxExperts,
@cyclingwithelephants, @dandaka, @danklynn, @ddupont808, @dhabibi, @difujia, @dimitrovi, @dlkakbs,
@dontcallmejames, @EKKOLearnAI, @emozilla, @ericnicolaides, @Erosika, @ethernet8023, @exiao, @Feranmi10,
@flobo3, @foxion37, @georgeglessner, @georgex8001, @ghostmfr, @H-Ali13381, @HangGlidersRule, @harryplusplus,
@haru398801, @heathley, @hejuntt1014, @hekaru-agent, @helix4u, @Heltman, @HenkDz, @heyitsaamir, @hharry11,
@hhhonzik, @hhuang91, @HiddenPuppy, @htsh, @iamagenius00, @in-liberty420, @innocarpe, @irispillars, @iRonin,
@isaachuangGMICLOUD, @Ito-69, @j3ffffff, @jackjin1997, @jakubkrcmar, @Jason2031, @JayGwod, @jerome-benoit,
@johnncenae, @Kailigithub, @keiravoss94, @kevin-ho, @knockyai, @konsisumer, @kshitijk4poor, @kunlabs, @l0hde,
@Leihb, @leoneparise, @LeonSGP43, @liizfq, @liuhao1024, @loongzhao, @lsdsjy, @luyao618, @ma-pony, @Magaav,
@MagicRay1217, @math0r-be, @MattMaximo, @maxims-oss, @MaxyMoos, @maymuneth, @mcndjxlefnd, @memosr,
@MestreY0d4-Uninter, @mewwts, @Mirac1eSky, @MorAlekss, @mrhwick, @mrunmayee17, @mssteuer, @Nanako0129,
@nazirulhafiy, @Nerijusas, @Nicecsh, @nicoloboschi, @nightq, @ningfangbin, @octo-patch, @Octopus,
@OutThisLife, @Paperclip, @pein892, @perlowja, @prasadus92, @qike-ms, @qiyin-code, @Readon, @ReginaldasR,
@revaraver, @rfilgueiras, @rmoen, @romanornr, @rugvedS07, @rylena, @samrusani, @Sanjays2402, @sasha-id,
@Satoshi-agi, @scheidti, @scotttrinh, @season179, @SeeYangZhi, @sgaofen, @shamork, @shannonsands, @SHL0MS,
@simbam99, @Societus, @socrates1024, @Sonoyunchu, @sprmn24, @stephenschoettler, @tangyuanjc, @TechPrototyper,
@tekgnosis-net, @ThomassJonax, @tmimmanuel, @tochukwuada, @Tosko4, @Tranquil-Flow, @twozle, @txbxxx,
@UgwujaGeorge, @Versun, @vlwkaos, @voidborne-d, @vominh1919, @Wang-tianhao, @Wangshengyang2004, @web3blind,
@westers, @Wysie, @xandersbell, @xiahu88988, @XieNBi, @xinbenlv, @xnbi, @y0shua1ee, @yatesjalex, @yes999zc,
@yeyitech, @Yoimex, @YueLich, @Yukipukii1, @zhiyanliu, @zicochaos, @Zjianru, @zkl2333, @zons-zhaozhy,
@ztexydt-cqh。
另有:@Siddharth Balyan, @YuShu。
---
**完整变更日志**:[v2026.4.23...v2026.4.30](https://github.com/NousResearch/hermes-agent/compare/v2026.4.23...v2026.4.30)
# Hermes Agent v0.12.0 (v2026.4.30)
**Release Date:** April 30, 2026
**Since v0.11.0:** 1,096 commits · 550 merged PRs · 1,270 files changed · 217,776 insertions · 213 community contributors (including co-authors)
> The Curator release — Hermes Agent now maintains itself. An autonomous background Curator grades, prunes, and consolidates your skill library on its own schedule. The self-improvement loop that reviews what to save got a substantial upgrade. Four new inference providers, a 18th messaging platform, a 19th via Teams plugin, native Spotify + Google Meet integrations, ComfyUI and TouchDesigner-MCP moved from optional to bundled-by-default, and a ~57% cut to visible TUI cold start.
---
## ✨ Highlights
- **Autonomous Curator** — `hermes curator` runs as a background agent on the gateway's cron ticker (7-day cycle default). It grades your skill library, consolidates related skills, prunes dead ones, and writes per-run reports to `logs/curator/run.json` + `REPORT.md`. Archived skills are classified consolidated-vs-pruned via model + heuristic. Defense-in-depth gates protect bundled/hub skills from mutation. Unified under `auxiliary.curator` — pick the curator's model in `hermes model`, manage it from the dashboard. `hermes curator status` ranks skills by usage (most-used / least-used). ([#17277](https://github.com/NousResearch/hermes-agent/pull/17277), [#17307](https://github.com/NousResearch/hermes-agent/pull/17307), [#17941](https://github.com/NousResearch/hermes-agent/pull/17941), [#17868](https://github.com/NousResearch/hermes-agent/pull/17868), [#18033](https://github.com/NousResearch/hermes-agent/pull/18033))
- **Self-improvement loop — substantially upgraded** — The background review fork (the core of Hermes' self-improvement: after each turn it decides what memories/skills to save or update) is now class-first (rubric-based rather than free-form), active-update biased (prefers the skill the agent just loaded), handles `references/`/`templates/` sub-files, and properly inherits the parent's live runtime (provider, model, credentials actually propagate). Restricted to memory + skills toolsets so it can't sprawl. Memory providers shut down cleanly. Prior-turn tool messages excluded from the summary so the fork sees a clean context. ([#16026](https://github.com/NousResearch/hermes-agent/pull/16026), [#17213](https://github.com/NousResearch/hermes-agent/pull/17213), [#16099](https://github.com/NousResearch/hermes-agent/pull/16099), [#16569](https://github.com/NousResearch/hermes-agent/pull/16569), [#16204](https://github.com/NousResearch/hermes-agent/pull/16204), [#15057](https://github.com/NousResearch/hermes-agent/pull/15057))
- **Skill integrations — major expansion** — **ComfyUI v5** with official CLI + REST + hardware-gated local install, moved from optional to **built-in by default** ([#17610](https://github.com/NousResearch/hermes-agent/pull/17610), [#17631](https://github.com/NousResearch/hermes-agent/pull/17631), [#17734](https://github.com/NousResearch/hermes-agent/pull/17734)). **TouchDesigner-MCP** bundled by default, expanded with GLSL, post-FX, audio, geometry, and 9 new reference docs ([#16753](https://github.com/NousResearch/hermes-agent/pull/16753), [#16624](https://github.com/NousResearch/hermes-agent/pull/16624), [#16768](https://github.com/NousResearch/hermes-agent/pull/16768) — @kshitijk4poor + @SHL0MS). **Humanizer** skill ports a text-cleaner that strips AI-isms ([#16787](https://github.com/NousResearch/hermes-agent/pull/16787)). **claude-design** HTML artifact skill + design-md (Google DESIGN.md spec) + airtable salvage + `skill_manage` edits in `external_dirs` + direct-URL skill install + `/reload-skills` slash command. ([#16358](https://github.com/NousResearch/hermes-agent/pull/16358), [#14876](https://github.com/NousResearch/hermes-agent/pull/14876), [#16291](https://github.com/NousResearch/hermes-agent/pull/16291), [#17512](https://github.com/NousResearch/hermes-agent/pull/17512), [#16323](https://github.com/NousResearch/hermes-agent/pull/16323), [#17744](https://github.com/NousResearch/hermes-agent/pull/17744))
- **LM Studio — first-class provider** — upgraded from a custom-endpoint alias to a full-blown native provider: dedicated auth, `hermes doctor` checks, reasoning transport, live `/models` listing. (Salvage of @kshitijk4poor's #17061.) ([#17102](https://github.com/NousResearch/hermes-agent/pull/17102))
- **Four more new inference providers** — **GMI Cloud** (first-class, salvage of #11955 — @isaachuangGMICLOUD), **Azure AI Foundry** with auto-detection, **MiniMax OAuth** with PKCE browser flow (salvage #15203), **Tencent Tokenhub** (salvage of #16860). ([#16663](https://github.com/NousResearch/hermes-agent/pull/16663), [#15845](https://github.com/NousResearch/hermes-agent/pull/15845), [#17524](https://github.com/NousResearch/hermes-agent/pull/17524), [#16960](https://github.com/NousResearch/hermes-agent/pull/16960))
- **Pluggable gateway platforms + Microsoft Teams** — the gateway is now a plugin host. Drop-in messaging adapters live outside the core, and Microsoft Teams is the first plugin-shipped platform. (Salvage of #17664.) ([#17751](https://github.com/NousResearch/hermes-agent/pull/17751), [#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- **Tencent 元宝 (Yuanbao) — 18th messaging platform** — native gateway adapter with text + media delivery. ([#16298](https://github.com/NousResearch/hermes-agent/pull/16298), [#17424](https://github.com/NousResearch/hermes-agent/pull/17424))
- **Spotify — native tools + bundled skill + wizard** — 7 tools (play, search, queue, playlists, devices) behind PKCE OAuth, interactive setup wizard, bundled skill, surfacing in `hermes tools`, cron usage documented. ([#15121](https://github.com/NousResearch/hermes-agent/pull/15121), [#15130](https://github.com/NousResearch/hermes-agent/pull/15130), [#15154](https://github.com/NousResearch/hermes-agent/pull/15154), [#15180](https://github.com/NousResearch/hermes-agent/pull/15180))
- **Google Meet plugin** — join calls, transcribe, speak, follow up. Realtime OpenAI transport + Node bot server, full pipeline bundled as a plugin. ([#16364](https://github.com/NousResearch/hermes-agent/pull/16364))
- **`hermes -z` one-shot mode + `hermes update --check`** — non-interactive `hermes -z <prompt>` with `--model`/`--provider`/`HERMES_INFERENCE_MODEL`. `hermes update --check` preflight. Opt-in pre-update HERMES_HOME backup. ([#15702](https://github.com/NousResearch/hermes-agent/pull/15702), [#15704](https://github.com/NousResearch/hermes-agent/pull/15704), [#15841](https://github.com/NousResearch/hermes-agent/pull/15841), [#16539](https://github.com/NousResearch/hermes-agent/pull/16539), [#16566](https://github.com/NousResearch/hermes-agent/pull/16566))
- **Models dashboard tab + in-browser model config** — rich per-model analytics, switch main + auxiliary models from the dashboard. ([#17745](https://github.com/NousResearch/hermes-agent/pull/17745), [#17802](https://github.com/NousResearch/hermes-agent/pull/17802))
- **Remote model catalog manifest** — OpenRouter + Nous Portal model catalogs are now pulled from a remote manifest so new models show up without a release. ([#16033](https://github.com/NousResearch/hermes-agent/pull/16033))
- **Native multimodal image routing** — images now route based on the model's actual vision capability rather than provider defaults. ([#16506](https://github.com/NousResearch/hermes-agent/pull/16506))
- **Gateway media parity** — native multi-image sending across Telegram, Discord, Slack, Mattermost, Email, and Signal; centralized audio routing with FLAC support + Telegram document fallback. ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909), [#17833](https://github.com/NousResearch/hermes-agent/pull/17833))
- **TUI catches up to (and past) the classic CLI** — LaTeX rendering (@austinpickett), `/reload` .env hot-reload, pluggable busy-indicator styles (@OutThisLife, #13610), opt-in auto-resume of last session, expanded light-terminal auto-detection, session delete from `/resume` picker with `d`, modified mouse-wheel line scroll, and a `/mouse` toggle that kills ConPTY's phantom mouse injection (@kevin-ho). ([#17175](https://github.com/NousResearch/hermes-agent/pull/17175), [#17286](https://github.com/NousResearch/hermes-agent/pull/17286), [#17150](https://github.com/NousResearch/hermes-agent/pull/17150), [#17130](https://github.com/NousResearch/hermes-agent/pull/17130), [#17113](https://github.com/NousResearch/hermes-agent/pull/17113), [#17668](https://github.com/NousResearch/hermes-agent/pull/17668), [#17669](https://github.com/NousResearch/hermes-agent/pull/17669), [#15488](https://github.com/NousResearch/hermes-agent/pull/15488))
- **Observability + achievements plugins** — bundled Langfuse observability plugin (salvage #16845) + bundled hermes-achievements plugin that scans full session history. ([#16917](https://github.com/NousResearch/hermes-agent/pull/16917), [#17754](https://github.com/NousResearch/hermes-agent/pull/17754))
- **TTS provider registry + Piper local TTS** — pluggable `tts.providers.<name>` registry; Piper ships as a native local TTS provider. (Closes #8508.) ([#17843](https://github.com/NousResearch/hermes-agent/pull/17843), [#17885](https://github.com/NousResearch/hermes-agent/pull/17885))
- **Vercel Sandbox backend** — Vercel sandboxes as an execute_code/terminal backend (@kshitijk4poor). ([#17445](https://github.com/NousResearch/hermes-agent/pull/17445))
- **Secret redaction off by default** — default flipped to off. Prevents the long-standing patch-corruption incidents where fake secret-shaped substrings mangled tool outputs. Opt in via `redaction.enabled: true` when you need it. ([#16794](https://github.com/NousResearch/hermes-agent/pull/16794))
- **Cold-start performance** — visible TUI cold start cut **~57%** via lazy agent init (@OutThisLife), lazy imports of OpenAI / Anthropic / Firecrawl / account_usage, mtime-cached `load_config()`, memoized `get_tool_definitions()` with TTL-cached `check_fn` results, precompiled dangerous-command patterns. ([#17190](https://github.com/NousResearch/hermes-agent/pull/17190), [#17046](https://github.com/NousResearch/hermes-agent/pull/17046), [#17041](https://github.com/NousResearch/hermes-agent/pull/17041), [#17098](https://github.com/NousResearch/hermes-agent/pull/17098), [#17206](https://github.com/NousResearch/hermes-agent/pull/17206))
- **Configurable prompt cache TTL** — `prompt_caching.cache_ttl` (5m default, 1h opt-in — cost savings for bursty sessions that keep cache warm). Salvage of #12659. ([#15065](https://github.com/NousResearch/hermes-agent/pull/15065))
---
## 🧠 Autonomous Curator & Self-Improvement Loop
### Curator — autonomous skill maintenance
- **`hermes curator` as a background agent** — runs on the gateway's cron ticker, 7-day cycle by default, umbrella-first prompt, inherits parent config, unbounded iterations ([#17277](https://github.com/NousResearch/hermes-agent/pull/17277) — issue #7816)
- **Per-run reports** — `logs/curator/run.json` + `REPORT.md` per cycle ([#17307](https://github.com/NousResearch/hermes-agent/pull/17307))
- **Consolidated vs pruned classification** — archived skills split with model + heuristic ([#17941](https://github.com/NousResearch/hermes-agent/pull/17941))
- **`hermes curator status`** — ranks skills by usage, shows most-used and least-used ([#18033](https://github.com/NousResearch/hermes-agent/pull/18033))
- **Unified under `auxiliary.curator`** — pick the model in `hermes model`, configure from the dashboard ([#17868](https://github.com/NousResearch/hermes-agent/pull/17868))
- **Documentation** — dedicated curator feature page on the docs site ([#17563](https://github.com/NousResearch/hermes-agent/pull/17563))
- Fix: seed defaults on update, create `logs/curator/` directory, defer fire import ([#17927](https://github.com/NousResearch/hermes-agent/pull/17927))
- Fix: scan nested archive subdirs in `restore_skill` (@0xDevNinja) ([#17951](https://github.com/NousResearch/hermes-agent/pull/17951))
- Fix: use actual skill activity in curator status (@y0shua1ee) ([#17953](https://github.com/NousResearch/hermes-agent/pull/17953))
- Fix: `skill_manage` refuses writes on pinned skills; pinning now blocks curator writes ([#17562](https://github.com/NousResearch/hermes-agent/pull/17562), [#17578](https://github.com/NousResearch/hermes-agent/pull/17578))
- Fix: `bump_use()` wired into skill invocation + preload + skill_view (salvage #17782) ([#17932](https://github.com/NousResearch/hermes-agent/pull/17932))
### Self-improvement loop (background review fork)
- **Class-first skill-review prompt** — rubric-based grading rather than free-form "should this update" ([#16026](https://github.com/NousResearch/hermes-agent/pull/16026))
- **Active-update bias** — prefers updating skills the agent just loaded, handles `references/` + `templates/` sub-files ([#17213](https://github.com/NousResearch/hermes-agent/pull/17213))
- **Fork inherits parent's live runtime** — provider, model, credentials actually propagate now ([#16099](https://github.com/NousResearch/hermes-agent/pull/16099))
- **Scoped toolsets** — review fork restricted to memory + skills (no shell, no web) ([#16569](https://github.com/NousResearch/hermes-agent/pull/16569))
- **Clean shutdown** — background review memory providers exit properly (salvage #15289) ([#16204](https://github.com/NousResearch/hermes-agent/pull/16204))
- **Clean context** — prior-history tool messages excluded from review summary (salvage #14967) ([#15057](https://github.com/NousResearch/hermes-agent/pull/15057))
---
## 🧩 Skills Ecosystem
### Skill integrations — newly bundled or promoted
- **ComfyUI v5** — official CLI + REST + hardware-gated local install; **moved from optional to built-in** ([#17610](https://github.com/NousResearch/hermes-agent/pull/17610), [#17631](https://github.com/NousResearch/hermes-agent/pull/17631), [#17734](https://github.com/NousResearch/hermes-agent/pull/17734), [#17612](https://github.com/NousResearch/hermes-agent/pull/17612))
- **TouchDesigner-MCP** — **bundled by default** ([#16753](https://github.com/NousResearch/hermes-agent/pull/16753) — @kshitijk4poor), expanded with GLSL, post-FX, audio, geometry references ([#16624](https://github.com/NousResearch/hermes-agent/pull/16624)), 9 new reference docs ([#16768](https://github.com/NousResearch/hermes-agent/pull/16768) — @SHL0MS)
- **Humanizer** — strips AI-isms from text ([#16787](https://github.com/NousResearch/hermes-agent/pull/16787))
- **claude-design** — HTML artifact skill with disambiguation from other design skills ([#16358](https://github.com/NousResearch/hermes-agent/pull/16358))
- **design-md** — Google's DESIGN.md spec skill ([#14876](https://github.com/NousResearch/hermes-agent/pull/14876))
- **airtable** — salvaged skill + skill API keys wired into `.env` (#15838) ([#16291](https://github.com/NousResearch/hermes-agent/pull/16291))
- **pretext** — creative browser demos with @chenglou/pretext ([#17259](https://github.com/NousResearch/hermes-agent/pull/17259))
- **spike** + **sketch** — throwaway experiments + HTML mockups, adapted from gsd-build ([#17421](https://github.com/NousResearch/hermes-agent/pull/17421))
### Skills UX
- **Install skills from a direct HTTP(S) URL** — `hermes skills install <url>` ([#16323](https://github.com/NousResearch/hermes-agent/pull/16323))
- **`/reload-skills`** slash command (salvage #17670) ([#17744](https://github.com/NousResearch/hermes-agent/pull/17744))
- **`hermes skills list`** shows enabled/disabled status ([#16129](https://github.com/NousResearch/hermes-agent/pull/16129))
- **`skill_manage` refuses writes on pinned skills** ([#17562](https://github.com/NousResearch/hermes-agent/pull/17562))
- **`skill_manage` edits external_dirs skills in place** (salvage #9966) ([#17512](https://github.com/NousResearch/hermes-agent/pull/17512), [#17289](https://github.com/NousResearch/hermes-agent/pull/17289))
- Fix: inline-shell rendering in `skill_view` ([#15376](https://github.com/NousResearch/hermes-agent/pull/15376))
- Fix: exclude `.archive/` from skill index walk (salvage #17639) ([#17931](https://github.com/NousResearch/hermes-agent/pull/17931))
- Fix: dedicated docs page per bundled + optional skill ([#14929](https://github.com/NousResearch/hermes-agent/pull/14929))
- Fix: `google-workspace` shared HERMES_HOME helper + ship deps as optional extra ([#15405](https://github.com/NousResearch/hermes-agent/pull/15405))
- Fix: auto-wrap ASCII-art code blocks in generated skill pages ([#16497](https://github.com/NousResearch/hermes-agent/pull/16497))
- Point agent at `hermes-agent` skill + docs site for Hermes questions ([#16535](https://github.com/NousResearch/hermes-agent/pull/16535))
---
## 🏗️ Core Agent & Architecture
### Provider & Model Support
#### New providers
- **GMI Cloud** — first-class API-key provider on par with Arcee/Kilocode/Xiaomi (salvage of #11955 — @isaachuangGMICLOUD) ([#16663](https://github.com/NousResearch/hermes-agent/pull/16663))
- **Azure AI Foundry** — auto-detection, full wiring ([#15845](https://github.com/NousResearch/hermes-agent/pull/15845))
- **LM Studio** — upgraded from custom-endpoint alias to first-class provider: dedicated auth, doctor checks, reasoning transport, live `/models` (salvage of #17061 — @kshitijk4poor) ([#17102](https://github.com/NousResearch/hermes-agent/pull/17102))
- **MiniMax OAuth** — PKCE browser flow with full OAuth integration (salvage #15203) ([#17524](https://github.com/NousResearch/hermes-agent/pull/17524))
- **Tencent Tokenhub** — new provider (salvage of #16860) ([#16960](https://github.com/NousResearch/hermes-agent/pull/16960))
#### Model catalog
- **Remote model catalog manifest** — OpenRouter + Nous Portal catalogs pulled from remote manifest so new models show up without a release ([#16033](https://github.com/NousResearch/hermes-agent/pull/16033))
- `openai/gpt-5.5` and `gpt-5.5-pro` added to OpenRouter + Nous Portal ([#15343](https://github.com/NousResearch/hermes-agent/pull/15343))
- `deepseek-v4-pro` and `deepseek-v4-flash` added ([#14934](https://github.com/NousResearch/hermes-agent/pull/14934))
- `qwen3.6-plus` added to Alibaba-supported models ([#16896](https://github.com/NousResearch/hermes-agent/pull/16896))
- Gemini free-tier keys blocked at setup with 429 guidance surfacing ([#15100](https://github.com/NousResearch/hermes-agent/pull/15100))
#### Model configuration
- **Configurable `prompt_caching.cache_ttl`** — 5m default, 1h opt-in (salvage #12659) ([#15065](https://github.com/NousResearch/hermes-agent/pull/15065))
- `/fast` whitelist broadened to all OpenAI + Anthropic models ([#16883](https://github.com/NousResearch/hermes-agent/pull/16883))
- `auxiliary.extra_body.reasoning` translates into Codex Responses API ([#17004](https://github.com/NousResearch/hermes-agent/pull/17004))
- `hermes fallback` command for managing fallback providers ([#16052](https://github.com/NousResearch/hermes-agent/pull/16052))
### Agent Loop & Conversation
- **Native multimodal image routing** — based on model vision capability, not provider defaults ([#16506](https://github.com/NousResearch/hermes-agent/pull/16506))
- **Delegate `child_timeout_seconds` default bumped to 600s** ([#14809](https://github.com/NousResearch/hermes-agent/pull/14809))
- **Diagnostic dump when subagent times out with 0 API calls** ([#15105](https://github.com/NousResearch/hermes-agent/pull/15105))
- **Gateway busts cached agent on compression/context_length config edits** ([#17008](https://github.com/NousResearch/hermes-agent/pull/17008))
- **Opt-in runtime-metadata footer on final replies** ([#17026](https://github.com/NousResearch/hermes-agent/pull/17026))
- `/reload-mcp` awareness — rebuild cached agents + prompt-cache cost confirmation ([#17729](https://github.com/NousResearch/hermes-agent/pull/17729))
- Fix: repair CamelCase + `_tool` suffix tool-call emissions ([#15124](https://github.com/NousResearch/hermes-agent/pull/15124))
- Fix: retry on `json.JSONDecodeError` instead of treating as local validation error ([#15107](https://github.com/NousResearch/hermes-agent/pull/15107))
- Fix: handle unescaped control chars in `tool_call.arguments` ([#15356](https://github.com/NousResearch/hermes-agent/pull/15356))
- Fix: ordering fix in `_copy_reasoning_content_for_api` — cross-provider reasoning isolation (@Zjianru) ([#15749](https://github.com/NousResearch/hermes-agent/pull/15749))
- Fix: inject empty `reasoning_content` for DeepSeek/Kimi `tool_calls` unconditionally (@Zjianru) ([#15762](https://github.com/NousResearch/hermes-agent/pull/15762))
- Fix: persist streamed `reasoning_content` on assistant turns (#16844) ([#16892](https://github.com/NousResearch/hermes-agent/pull/16892))
- Fix: cancel coroutine on timeout so worker thread exits; full traceback on tool failure ([#17428](https://github.com/NousResearch/hermes-agent/pull/17428))
- Fix: isolate `get_tool_definitions` quiet_mode cache + dedup LCM injection (#17335) ([#17889](https://github.com/NousResearch/hermes-agent/pull/17889))
- Fix: serialize concurrent `hermes_tools` RPC calls from `execute_code` (#17770) ([#17894](https://github.com/NousResearch/hermes-agent/pull/17894), [#17902](https://github.com/NousResearch/hermes-agent/pull/17902))
- Fix: rename `[SYSTEM:` → `[IMPORTANT:` in all user-injected markers (dodges Azure content filter) ([#16114](https://github.com/NousResearch/hermes-agent/pull/16114))
### Compression
- **Retry summary on main model for unknown errors before giving up** ([#16774](https://github.com/NousResearch/hermes-agent/pull/16774))
- **Notify users when configured aux model fails even if main-model fallback recovers** ([#16775](https://github.com/NousResearch/hermes-agent/pull/16775))
- `/compress` wrapped in `_busy_command` to block input during compression ([#15388](https://github.com/NousResearch/hermes-agent/pull/15388))
- Fix: reserve system + tools headroom when aux binds threshold ([#15631](https://github.com/NousResearch/hermes-agent/pull/15631))
- Fix: use text-char sum for multimodal token estimation in `_find_tail_cut_by_tokens` ([#16369](https://github.com/NousResearch/hermes-agent/pull/16369))
### Session, Memory & State
- **Trigram FTS5 index for CJK search, replace LIKE fallback** (@alt-glitch) ([#16651](https://github.com/NousResearch/hermes-agent/pull/16651))
- **Index `tool_name` + `tool_calls` in FTS5, with repair + migration** (salvages #16866) ([#16914](https://github.com/NousResearch/hermes-agent/pull/16914))
- **Checkpoints: auto-prune orphan and stale shadow repos at startup** ([#16303](https://github.com/NousResearch/hermes-agent/pull/16303))
- **Memory providers notified on mid-process session_id rotation** (#6672) ([#17409](https://github.com/NousResearch/hermes-agent/pull/17409))
- Fix: quote underscored terms in FTS5 query sanitization ([#16915](https://github.com/NousResearch/hermes-agent/pull/16915))
- Fix: resolve viking_read 500/412 on file URIs + pseudo-summary URIs (salvage #5886) ([#17869](https://github.com/NousResearch/hermes-agent/pull/17869))
- Fix: skip external-provider sync on interrupted turns ([#15395](https://github.com/NousResearch/hermes-agent/pull/15395))
- Fix: close embedded Hindsight async client cleanly (salvage #14605) ([#16209](https://github.com/NousResearch/hermes-agent/pull/16209))
- Fix: pass session transcript to `shutdown_memory_provider` on gateway + CLI (#15165) ([#16571](https://github.com/NousResearch/hermes-agent/pull/16571))
- Fix: write-origin metadata seam ([#15346](https://github.com/NousResearch/hermes-agent/pull/15346))
- Fix: preserve symlinks during atomic file writes ([#16980](https://github.com/NousResearch/hermes-agent/pull/16980))
- Refactor: remove `flush_memories` entirely ([#15696](https://github.com/NousResearch/hermes-agent/pull/15696))
### Auxiliary models
- Fix: surface auxiliary failures in UI (previously silent) ([#15324](https://github.com/NousResearch/hermes-agent/pull/15324))
- Fix: surface title-gen auxiliary failures instead of silently dropping ([#16371](https://github.com/NousResearch/hermes-agent/pull/16371))
- Fix: generalize unsupported-parameter detector and harden `max_tokens` retry ([#15633](https://github.com/NousResearch/hermes-agent/pull/15633))
---
## 📱 Messaging Platforms (Gateway)
### New Platforms
- **Microsoft Teams (19th platform)** — as a plugin, + xdist collision guard ([#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- **Yuanbao (Tencent 元宝, 18th platform)** — native adapter with text + media delivery ([#16298](https://github.com/NousResearch/hermes-agent/pull/16298), [#17424](https://github.com/NousResearch/hermes-agent/pull/17424), [#16880](https://github.com/NousResearch/hermes-agent/pull/16880))
### Pluggable Gateway Platforms
- **Drop-in messaging adapters** — the gateway is now a plugin host for platforms (salvage of #17664) ([#17751](https://github.com/NousResearch/hermes-agent/pull/17751))
### Telegram
- **Chat allowlists for groups and forums** (@web3blind) ([#15027](https://github.com/NousResearch/hermes-agent/pull/15027))
- **Send fresh finals for stale preview streams** (port openclaw#72038) ([#16261](https://github.com/NousResearch/hermes-agent/pull/16261))
- **Render markdown tables as row-group bullets + prompt hint** ([#16997](https://github.com/NousResearch/hermes-agent/pull/16997))
- Document fallback in centralized audio routing ([#17833](https://github.com/NousResearch/hermes-agent/pull/17833))
- Native multi-image sending ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
### Discord
- **Opt-in toolsets + ID injection + tool split + Feishu wiring** (salvage #15457, #15458) ([#15610](https://github.com/NousResearch/hermes-agent/pull/15610), [#15613](https://github.com/NousResearch/hermes-agent/pull/15613))
- Fix: coerce `limit` parameter to int before `min()` call ([#16319](https://github.com/NousResearch/hermes-agent/pull/16319))
### Slack
- **Register every gateway command as a native slash (Discord/Telegram parity)** ([#16164](https://github.com/NousResearch/hermes-agent/pull/16164))
- **`strict_mention` config** — prevents thread auto-engagement ([#16193](https://github.com/NousResearch/hermes-agent/pull/16193))
- **`channel_skill_bindings`** — bind specific skills to specific Slack channels ([#16283](https://github.com/NousResearch/hermes-agent/pull/16283))
### Signal
- **Native formatting** — markdown → bodyRanges, reply quotes, reactions ([#17417](https://github.com/NousResearch/hermes-agent/pull/17417))
- Native multi-image sending ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
### Feishu / Mattermost / Email / Signal
- All participate in **native multi-image sending** ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
### Gateway Core
- **Centralized audio routing + FLAC support + Telegram doc fallback** ([#17833](https://github.com/NousResearch/hermes-agent/pull/17833))
- **Native multi-image sending** across Telegram, Discord, Slack, Mattermost, Email, Signal ([#17909](https://github.com/NousResearch/hermes-agent/pull/17909))
- **Make hygiene hard message limit configurable** ([#17000](https://github.com/NousResearch/hermes-agent/pull/17000))
- **Opt-in runtime-metadata footer on final replies** ([#17026](https://github.com/NousResearch/hermes-agent/pull/17026))
- **`pre_gateway_dispatch` hook** — plugins can intercept before dispatch ([#15050](https://github.com/NousResearch/hermes-agent/pull/15050))
- **`pre_approval_request` / `post_approval_response` hooks** ([#16776](https://github.com/NousResearch/hermes-agent/pull/16776))
- Fix: timeouts — guard `load_config()` call against runtime exceptions ([#16318](https://github.com/NousResearch/hermes-agent/pull/16318))
- Fix: support passing handler tools via registry ([#15613](https://github.com/NousResearch/hermes-agent/pull/15613))
---
## 🔧 Tool System
### Plugin-first architecture
- **Pluggable gateway platforms** — platforms can ship as plugins ([#17751](https://github.com/NousResearch/hermes-agent/pull/17751))
- **Microsoft Teams as first plugin-shipped platform** ([#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- **`pre_gateway_dispatch` hook** ([#15050](https://github.com/NousResearch/hermes-agent/pull/15050))
- **`pre_approval_request` + `post_approval_response` hooks** ([#16776](https://github.com/NousResearch/hermes-agent/pull/16776))
- **`duration_ms` on `post_tool_call`** (inspired by Claude Code 2.1.119) ([#15429](https://github.com/NousResearch/hermes-agent/pull/15429))
- **Bundled plugins**: Spotify ([#15174](https://github.com/NousResearch/hermes-agent/pull/15174)), Google Meet ([#16364](https://github.com/NousResearch/hermes-agent/pull/16364)), Langfuse observability ([#16917](https://github.com/NousResearch/hermes-agent/pull/16917)), hermes-achievements ([#17754](https://github.com/NousResearch/hermes-agent/pull/17754))
- **Page-scoped plugin slots for built-in dashboard pages** ([#15658](https://github.com/NousResearch/hermes-agent/pull/15658))
- **Declarative plugin installation for NixOS module** (@alt-glitch) ([#15953](https://github.com/NousResearch/hermes-agent/pull/15953))
### Browser
- **CDP supervisor** — dialog detection + response + cross-origin iframe eval ([#14540](https://github.com/NousResearch/hermes-agent/pull/14540))
- **Auto-spawn local Chromium for LAN/localhost URLs** when cloud provider is configured ([#16136](https://github.com/NousResearch/hermes-agent/pull/16136))
### Execute code / Terminal
- **Vercel Sandbox backend** for `execute_code` / terminal (@kshitijk4poor) ([#17445](https://github.com/NousResearch/hermes-agent/pull/17445))
- **Collapse subagent `task_id`s to shared container** ([#16177](https://github.com/NousResearch/hermes-agent/pull/16177))
- **Docker: run container as host user** to avoid root-owned bind mounts (@benbarclay) ([#17305](https://github.com/NousResearch/hermes-agent/pull/17305))
- Fix: safely quote `~/` subpaths in wrapped `cd` commands ([#15394](https://github.com/NousResearch/hermes-agent/pull/15394))
- Fix: close file descriptor in `LocalEnvironment._update_cwd` ([#17300](https://github.com/NousResearch/hermes-agent/pull/17300))
- Fix: SSH — prevent tar from overwriting remote home dir permissions ([#17898](https://github.com/NousResearch/hermes-agent/pull/17898), [#17867](https://github.com/NousResearch/hermes-agent/pull/17867))
### Image generation
- See Provider section for updates; no new image providers this window.
### TTS / Voice
- **Pluggable TTS provider registry** under `tts.providers.<name>` ([#17843](https://github.com/NousResearch/hermes-agent/pull/17843))
- **Piper** as native local TTS provider (closes #8508) ([#17885](https://github.com/NousResearch/hermes-agent/pull/17885))
- **Voice mode CLI parity in the TUI** — VAD loop + TTS + crash forensics ([#14810](https://github.com/NousResearch/hermes-agent/pull/14810))
- Fix: vision — use HERMES_HOME-based cache dir instead of cwd ([#17719](https://github.com/NousResearch/hermes-agent/pull/17719))
### Cron
- **Honor `hermes tools` config for the cron platform** ([#14798](https://github.com/NousResearch/hermes-agent/pull/14798))
- **Per-job `workdir`** — project-aware cron runs ([#15110](https://github.com/NousResearch/hermes-agent/pull/15110))
- **`context_from` field** — chain cron job outputs ([#15606](https://github.com/NousResearch/hermes-agent/pull/15606))
- Fix: promote `croniter` to a core dependency ([#17577](https://github.com/NousResearch/hermes-agent/pull/17577))
### Web search
- **Expose `limit` for `web_search`** ([#16934](https://github.com/NousResearch/hermes-agent/pull/16934))
### Maps
- Fix: include seconds in timezone UTC offset output ([#16300](https://github.com/NousResearch/hermes-agent/pull/16300))
### Approvals
- **Hardline blocklist for unrecoverable commands** ([#15878](https://github.com/NousResearch/hermes-agent/pull/15878))
- Perf: precompile DANGEROUS_PATTERNS and HARDLINE_PATTERNS ([#17206](https://github.com/NousResearch/hermes-agent/pull/17206))
### ACP
- **Advertise and forward image prompts** ([#18030](https://github.com/NousResearch/hermes-agent/pull/18030))
### API Server
- **POST `/v1/runs/{run_id}/stop`** (salvage of #15656) ([#15842](https://github.com/NousResearch/hermes-agent/pull/15842))
- **Expose run status for external UIs** (#17085) ([#17458](https://github.com/NousResearch/hermes-agent/pull/17458))
### Nix
- **Declarative plugin installation for NixOS module** (@alt-glitch) ([#15953](https://github.com/NousResearch/hermes-agent/pull/15953))
- Fix: use `--rebuild` in fix-lockfiles to bypass cached FOD store paths ([#15444](https://github.com/NousResearch/hermes-agent/pull/15444))
- Fix: `extraPackages` now actually works via per-user profile ([#17047](https://github.com/NousResearch/hermes-agent/pull/17047))
- Fix: refresh web/ npm-deps hash to unblock main builds ([#17174](https://github.com/NousResearch/hermes-agent/pull/17174))
- Fix: replace magic-nix-cache with Cachix ([#17928](https://github.com/NousResearch/hermes-agent/pull/17928))
---
## 🖥️ TUI
### New features
- **LaTeX rendering** (@austinpickett) ([#17175](https://github.com/NousResearch/hermes-agent/pull/17175))
- **`/reload` .env hot-reload** — ported from the classic CLI ([#17286](https://github.com/NousResearch/hermes-agent/pull/17286))
- **Pluggable busy-indicator styles** (@OutThisLife, #13610) ([#17150](https://github.com/NousResearch/hermes-agent/pull/17150))
- **Opt-in auto-resume of the most recent session** (@OutThisLife) ([#17130](https://github.com/NousResearch/hermes-agent/pull/17130))
- **Expanded light-terminal auto-detection** — `HERMES_TUI_THEME` + background hex (@OutThisLife) ([#17113](https://github.com/NousResearch/hermes-agent/pull/17113))
- **Delete sessions from `/resume` picker with `d`** (@OutThisLife) ([#17668](https://github.com/NousResearch/hermes-agent/pull/17668))
- **Line-by-line scroll on modified mouse wheel** (@OutThisLife) ([#17669](https://github.com/NousResearch/hermes-agent/pull/17669))
- **Delete queued message while editing with ctrl-x / cancel with esc** (@OutThisLife) ([#16707](https://github.com/NousResearch/hermes-agent/pull/16707))
- **Per-section visibility for the details accordion** (@OutThisLife) ([#14968](https://github.com/NousResearch/hermes-agent/pull/14968))
- **Voice mode CLI parity** — VAD loop + TTS + crash forensics ([#14810](https://github.com/NousResearch/hermes-agent/pull/14810))
- **Contextual first-touch hints ported to TUI** — `/busy`, `/verbose` ([#16054](https://github.com/NousResearch/hermes-agent/pull/16054))
- **Mini help menu on `?` in the input field** (@ethernet8023) ([#18043](https://github.com/NousResearch/hermes-agent/pull/18043))
### Fixes
- Fix: proactive mouse disable on ConPTY + `/mouse` toggle command (@kevin-ho, WSL2 ghost-mouse fix) ([#15488](https://github.com/NousResearch/hermes-agent/pull/15488))
- Fix: restore skills search RPC ([#15870](https://github.com/NousResearch/hermes-agent/pull/15870))
- Perf: cache text measurements across yoga flex re-passes ([#14818](https://github.com/NousResearch/hermes-agent/pull/14818))
- Perf: stabilize long-session scrolling ([#15926](https://github.com/NousResearch/hermes-agent/pull/15926))
- Perf: lazily seed virtual history heights ([#16523](https://github.com/NousResearch/hermes-agent/pull/16523))
- Perf: cut visible cold start ~57% with lazy agent init ([#17190](https://github.com/NousResearch/hermes-agent/pull/17190))
---
## 🖱️ CLI & User Experience
### New commands
- **`hermes -z <prompt>`** — non-interactive one-shot mode ([#15702](https://github.com/NousResearch/hermes-agent/pull/15702))
- **`hermes -z` with `--model` / `--provider` / `HERMES_INFERENCE_MODEL`** ([#15704](https://github.com/NousResearch/hermes-agent/pull/15704))
- **`hermes update --check`** preflight flag ([#15841](https://github.com/NousResearch/hermes-agent/pull/15841))
- **`hermes fallback`** command for managing fallback providers ([#16052](https://github.com/NousResearch/hermes-agent/pull/16052))
- **`/busy`** slash command for busy input mode ([#15382](https://github.com/NousResearch/hermes-agent/pull/15382))
- **`/busy` input mode 'steer'** as a third option ([#16279](https://github.com/NousResearch/hermes-agent/pull/16279))
- **`/btw` as alias for `/background`** ([#16053](https://github.com/NousResearch/hermes-agent/pull/16053))
- **`/reload-skills`** slash command (salvage #17670) ([#17744](https://github.com/NousResearch/hermes-agent/pull/17744))
- **Surface `/queue`, `/bg`, `/steer` in agent-running placeholder** ([#16118](https://github.com/NousResearch/hermes-agent/pull/16118))
### Setup / onboarding
- **Auto-reconfigure on existing installs** ([#15879](https://github.com/NousResearch/hermes-agent/pull/15879))
- **Contextual first-touch hints for `/busy` and `/verbose`** ([#16046](https://github.com/NousResearch/hermes-agent/pull/16046))
- **Cost-saving tips from the April 30 tip-of-the-day** ([#17841](https://github.com/NousResearch/hermes-agent/pull/17841))
- **Hyperlink startup banner title to the latest GitHub Release** ([#14945](https://github.com/NousResearch/hermes-agent/pull/14945))
### Update / backup
- **Snapshot pairing data before `git pull`** ([#16383](https://github.com/NousResearch/hermes-agent/pull/16383))
- **Auto-backup HERMES_HOME before `hermes update`** (opt-in, off by default) ([#16539](https://github.com/NousResearch/hermes-agent/pull/16539), [#16566](https://github.com/NousResearch/hermes-agent/pull/16566))
- **Exclude `checkpoints/` from backups** ([#16572](https://github.com/NousResearch/hermes-agent/pull/16572))
- **Exclude SQLite WAL/SHM/journal sidecars from backups** ([#16576](https://github.com/NousResearch/hermes-agent/pull/16576))
- **Installer FHS layout for root installs on Linux** ([#15608](https://github.com/NousResearch/hermes-agent/pull/15608))
- Fix: kill stale dashboards instead of warning ([#17832](https://github.com/NousResearch/hermes-agent/pull/17832))
- Fix: show correct update status on nix-built hermes ([#17550](https://github.com/NousResearch/hermes-agent/pull/17550))
### Slash-command housekeeping
- Refactor: drop `/provider`, `/plan` handler, and clean up slash registry ([#15047](https://github.com/NousResearch/hermes-agent/pull/15047))
- Refactor: drop `persist_session` plumbing + fix broken `/btw` mid-turn bypass ([#16075](https://github.com/NousResearch/hermes-agent/pull/16075))
### OpenClaw migration (for folks coming from OpenClaw)
- **Hardened OpenClaw import** — plan-first apply, redaction, pre-migration backup ([#16911](https://github.com/NousResearch/hermes-agent/pull/16911))
- Fix: case-preserving brand rewrite + one-time `~/.openclaw` residue banner ([#16327](https://github.com/NousResearch/hermes-agent/pull/16327))
- Fix: resolve `openclaw` workspace files from `agents.defaults.workspace` ([#16879](https://github.com/NousResearch/hermes-agent/pull/16879))
- Fix: resolve model aliases against real OpenClaw catalog schema (salvage #16778) ([#16977](https://github.com/NousResearch/hermes-agent/pull/16977))
---
## 📊 Web Dashboard
- **Models tab** — rich per-model analytics ([#17745](https://github.com/NousResearch/hermes-agent/pull/17745))
- **Configure main + auxiliary models from the Models page** ([#17802](https://github.com/NousResearch/hermes-agent/pull/17802))
- **Dashboard Chat tab — xterm.js + JSON-RPC sidecar** (supersedes #12710 + #13379, @OutThisLife) ([#14890](https://github.com/NousResearch/hermes-agent/pull/14890))
- **Dashboard layout refresh** (@austinpickett) ([#14899](https://github.com/NousResearch/hermes-agent/pull/14899))
- **`--stop` and `--status` flags** on the dashboard CLI ([#17840](https://github.com/NousResearch/hermes-agent/pull/17840))
- **Page-scoped plugin slots for built-in pages** ([#15658](https://github.com/NousResearch/hermes-agent/pull/15658))
- Fix: replace all buttons for design system buttons ([#17007](https://github.com/NousResearch/hermes-agent/pull/17007))
---
## ⚡ Performance
- **TUI visible cold start cut ~57%** via lazy agent init ([#17190](https://github.com/NousResearch/hermes-agent/pull/17190))
- **Lazy-import OpenAI, Anthropic, Firecrawl, account_usage** ([#17046](https://github.com/NousResearch/hermes-agent/pull/17046))
- **mtime-cache `load_config()` and `read_raw_config()`** ([#17041](https://github.com/NousResearch/hermes-agent/pull/17041))
- **Memoize `get_tool_definitions()` + TTL-cache `check_fn` results** ([#17098](https://github.com/NousResearch/hermes-agent/pull/17098))
- **Precompile DANGEROUS_PATTERNS and HARDLINE_PATTERNS** ([#17206](https://github.com/NousResearch/hermes-agent/pull/17206))
- **Cache Ink text measurements across yoga flex re-passes** ([#14818](https://github.com/NousResearch/hermes-agent/pull/14818))
- **Stabilize long-session scrolling** ([#15926](https://github.com/NousResearch/hermes-agent/pull/15926))
- **Lazily seed virtual history heights** ([#16523](https://github.com/NousResearch/hermes-agent/pull/16523))
---
## 🔒 Security & Reliability
- **Secret redaction off by default** — stops corrupting patches / API payloads with fake-key substitutions. Opt in via `redaction.enabled: true` ([#16794](https://github.com/NousResearch/hermes-agent/pull/16794))
- **`[SYSTEM:` → `[IMPORTANT:`** in all user-injected markers (Azure content filter dodge) ([#16114](https://github.com/NousResearch/hermes-agent/pull/16114))
- **Hardline blocklist for unrecoverable commands** ([#15878](https://github.com/NousResearch/hermes-agent/pull/15878))
- **Canonical `mask_secret` helper; fix status.py DIM drift** ([#17207](https://github.com/NousResearch/hermes-agent/pull/17207))
- **Sweep expired paste.rs uploads on a real timer** ([#16431](https://github.com/NousResearch/hermes-agent/pull/16431))
- **Preserve symlinks during atomic file writes** ([#16980](https://github.com/NousResearch/hermes-agent/pull/16980))
- **Probe `/dev/tty` by opening it, not bare existence** ([#17024](https://github.com/NousResearch/hermes-agent/pull/17024))
---
## 🐛 Notable Bug Fixes
This window includes 360 `fix:` PRs. Selected highlights from across the stack:
- **Background review fork inherits parent's live runtime** — provider/model/creds now propagate correctly ([#16099](https://github.com/NousResearch/hermes-agent/pull/16099))
- **Hindsight configurable `HINDSIGHT_TIMEOUT` env var** ([#15077](https://github.com/NousResearch/hermes-agent/pull/15077))
- **Tools: normalize numeric entries + clear stale `no_mcp` in `_save_platform_tools`** ([#15607](https://github.com/NousResearch/hermes-agent/pull/15607))
- **MCP: rewrite `definitions` refs to `$defs` in input schemas** — closes provider-side 400s
- **Azure content filter compatibility** — renamed `[SYSTEM:` markers so Azure's content filter stops flagging them ([#16114](https://github.com/NousResearch/hermes-agent/pull/16114))
- **Vision cache uses HERMES_HOME instead of cwd** ([#17719](https://github.com/NousResearch/hermes-agent/pull/17719))
- **FTS5 search** — tool_name + tool_calls indexing with repair + migration ([#16914](https://github.com/NousResearch/hermes-agent/pull/16914))
- **Streaming reasoning persists on assistant turns** ([#16892](https://github.com/NousResearch/hermes-agent/pull/16892))
- **execute_code concurrent RPC serialization** (#17770) ([#17894](https://github.com/NousResearch/hermes-agent/pull/17894), [#17902](https://github.com/NousResearch/hermes-agent/pull/17902))
- **Background reviewer scoped to memory + skills toolsets** — no more accidental web/shell escapes ([#16569](https://github.com/NousResearch/hermes-agent/pull/16569))
- **Compression recovery** — retry on main before giving up; notify user when aux fails ([#16774](https://github.com/NousResearch/hermes-agent/pull/16774), [#16775](https://github.com/NousResearch/hermes-agent/pull/16775))
- **`croniter` promoted to a core dependency** ([#17577](https://github.com/NousResearch/hermes-agent/pull/17577))
- **Discord tool `limit` parameter coerced to int** before `min()` call ([#16319](https://github.com/NousResearch/hermes-agent/pull/16319))
- **Yuanbao messaging platform entrance fix** ([#16880](https://github.com/NousResearch/hermes-agent/pull/16880))
- **ACP advertise and forward image prompts** ([#18030](https://github.com/NousResearch/hermes-agent/pull/18030))
- **DeepSeek / Kimi reasoning content isolation** across cross-provider histories (@Zjianru) ([#15749](https://github.com/NousResearch/hermes-agent/pull/15749), [#15762](https://github.com/NousResearch/hermes-agent/pull/15762))
- **Preserve reasoning_content replay on DeepSeek v4 + Kimi/Moonshot thinking** ([#18045](https://github.com/NousResearch/hermes-agent/pull/18045))
The vast majority of the 360 fixes landed in the streaming/compression/tool-calling paths across all providers — DeepSeek, Kimi, Moonshot, GLM, Qwen, MiniMax, Gemini, Anthropic, OpenAI — alongside TUI polish (resize, scroll, sticky-prompt) and gateway platform-specific edge cases.
---
## 🧪 Testing & CI
- Hermetic test parity (`scripts/run_tests.sh`) held across this window
- **Microsoft Teams xdist collision guard** — prevents worker collisions when Teams platform tests run in parallel ([#17828](https://github.com/NousResearch/hermes-agent/pull/17828))
- Chore: remove unused imports and dead locals (ruff F401, F841) ([#17010](https://github.com/NousResearch/hermes-agent/pull/17010))
---
## 📚 Documentation
- **Curator feature page** added to docs site ([#17563](https://github.com/NousResearch/hermes-agent/pull/17563))
- **Document pin also blocking `skill_manage` writes** ([#17578](https://github.com/NousResearch/hermes-agent/pull/17578))
- **Direct-URL skill install documented** across features, reference, guide, and `hermes-agent` skill ([#16355](https://github.com/NousResearch/hermes-agent/pull/16355))
- **Hooks tutorial — build a BOOT.md startup checklist** (replaces the removed built-in hook) ([#17202](https://github.com/NousResearch/hermes-agent/pull/17202))
- **ComfyUI docs: ask local vs cloud FIRST before hardware check** ([#17612](https://github.com/NousResearch/hermes-agent/pull/17612))
- **Obliteratus skill: link YouTube video guide in SKILL.md** ([#15808](https://github.com/NousResearch/hermes-agent/pull/15808))
- Per-skill docs pages generated for bundled + optional skills; ASCII art code blocks auto-wrapped ([#14929](https://github.com/NousResearch/hermes-agent/pull/14929), [#16497](https://github.com/NousResearch/hermes-agent/pull/16497))
---
## ⚖️ Removed / Reverted
- **Kanban multi-profile collaboration board** — landed in #16081, reverted in ([#16098](https://github.com/NousResearch/hermes-agent/pull/16098)) while the design is reworked
- **computer-use cua-driver** — 3 preparatory PRs landed then were reverted in ([#16927](https://github.com/NousResearch/hermes-agent/pull/16927))
- **BOOT.md built-in hook** removed ([#17093](https://github.com/NousResearch/hermes-agent/pull/17093)); the hooks tutorial ([#17202](https://github.com/NousResearch/hermes-agent/pull/17202)) shows how to build the same workflow yourself with a shell hook
- **`/provider` + `/plan` slash commands dropped** ([#15047](https://github.com/NousResearch/hermes-agent/pull/15047))
- **`flush_memories` removed entirely** ([#15696](https://github.com/NousResearch/hermes-agent/pull/15696))
---
## 👥 Contributors
### Core
- **@teknium1** (Teknium)
### Top Community Contributors (by merged PR count since v0.11.0)
- **@OutThisLife** (Brooklyn) — 52 PRs · TUI — light-terminal detection + pluggable busy styles + auto-resume + session-delete from /resume + mouse-wheel scrolling + xterm.js dashboard Chat tab + cold-start cut + accordion polish
- **@kshitijk4poor** — 12 PRs · LM Studio first-class provider (salvage), Vercel Sandbox backend, GMI Cloud salvage, bundled-by-default touchdesigner-mcp, many tool-call / reasoning fixes
- **@helix4u** — 10 PRs · MCP schema robustness, assorted stability fixes
- **@alt-glitch** — 8 PRs · trigram FTS5 CJK search, declarative Nix plugin install, matrix/feishu hints and fixes
- **@ethernet8023** — 4 PRs
- **@austinpickett** — 4 PRs · LaTeX rendering in TUI, dashboard layout refresh
- **@benbarclay** — 3 PRs · Docker run-as-host-user so bind mounts don't get root-owned
- **@vominh1919** — 2 PRs
- **@stephenschoettler** — 2 PRs
- **@kevin-ho** — ConPTY mouse-injection fix (#15488)
- **@Zjianru** — cross-provider reasoning_content isolation + DeepSeek/Kimi empty-reasoning injection (#15749, #15762)
- **@web3blind** — Telegram chat allowlists for groups and forums (#15027)
- **@SHL0MS** — 9 new TouchDesigner-MCP reference docs (#16768)
- **@0xDevNinja** — curator `restore_skill` nested-archive fix (#17951)
- **@y0shua1ee** — curator `use` activity fix (#17953)
### Also contributing
Salvaged or co-authored work from **@isaachuangGMICLOUD** (GMI Cloud), earlier upstream PRs from the original author of each salvage chain, and a long tail of one-shot fixes, documentation nudges, and skill contributions from the community.
### All Contributors (alphabetical, excluding @teknium1)
@0xbyt4, @0xharryriddle, @0xDevNinja, @0z1-ghb, @5park1e, @A-FdL-Prog, @aj-nt, @akhater, @alblez, @alexg0bot,
@alexzhu0, @AllardQuek, @alt-glitch, @amanning3390, @amanuel2, @AndreKurait, @andrewhosf, @Andy283, @andyylin,
@angel12, @AntAISecurityLab, @ash, @austinpickett, @badgerbees, @BadTechBandit, @Bartok9, @beenherebefore,
@beesrsj2500, @BeliefanX, @benbarclay, @benjaminsehl, @BlackishGreen33, @bloodcarter, @BlueBirdBack,
@briandevans, @brooklynnicholson, @bsgdigital, @buray, @bwjoke, @camaragon, @cdanis, @cgarwood82,
@charles-brooks, @chen1749144759, @chengoak, @ching-kaching, @Contentment003111, @crayfish-ai, @CruxExperts,
@cyclingwithelephants, @dandaka, @danklynn, @ddupont808, @dhabibi, @difujia, @dimitrovi, @dlkakbs,
@dontcallmejames, @EKKOLearnAI, @emozilla, @ericnicolaides, @Erosika, @ethernet8023, @exiao, @Feranmi10,
@flobo3, @foxion37, @georgeglessner, @georgex8001, @ghostmfr, @H-Ali13381, @HangGlidersRule, @harryplusplus,
@haru398801, @heathley, @hejuntt1014, @hekaru-agent, @helix4u, @Heltman, @HenkDz, @heyitsaamir, @hharry11,
@hhhonzik, @hhuang91, @HiddenPuppy, @htsh, @iamagenius00, @in-liberty420, @innocarpe, @irispillars, @iRonin,
@isaachuangGMICLOUD, @Ito-69, @j3ffffff, @jackjin1997, @jakubkrcmar, @Jason2031, @JayGwod, @jerome-benoit,
@johnncenae, @Kailigithub, @keiravoss94, @kevin-ho, @knockyai, @konsisumer, @kshitijk4poor, @kunlabs, @l0hde,
@Leihb, @leoneparise, @LeonSGP43, @liizfq, @liuhao1024, @loongzhao, @lsdsjy, @luyao618, @ma-pony, @Magaav,
@MagicRay1217, @math0r-be, @MattMaximo, @maxims-oss, @MaxyMoos, @maymuneth, @mcndjxlefnd, @memosr,
@MestreY0d4-Uninter, @mewwts, @Mirac1eSky, @MorAlekss, @mrhwick, @mrunmayee17, @mssteuer, @Nanako0129,
@nazirulhafiy, @Nerijusas, @Nicecsh, @nicoloboschi, @nightq, @ningfangbin, @octo-patch, @Octopus,
@OutThisLife, @Paperclip, @pein892, @perlowja, @prasadus92, @qike-ms, @qiyin-code, @Readon, @ReginaldasR,
@revaraver, @rfilgueiras, @rmoen, @romanornr, @rugvedS07, @rylena, @samrusani, @Sanjays2402, @sasha-id,
@Satoshi-agi, @scheidti, @scotttrinh, @season179, @SeeYangZhi, @sgaofen, @shamork, @shannonsands, @SHL0MS,
@simbam99, @Societus, @socrates1024, @Sonoyunchu, @sprmn24, @stephenschoettler, @tangyuanjc, @TechPrototyper,
@tekgnosis-net, @ThomassJonax, @tmimmanuel, @tochukwuada, @Tosko4, @Tranquil-Flow, @twozle, @txbxxx,
@UgwujaGeorge, @Versun, @vlwkaos, @voidborne-d, @vominh1919, @Wang-tianhao, @Wangshengyang2004, @web3blind,
@westers, @Wysie, @xandersbell, @xiahu88988, @XieNBi, @xinbenlv, @xnbi, @y0shua1ee, @yatesjalex, @yes999zc,
@yeyitech, @Yoimex, @YueLich, @Yukipukii1, @zhiyanliu, @zicochaos, @Zjianru, @zkl2333, @zons-zhaozhy,
@ztexydt-cqh.
Also: @Siddharth Balyan, @YuShu.
---
**Full Changelog**: [v2026.4.23...v2026.4.30](https://github.com/NousResearch/hermes-agent/compare/v2026.4.23...v2026.4.30)