v0.7.0

Hermes Agent v0.7.0 — The Resilience Release(韧性版本)


概览

v0.7.0 — The Resilience Release(韧性版本),2026 年 4 月 3 日发布。168 个合并 PR · 46 个已解决 issue · 数百文件变更。

v0.7.0 的主题只有一个——韧性(Resilience)。它没有炫目的新功能,而是系统性地解决了 Agent 在真实生产环境中会遇到的各种问题:API Key 用光了怎么办?浏览器被检测了怎么办?内存后端不够灵活怎么办?Gateway 在高并发下崩溃了怎么办?秘密信息被泄漏了怎么办?

这个版本的回答是:让 Hermes 变得可靠、安全、可扩展


重磅功能

1. 可插拔内存提供者接口(Pluggable Memory Provider)

内存系统从单一的内置实现重构为可扩展的插件架构。第三方内存后端(Honcho、向量数据库、自定义存储)只需实现一个简单的 ABC 接口,通过插件系统注册即可接入。内置内存为默认 provider,Honcho 已作为参考插件恢复至完全功能对等,支持 Profile 级别的主机/节点隔离。

这意味着你可以根据场景选择最合适的内存后端——开发测试用内置的、生产环境用 Honcho 的持久化存储、或者接入自己的向量数据库做语义记忆。

(#4623, #4616, #4355)

2. 同 Provider 凭证池(Credential Pools)—— 告别 Rate Limit

同一 Provider 可以配置多个 API Key,系统自动以 least_used 线程安全策略在 Key 之间轮转分配负载。当某个 Key 返回 401 错误时,自动切换到池中的下一个凭证,无需人工干预。

# config.yaml
credential_pool:
  openai:
    - sk-key-1
    - sk-key-2
    - sk-key-3

通过 setup wizard 或直接编辑 credential_pool 配置项即可启用。对于重度使用者来说,这几乎消除了因单 Key 耗尽配额而中断工作流的可能。

(#4188, #4300, #4361)

3. Camofox 反检测浏览器后端

全新的本地浏览器后端,基于 Camoufox(Camouflage + Firefox)引擎实现隐身浏览。对于需要绕过反爬检测的 Web 自动化场景(如网页抓取、表单填写、自动化测试),Camofox 比传统 headless Chromium 更难被目标网站识别。

关键特性:

  • 持久化会话:浏览器状态在多次调用间保持
  • VNC URL 发现:自动暴露 VNC 连接地址,支持可视化调试
  • 本地后端 SSRF 绕过:可配置允许访问内网地址
  • 一键安装hermes tools install camofox
# 安装 Camofox
hermes tools install camofox

# 配置使用 Camofox 作为浏览器后端
hermes config set browser.backend camofox

(#4008, #4419, #4292)

4. 内联 Diff 预览(Inline Diff Previews)

文件写入和补丁操作现在在工具活动流中直接展示 inline diff。Agent 修改了什么文件、改了什么内容,在 Agent 继续下一步之前,你可以直观地看到带高亮的增删行对比。

这比你手动 git diff 或者回滚再对比快得多——一切都在终端中实时呈现。

(#4411, #4423)

5. API Server 会话连续性 & 工具流式输出

API Server(用于 Open WebUI 等前端集成)获得了两项关键升级:

  • 实时流式工具进度:工具执行过程中的中间状态事件以 SSE 流式推送给客户端
  • X-Hermes-Session-Id 请求头:跨多次 HTTP 请求维持同一会话,会话数据持久化到共享 SessionDB

这意味着通过 Web UI 使用 Hermes 的体验接近 CLI——你能实时看到 Agent 正在调用什么工具、执行到了哪一步。

(#4092, #4478, #4802)

6. ACP:编辑器端 MCP 服务器接入

VS Code、Zed、JetBrains 等编辑器的 ACP(Agent Communication Protocol)集成现在可以将编辑器注册的 MCP 服务器直接注入为 Agent 工具。编辑器的 MCP 生态——代码分析、LSP 功能、项目索引——无缝流入 Hermes 的工具调用。

(#4705)

7. Gateway 深度加固 & 秘密外泄阻断

Gateway(消息平台中枢)经过了一轮大规模稳定性加固,同时安全防护也得到了系统性的提升。

Gateway 稳定性修复

  • 修复竞态条件导致的图片丢失、消息风暴控制失效、会话卡死
  • 审批路由修正:/approve/deny 在 Agent 阻塞等待审批时正确路由

秘密外泄阻断

  • 浏览器 URL 和 LLM 响应被自动扫描秘密模式(API Key、Token、密码等)
  • 阻止通过 URL 编码、Base64 编码或提示注入(Prompt Injection)窃取凭证
  • execute_code 沙箱输出自动脱敏
  • 凭证目录保护扩展至 .docker.azure.config/gh

(#4727, #4750, #4483, #4360, #4305)


核心 Agent 与架构

Provider & 模型支持

  • 同 Provider 凭证池:多 Key 自动 least_used 轮转 + 401 故障转移
  • 凭证池状态在智能路由中保持:回退到备用 Provider 时池状态不丢失,429 错误延迟激进回退
  • 每轮恢复主运行时:使用 fallback 后,下一轮自动切换回主 Provider 并恢复传输
  • GPT-5 / Codex developer 角色支持:采用 OpenAI 推荐的新模型系统消息角色
  • Google 模型运营指导:Gemini 和 Gemma 模型获得 Provider 特定的提示词引导
  • Anthropic 长上下文 429 处理:命中层级限制时自动将上下文缩减至 200K
  • 新增模型:Claude-sonnet-4.6(OpenRouter / Nous 模型列表)、Qwen 3.6 Plus Preview、MiniMax M2.7
  • Fireworks 上下文长度自动检测
  • DashScope 国际端点修复(阿里 Provider 不再硬编码错误地址)
  • 自定义 Provider context_length 在压缩中正确读取
  • Non-sk-ant Key 视为普通 API Key 而非 OAuth Token
  • 自定义端点自动探测模型:从服务器探针自动发现可用模型列表
  • Config.yaml 作为 endpoint URL 的唯一事实来源:不再有环境变量与配置文件的冲突
  • Setup wizard 不再覆盖自定义端点配置
  • 统一 setup wizard Provider 选择hermes model:同一个代码路径

Agent 循环与会话

  • 保留 Anthropic thinking block 签名跨工具轮次:防止推理块在工具调用后丢失
  • 分类 think-only 空响应再重试:防止模型只产生思考块而无实际内容时的无限重试循环
  • 防止压缩死亡螺旋:API 断连导致“触发压缩 → 压缩失败 → 再次触发压缩”的恶性循环被检测并终止
  • 中运行压缩持久化到 Gateway 会话
  • 上下文超限错误现在包含可操作的指导信息
  • 清理孤立的 </think> 标签:防止推理结束标签泄漏到用户可见响应中
  • Codex 响应预检加固和流式错误处理
  • 确定性 call_id 回退:不再用随机 UUID,保证 prompt cache 一致性
  • 上下文压力警告压缩后不再重复发送
  • AsyncOpenAI 延迟创建:避免轨迹压缩器中的事件循环关闭错误

记忆与会话

  • Honcho 完全功能对等恢复:作为参考内存 provider 插件(@erosika 贡献)
  • Honcho Profile 级作用域:主机和节点按 Profile 隔离
  • 内存 flush 状态持久化:Gateway 重启后不会重复 flush
  • 内存 Provider 工具通过顺序执行路径路由
  • Honcho 配置写入实例本地路径以隔离 Profile
  • API Server 会话持久化到共享 SessionDB
  • 非 CLI 会话 Token 用量持久化
  • FTS5 搜索中带点号的词加引号处理:修复含点号(如版本号)的会话搜索

消息平台(Gateway)

Gateway 核心

  • 竞态条件大修:一次性修复图片丢失、消息风暴控制失效、会话卡死、STT 配置问题
  • 审批路由修正/approve/deny 在 Agent 等待审批时正确路由,不再被当作中断吞掉
  • 审批后恢复 Agent:执行被阻止的命令后工具结果不再丢失
  • DM 线程会话种子:新线程继承父会话上下文
  • Skill 感知 Slash 命令:Gateway 动态注册已安装的 Skill 为 Slash 命令,带分页 /commands 列表
  • 每平台禁用 Skill:Telegram 菜单和 Gateway 分发中生效
  • 移除用户可见的压缩警告:更干净的消息流
  • Gateway 服务 -v/-q 标志接入 stderr 日志
  • HERMES_HOME 重映射到目标用户(systemd 服务单元)
  • 无效布尔型配置回退到默认值
  • /update 用 setsid 替代 systemd-run:避免 systemd 权限问题
  • 首条消息显示“Initializing agent…”:更好的用户体验
  • 允许以 root 运行 Gateway 服务:支持 LXC/容器环境

Telegram

  • 32 字符命令名限制 + 冲突避免
  • 菜单优先级顺序:core > plugins > skills
  • 命令上限 50 个:Telegram API 拒绝超过 60
  • 跳过空/空白文本:防止 400 错误
  • E2E Gateway 测试@pefontana 贡献)

Discord

  • 按钮式审批 UI:注册 /approve/deny 为原生 Slash 命令,带交互式按钮
  • 可配置表情反应discord.reactions 选项控制消息处理表情
  • 未授权用户跳过表情反应和自动线程

Slack

  • 线程回复slack.reply_in_thread 配置选项,解决长达一年的社区需求

WhatsApp

  • 群聊强制 require_mention:只有被 @ 时才响应

Webhook

  • 平台支持修复:跳过 home channel 提示、为 webhook 适配器禁用工具进度

Matrix

  • E2EE 解密加固:请求缺失密钥、自动信任设备、重试缓冲事件

CLI 与用户体验

新增 Slash 命令

命令 功能
/yolo 切换危险命令审批开关——一次性跳过所有审批确认
/btw 临时侧问(By The Way)——不影响主对话上下文的独立问题
/profile 不离开聊天会话,直接查看当前 Profile 信息
# 冒险模式:跳过所有审批
/yolo

# 问个无关紧要的问题,不影响当前上下文
/btw 这个函数用的是什么算法?

# 快速查看当前 Profile
/profile

交互式 CLI

  • 内联 Diff 预览:文件写入和补丁操作在工具活动流中展示带高亮的增删对比
  • TUI 固定在底部:启动时不再有大片空白区域,输入栏紧贴内容底部
  • /history/resume 直接展示最近会话,无需手动搜索
  • /insights 显示缓存 Token:总用量完整、不再对不上
  • --max-turns CLI 标志:限制 hermes chat 中 Agent 的最大轮次
  • 拖放文件路径检测:拖入的文件路径不再被当作 Slash 命令(@rolme 贡献)
  • config set 支持空字符串和假值
  • WSL 语音模式:PulseAudio 桥接已配置时可用
  • 尊重 NO_COLORTERM=dumb:无障碍支持(@SHL0MS 贡献)
  • 静默模式正确退出码-q 成功查询返回 0 而非非零(@devorun 贡献)
  • on_session_end 钩子在中断退出时正确触发
  • Profile 列表正确读取 model.default

设置与配置

  • allowed_users 在 setup 中保持 + 静默未配置 Provider 警告(@kshitijk4poor 贡献)
  • 自定义端点 API Key 保存到 model config
  • Claude Code 凭据需显式 Hermes 配置才作为 wizard 触发条件
  • 配置原子写入:防止中断时配置丢失
  • Claude Code Token 刷新时写入 scopes 字段

更新系统

  • Fork 检测和上游同步hermes update 支持 fork 仓库
  • 更新时保留可用的可选依赖:某个 extra 失败不影响其他
  • 处理冲突的 git index:更新过程更可靠
  • 避免 macOS launchd 重启竞态@rolme 贡献)
  • 修复 macOS/zsh 用户的 shell reload 提示
  • subprocess.run() 超时:doctor 和 status 命令不再永久挂起

工具系统

浏览器

  • Camofox 反检测浏览器后端hermes tools install camofox 一键安装
  • 持久化 Camofox 会话 + VNC URL 自动发现
  • 本地后端跳过 SSRF 检查:Camofox、headless Chromium
  • 可配置 SSRF 检查browser.allow_private_urls 选项(@nils010485 贡献)
  • CAMOFOX_PORT=9377 加入 Docker 命令

文件操作

  • 内联 Diff 预览:写入和补丁操作展示增删对比
  • 外部修改检测(Stale File Detection):写入/补丁前检测文件是否被外部修改,发出警告
  • 修改后刷新时间戳
  • read_file 大小保护、去重、设备文件阻止

MCP

  • 稳定性修复包:重载超时、关闭清理、事件循环处理、OAuth 非阻塞启动

Skills 系统

  • Agent 写入大小限制 + Skill patch 模糊匹配:防止超大写入、提高编辑可靠性
  • Hub bundle 路径验证:阻止 Skill bundle 中的路径穿越攻击
  • 统一 hermes-agenthermes-agent-setup 为单个 Skill
  • Skill 元数据类型检查extract_skill_conditions 中验证类型

新增/更新 Skill

  • research-paper-writing:全流程研究论文写作流水线,替代 ml-paper-writing@SHL0MS 贡献)
  • ascii-video:文本可读性技巧和外部布局预言机(@SHL0MS 贡献)
  • youtube-transcript 更新适配 youtube-transcript-api v1.x(@el-analista 贡献)
  • Skills 浏览和搜索页面加入文档站(@IAvecilla 贡献)

安全与可靠性

安全加固

  • 秘密外泄阻断:扫描浏览器 URL 和 LLM 响应中的秘密模式(API Key、Token、密码),阻止通过 URL 编码、Base64 编码或提示注入途径窃取
  • execute_code 沙箱输出脱敏:代码执行结果中的敏感信息自动替换
  • 凭证目录保护.docker.azure.config/gh 禁止通过文件工具和终端读写(@memosr 贡献)
  • GitHub OAuth Token 模式加入脱敏 + snapshot redact 标志
  • Telegram DoH 回退拒绝私有和回环 IP
  • 凭证文件注册拒绝路径穿越
  • Profile 导入校验 tar 归档成员路径:阻止 zip-slip 攻击
  • Profile 导出排除 auth.json.env

可靠性

  • 防止压缩死亡螺旋:API 断连导致的恶性循环被检测并终止
  • OpenAI SDK is_closed 作为方法而非属性:修正误判客户端关闭的问题
  • Matrix 从 [all] extras 中排除:python-olm 上游损坏,防止安装失败
  • OpenCode 模型路由修复
  • Docker 容器镜像优化(@bcross 贡献)

Windows & 跨平台

  • WSL 语音模式:PulseAudio 桥接支持
  • Homebrew 打包准备工作
  • CI fork 条件判断:防止 fork 仓库 CI 工作流失败

重点 Bug 修复

  • Gateway 审批阻塞 Agent 线程:审批现在像 CLI 一样阻塞 Agent 线程,防止工具结果丢失
  • 压缩死亡螺旋:API 断连触发的恶性循环被检测并终止
  • Anthropic thinking 块跨轮次丢失:推理块签名现在正确保持
  • -p 标志时 Profile model config 被忽略model.model 正确提升为 model.default
  • CLI 响应与输入之间的大片空白:TUI 固定在底部
  • 拖入文件路径被当作 Slash 命令:正确检测为文件引用
  • 孤立的 </think> 标签泄漏到用户可见响应
  • OpenAI SDK is_closed 属性误判:它是方法不是属性,导致误判客户端关闭
  • MCP OAuth Server 阻塞 Hermes 启动:改为优雅降级
  • MCP 事件循环在关闭时已关闭:HTTP server 场景修复
  • 阿里 Provider 硬编码错误端点:切换到标准 DashScope 国际端点
  • Slack reply_in_thread 配置缺失:补上完整支持
  • 静默模式退出码非零-q 成功查询正确返回 0
  • 文档站移动端侧边栏:backdrop-filter 问题导致只显示关闭按钮(@xsmyile 贡献)
  • 配置恢复被 stale-branch squash merge 回退_config_version 修复

测试

  • Telegram Gateway E2E 测试:完整集成测试套件(@pefontana 贡献)
  • 11 个真实测试失败修复 + sys.modules 级联污染解决
  • 7 个 CI 失败修复:涉及 hooks、plugins、skill 测试
  • Codex 401 刷新测试更新适配 CI 环境
  • 过时的 OPENAI_BASE_URL 测试修复

文档

  • 全面文档审计:9 个 HIGH 级 + 20+ 个 MEDIUM 级缺口修复,覆盖 21 个文件
  • 站点导航重构:Features 和 Platforms 提升为顶级导航
  • 工具进度流式输出:API Server 和 Open WebUI 文档化
  • Telegram Webhook 模式文档
  • 本地 LLM Provider 指南:完整设置指南,含上下文长度警告
  • WhatsApp 白名单行为WHATSAPP_ALLOW_ALL_USERS 文档澄清
  • Slack 配置选项:新增配置章节
  • 终端后端章节扩展 + 文档构建修复
  • Adding-providers 指南更新适配统一设置流程
  • ACP Zed 配置修复
  • 社区 FAQ:常见工作流和故障排除条目
  • Skills 浏览和搜索页上线文档站

升级

hermes update

全新安装请参考安装指南


GitHub 完整 Changelog

← Hermes Agent Changelog