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 线程
- 支持媒体下载——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_navigate、vision_tools和web_tools添加了 SSRF 防护 - 视觉工具中优雅处理 402 积分不足错误
- 浏览器命令超时现在可通过
config.yaml配置
MCP
- 统一了运行时和基于配置的 MCP 工具集解析
- MCP 工具名称冲突保护——防止静默覆盖工具
安全与可靠性
安全加固(50+ 修复)
| 类别 | 修复内容 |
|---|---|
| SSRF 防护 | browser_navigate、vision_tools 和 web_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
全新安装请访问安装指南。
← Hermes Agent Changelog