v0.5.0

Hermes Agent v0.5.0 — 加固版本


概述

v0.5.0 — 加固版本。 发布于 2026 年 3 月 28 日。此版本的核心目标是让 Hermes Agent 达到生产就绪标准:50+ 安全与可靠性修复、全面的供应链审计,以及重大平台扩展,使 Hermes 成为自主 Agent 领域的有力竞争者。

截至此时,项目自 2026 年 2 月首次公开发布以来,已在 GitHub 上获得超过 15,700 颗星,拥有超过 242 位贡献者。Nous Research 将此版本描述为“加固”了技术栈的每一层——从依赖版本锁定和 CVE 修复,到 SSRF 防护和 Shell 注入防御。


主要功能

1. Hugging Face 成为一级推理供应商

Hermes Agent 现在原生集成 Hugging Face Inference API,包含身份验证、设置向导和智能模型选择器,可将 OpenRouter 的 Agent 默认模型映射到 HF 对应版本。

# 在设置过程中,Hugging Face 会作为供应商选项出现
hermes setup
# 选择 "Hugging Face" → 输入你的 HF API token → 从精选的 Agent 模型中选择

# 在运行时切换到 Hugging Face 模型
hermes model --provider huggingface

底层工作机制:

  • 精心挑选的模型列表将 OpenRouter 默认模型映射到 HF 等效版本,无需猜测即可选对模型
  • 拥有 8 个以上精选模型的供应商将跳过实时 /models 端点探测,实现即时启动
  • 使用你的 HF API token 完成完整认证流程,安全存储在 Hermes 凭证库中

2. Telegram 私聊话题

基于项目的对话,支持每个话题绑定独立的功能技能——你现在可以在单个 Telegram 聊天中运行相互隔离的工作流。每个话题拥有独立的技能集、独立的上下文和独立的 Agent 人格。

# hermes.config.yaml
telegram:
  private_chat_topics: true
  topic_skills:
    - topic: "ml-experiments"
      skills: [python-ml, data-analysis, notebook]
    - topic: "devops"
      skills: [docker, terraform, kubernetes]

这意味着一个 Telegram 聊天可以同时承载你的 ML 实验工作流、基础设施管理和代码审查——全部隔离、全部持久化、全部在一个地方。

3. 原生 Modal SDK 后端

用原生 Modal SDK(Sandbox.create.aio + exec.aio)替换了 swe-rex 依赖,消除了 SSH 隧道,大幅简化了 Modal 终端后端。

# 之前:swe-rex 为每个沙箱操作创建 SSH 隧道
# 之后:直接 SDK 调用 — 更快、更简洁、无需隧道管理

# Agent 现在使用 Modal 的原生异步原语:
# Sandbox.create.aio()  — 创建沙箱,无隧道开销
# exec.aio()            — 直接通过 SDK 执行命令

此变更移除了一个重要的架构依赖,使沙箱执行更可靠、更易于调试。

4. 插件生命周期钩子激活

插件钩子系统现已全面上线。四个生命周期钩子在 Agent 循环的关键节点触发:

钩子 触发时机 使用场景
pre_llm_call 每次 LLM API 调用前 修改提示词、注入上下文、记录请求日志
post_llm_call 每次 LLM API 调用后 后处理响应、提取结构化数据
on_session_start 会话开始时 初始化资源、设置工作空间
on_session_end 会话结束时 清理资源、持久化状态、发送通知
# 使用生命周期钩子的插件示例
# my_plugin.py
def pre_llm_call(context, messages):
    # 在 LLM 看到提示词之前添加自定义系统上下文
    messages.insert(0, {"role": "system", "content": "今天是:2026-03-28"})
    return messages

def post_llm_call(context, response):
    # 将 token 使用量记录到你的分析平台
    log_usage(response.usage)
    return response

这些钩子在 CLI、Gateway 和所有消息平台中均会触发——完成了一个期待已久的可扩展性功能。

5. GPT 工具调用强制机制

GPT 模型有一个持久的怪癖:它们会描述自己打算做什么,而不是真正调用工具。v0.5.0 添加了 GPT_TOOL_USE_GUIDANCE——一种专门的系统提示注入机制,强制 GPT 模型使用工具而不是叙述操作。

# 内部机制:在每次 GPT API 调用前,Agent 注入以下指导:
GPT_TOOL_USE_GUIDANCE = """
当你需要执行某个操作时,你**必须**使用相应的工具。
不要描述你**会**做什么——直接调用工具。
"""

此外,在对话历史中积累的过时预算警告(导致模型在多轮对话中避免使用工具)现在会被自动清除

6. Anthropic 输出限制修复

按模型的原生输出限制替换了硬编码的 16K max_tokens 限制:

模型 旧限制 新限制
Claude Opus 4.6 16K 128K
Claude Sonnet 4.6 16K 64K
其他 Claude 模型 16K 模型特定

这修复了两个长期存在的问题:

  • Agent 需要超过 16K 输出 token 时的 “Response truncated” 错误
  • 思考预算耗尽——Agent 现在能够检测到模型在推理上耗尽了所有输出 token,并智能跳过无用的续写重试

7. Nix Flake 支持

@alt-glitch 贡献——完整的 uv2nix 构建、带持久化容器模式的 NixOS 模块、从 Python 源码自动生成配置键,以及为 Agent 友好性设计的后缀 PATH。

# flake.nix
{
  inputs.hermes-agent.url = "github:NousResearch/hermes-agent";
  # ...
  hermes-agent.nixosModules.default
  # 提供:带持久化容器模式的 hermes-agent 服务
}

8. 供应链加固

此版本实施了一套全面的供应链防御体系:

  • 移除了被攻陷的 litellm 依赖——一起广泛报道的供应链安全事件
  • 锁定了所有依赖版本范围——不再有浮动的版本漂移
  • 使用加密哈希重新生成 uv.lock——每个依赖在安装时都会被验证
  • 添加了 CI 工作流,扫描每个 PR 中的供应链攻击模式
  • 升级了依赖项以修复整个依赖树中的已知 CVE

新增技能

技能 描述
G0DM0D3 Godmode 越狱技能,用于高级提示工程和能力探索
Docker 管理 容器生命周期管理、镜像构建和 compose 编排
OpenClaw 迁移 v2 17 个新模块,用于从 OpenClaw 迁移到 Hermes Agent,包含终端回顾

技能系统改进

  • 环境变量透传——技能可以声明需要的环境变量,Hermes 安全地将它们传递进去
  • 技能提示缓存,使用共享的 skill_utils 模块,显著加快首 token 时间(TTFT)
  • 使用 Git Trees API 进行技能安装,防止静默的子目录丢失
  • Agent 创建技能现在被正确视为受信任的(而非不受信任的社区内容)

消息平台

Telegram

  • 私聊话题,支持按话题绑定技能(见上方主要功能)
  • 通过 DNS-over-HTTPS 自动发现备用 IP——当 api.telegram.org 不可达时,Agent 会寻找替代路由
  • 可配置的回复线程模式——控制 Agent 如何组织其回复线程
  • 轮询在 502 错误后自动重新安排重连

Discord

  • 修复了 Agent 回合结束后持续存在的幽灵“正在输入”指示器

Slack

  • 工具调用进度消息现在能正确路由到对应的 Slack 线程

WhatsApp

  • 支持媒体下载——Agent 现在可以下载文档、音频和视频消息

Gateway 核心

  • /verbose 命令适用于消息平台——从任何聊天中切换工具输出详细程度
  • 后台审查通知直接发送到用户聊天
  • 重试瞬时发送失败并在重试耗尽时通知用户
  • /stop 强制杀死会话锁——无需重启 Gateway 即可恢复挂起的 Agent
  • 线程安全的 SessionStore,使用 threading.Lock
  • Gateway 不再浪费约 10K token 将 Hermes 仓库的 AGENTS.md 加载到每个会话
  • 为 HA、Email、Mattermost 和 SMS 适配器添加了请求超时

CLI 与用户体验

交互式 CLI 改进

  • 可配置的忙碌输入模式——控制在 Agent 处理期间输入时的行为
  • 保留多行粘贴——粘贴多行命令时不再出现乱码
  • 工具生成回调——在 Agent 生成工具参数时流式显示“preparing terminal…“更新
  • 状态栏修复:尾随零的 token 数现在正确显示(260K 而不是 26K),长会话中的重复和降级问题已修复
  • 推理框在工具调用循环中不再渲染 3 次
  • 空闲会话期间的 “Event loop is closed” / “Press ENTER to continue” ——通过三层方案修复
  • TUI 在后台任务输出前刷新,防止视觉重叠

设置与配置

  • /model 命令重制——为 CLI 和 Gateway 提取共享管线,支持自定义端点
  • 返回用户设置菜单现在使用显式按键映射,而不是脆弱的位置索引
  • hermes update 针对分叉历史、非 main 分支和 Gateway 边缘情况进行了加固
  • OpenClaw 迁移不再覆盖默认设置;设置向导跳过已导入的部分
  • AGENTS.md 加载现在止步于顶层目录——不再递归遍历目录
  • macOS Homebrew 路径已添加到浏览器和终端的 PATH 解析中
  • 默认 SOUL.md 重置为基础身份文本

工具系统

API 服务器

  • 支持幂等键(Idempotency-Key)——API 调用的安全重试语义
  • 请求体大小限制和 OpenAI 兼容的错误信封
  • SSE 断开时取消孤立的 Agent,实现真正的中断
  • Agent 进行工具调用时流式传输不再中断

终端与文件操作

  • V4A 补丁解析器现在能正确处理纯新增块
  • 持久化 shell 轮询使用指数退避——降低 CPU 使用率
  • context_references 中的子进程调用添加了超时

浏览器与视觉

  • browser_navigatevision_toolsweb_tools 添加了 SSRF 防护
  • 视觉工具中优雅处理 402 积分不足错误
  • 浏览器命令超时现在可通过 config.yaml 配置

MCP

  • 统一了运行时和基于配置的 MCP 工具集解析
  • MCP 工具名称冲突保护——防止静默覆盖工具

安全与可靠性

安全加固(50+ 修复)

类别 修复内容
SSRF 防护 browser_navigatevision_toolsweb_tools 现在阻止服务端请求伪造
子 Agent 限制 子 Agent 工具集限制为父级已启用的集合——无权限提升
Zip-Slip 防御 自更新针对路径遍历攻击进行了加固
Shell 注入 ~user 路径扩展不再允许命令注入
命令检测 危险命令检测前对输入进行了规范化
Tirith 封锁裁决现在可审批而非硬封锁(人在回路中)
依赖项 移除被攻陷的 litellm/typer/platformdirs,锁定所有版本范围,lockfile 包含哈希

可靠性

  • SQLite WAL 写锁竞争导致 15-20 秒 TUI 冻结——已修复
  • SQLite 并发加固,保障会话记录完整性
  • 防止 Gateway 崩溃/重启循环中定时任务重复触发
  • 定时任务完成后正确标记会话为已结束

性能

  • TTFT 启动优化——针对冷启动的快速改进
  • 技能提示缓存使用共享 skill_utils 模块减少重复计算
  • 消除冗余文件重复读取,针对提示构建器中的技能条件判断
  • API 超时默认值从 900 秒提升至 1800 秒,适应慢速推理模型

升级

hermes update

全新安装请访问安装指南


GitHub 完整变更日志

← Hermes Agent Changelog