# 【hermes agent 补丁】

**URL:** <https://www.nodeloc.com/t/topic/107872>\
**Category:** 杂谈\
**Created:** [2026 年9 月 9 日 03:08 UTC](https://www.nodeloc.com/t/topic/107872 "2026-09-09T03:08:06Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

作者： ![ou\_zhou](https://www.nodeloc.com/user_avatar/www.nodeloc.com/ou_zhou/32/72379_2.png) [@ou\_zhou](https://www.nodeloc.com/u/ou_zhou)\
发布日期： [2026 年9 月 9 日 03:08 UTC](https://www.nodeloc.com/t/topic/107872/1 "2026-09-09T03:08:06Z")

</div>

# 【开源分享】给 Hermes Agent 插上翅膀：hermes-patches 生产级体验增强补丁套件（10大硬核特性 / 一键脚本 / 已上架 PyPI）

[![GitHub Release](https://www.nodeloc.com/uploads/default/original/3X/f/0/f03c4b240e2fad4c2350cdbe674e63069d22a261.svg)](https://github.com/shali10/hermes-patches/releases)  
[![PyPI Version](https://www.nodeloc.com/uploads/default/original/3X/d/7/d762eb5a50b357b0d68d7ce483c62079ea5d4396.svg)](https://pypi.org/project/hermes-patches/)  
[![Python 3.10+](https://www.nodeloc.com/uploads/default/original/3X/2/5/258d52ff32ea162c25aa6f0a99c7539d4eca69b6.svg)](https://python.org)  
[![Hermes Agent](https://www.nodeloc.com/uploads/default/original/3X/5/4/54a434a881e89fd69ef753eb8e0119b49538bc18.svg)](https://github.com/NousResearch/hermes-agent)  
[![License: MIT](https://www.nodeloc.com/uploads/default/original/3X/e/7/e7496f9aaa4edc718521ec67a04edee07698ad55.svg)](https://opensource.org/licenses/MIT)

各位 NodeLoc 的佬友们好！

不少在玩自建 AI Agent 或 VPS 运维的兄弟应该对 **[Hermes Agent](https://github.com/NousResearch/hermes-agent)**（Nous Research 开源）不陌生。它支持直连 Terminal、自主执行 Bash、读写文件、管理 Docker，还能无缝接入 Telegram、Discord、Slack、QQ 等聊天平台，是目前自托管在 Linux VPS 上当“24小时随身运维助手”最顺手的开源 Agent 之一。

但在真实的生产环境、多台 VPS 长期高频运行以及接入 Telegram 的实际体验中，官方原生代码在中文环境与高并发场景下存在不少 **影响使用体验与稳定性的隐性暗坑** ：

- **Telegram 中文表格被干碎** ：遇 CJK 字符时原生正则拦截，高保真 Markdown 表格直接退化为乱七八糟的无序列表；
- **思考模型标签刷屏** ：DeepSeek-R1、QwQ、Claude 3.7 Thinking 等输出的 `<think>` 冗长思维链在终端大弹窗刷屏、在聊天窗口偶发草稿泄露；
- **打字机流式频繁 429** ：中间消息高频调用 `editMessageText` 导致界面狂闪、手机震动，长文本直接触发 Telegram 429 限流；
- **并发数据库死锁** ：多任务与子代理并发写入时，SQLite 频繁报 `database is locked` 甚至外键错位崩溃；
- **自主清理误删主库** ：Agent 自主清理垃圾磁盘时，极易“狠起来连自己都删”，一脚把 live 活库 `state.db` 踢掉导致所有记忆与会话历史断崖蒸发……

为了不再每次升级上游 Hermes 都得手动 SSH 进服务器肉身魔改，我把长期实战中打磨出的成熟方案系统性沉淀并开源了这套 **`hermes-patches`** 体验增强补丁管理套件，现已迭代至 **`v1.6.1`** ，并已同步上架 PyPI 官方源。

- **GitHub 开源仓库** ：[https://github.com/shali10/hermes-patches](https://github.com/shali10/hermes-patches)
- **PyPI 官方主页** ：[https://pypi.org/project/hermes-patches/](https://pypi.org/project/hermes-patches/)

* * *

## 🖼 核心架构与 10 大特性全景看板

先上一张新野兽派极客风的特性全景图，直观感受 10 项增强补丁的痛点与解决思路：

 ![Hermes Patches 核心架构与 10 大生产级增强特性全景看板](https://www.nodeloc.com/uploads/default/original/3X/c/5/c5e7147406d200eb0736332bd2efd39e032dcd23.png)

* * *

## 🔍 实测效果：Telegram 原生表格与 Token 页脚全透视

安装补丁后，在 Telegram 客户端中的实际交互体验如下图所示：

 ![Telegram Markdown Pipe Table 原生富文本表格与全指标页脚实测演示](https://www.nodeloc.com/uploads/default/original/3X/6/7/67b3df3f47d4ce096fcd254a5163163548714f06.png)

### 1. 📊 Token 消耗与缓存命中全透视 (Runtime Footer)

- **官方默认精简页脚** ：

```plaintext
LongCat-2.0 · 7%

```

- **安装补丁后全量高保真页脚** ：

```plaintext
🤖 gemini-3.7-flash-high | 🧠 Prompt总量: 45,210 | 💾 缓存命中: 40,000 (88%) | 📤 输出: 280 | 🎯 上下文: 4% | ⏱️ 耗时: 3.2s

```

自动兼容 OpenAI、Gemini、Claude、vLLM 等各厂商的原生缓存字段，彻底消除第三方代理中转漏传导致的“假 0%”。

### 2. 📑 Telegram 原生 Markdown Pipe Table 放行

不再被官方 CJK 逻辑拦截降级，享受现代 Telegram 原生高保真表格排版，中英混排对齐毫不费力。

* * *

## 🛠 10 大生产级补丁全景矩阵

套件采用 **非侵入式 AST 级代码注入** ，所有修改均经过 Python 字节码编译预检（`py_compile`）与原子置换，并配备原生 `.bak` 备份回滚机制。

| # | 补丁名称 | 官方原生痛点 | 打入补丁后的增强表现 |
| --- | --- | --- | --- |
| **01** | **📊 Runtime Footer**  
`Token 全量计量` | 官方页脚仅显示精简模型名与粗略百分比（如 `gpt-4o · 7%`） | **全指标精准透视** ：Prompt 总量（兼顾 Total 与 Miss 算法）、缓存命中数及命中率、输出 Token、执行耗时与上下文占用，全部千分位高保真展示。 |
| **02** | **📑 Telegram Table**  
`CJK 表格放行` | 遇中文字符时，原生正则会将 Markdown 表格降级拦截为粗糙的无序列表 | **100% 放行原生 Pipe Table** ，在现代 Telegram 客户端呈现原生对齐的高保真富文本表格。 |
| **03** | **🇨🇳 Telegram Menu**  
`命令全量汉化` | Telegram 输入 `/` 弹出的官方命令帮助全为英文 | **全量本地化为中文说明** （`/start`, `/new`, `/status`, `/reset` 等），小白和日常使用一目了然。 |
| **04** | **🛡 SQLite Durability**  
`外键自愈与防锁` | 多任务与子代理并发写入时，易触发 `database is locked` 或缺失外键报错 | **注入连接级 `busy_timeout=5000` 锁争用保护 + 会话外键缺失自动补齐自愈** ，彻底杜绝数据库死锁断流。 |
| **05** | **⚡ Tirith Silent**  
`低危扫描免打扰` | 自动化执行简单运维命令时，频繁被 LOW/INFO 级别静态扫描警告弹窗阻断 | **自动放行低风险提示** ，高危风险依然严格拦截，兼顾安全性与自动化流畅度。 |
| **06** | **🚫 Quiet Streaming**  
`流式静默与 429 护盾` | 流式打字机高频 `editMessageText` 导致界面狂闪、手机震动，且极易触发 Telegram 429 限流 | **支持全局 `display.streaming: false`** ，后端完整推理完毕后一次性交付高质量排版，零消息抖动、免 429 限流。 |
| **07** | **🧠 Clean Think**  
`思考过程深度净化` | 深度推理模型输出冗长思维链刷屏，CLI 弹大窗，IM 偶尔漏出草稿残留 | **全链路深度剥离所有思维链变体** （`<think>`, `<thought>`, `<antml:thought>` 及未闭合流式残块），输出干练干净的正文。 |
| **08** | **✂ Smart Split**  
`4096 长消息切分` | 超过 Telegram 4096 字符限制时长文本被生硬截断，损坏代码块围栏导致解析报错 | **优先在自然段落（`\n\n`）边界优雅切分** ，自动闭合并补齐跨段代码围栏与表格结构。 |
| **09** | **📁 Terminal CWD**  
`失效目录安全回退` | 当先前指定的显式工作目录被清理/删除后，后续执行命令直接报 `exit 126` 崩溃 | **在构建包装器前自动检测并回退到最近可用父目录** ，彻底规避因临时目录删除引发的会话卡死。 |
| **10** | **🧱 State DB Guard**  
`主库防误删硬核护栏` | Agent 在执行自主清理磁盘/垃圾扫描时，极易误将活库 `state.db` 识别为清理目标直接删库 | **不可绕过的动作级防删安全地线** ：硬核阻断 `rm / truncate / > / find -delete` 误伤活库，同时 100% 允许只读查看、VACUUM 与 `.bak` 备份文件清理。 |

* * *

## 💻 控制台交互体验（v1.6.1 最新特性）

项目自带一个极简清爽的终端交互控制台，支持 **实时代码指纹状态探测** 与 **无跳转直接多选** ：

```plaintext
=====================================================
   🛠️ Hermes Agent 体验增强补丁管理套件 (v1.6.1)   
=====================================================
 目标路径: /usr/local/lib/hermes-agent (补丁状态: 10/10 已应用)

 [1] 🚀 全量一键安装、自动配置并平滑重启 (推荐 / 直接回车)
 ---------------------------------------------------
 [2] [已应用 ✓] 📊 Runtime Footer (Token 全量计量、缓存与耗时)
 [3] [已应用 ✓] 📑 Telegram CJK 原生 Markdown 表格放行
 [4] [已应用 ✓] 🇨🇳 Telegram 快捷菜单与 /help /commands 全中文汉化
 [5] [已应用 ✓] 🛡️ SQLite 生产级外键自愈与高并发防锁死
 [6] [已应用 ✓] ⚡ Tirith 低风险扫描审批免打扰
 [7] [已应用 ✓] 🚫 流式输出静默控制与 429 频控防护
 [8] [已应用 ✓] 🧠 全链路深度思考过程强力净化
 [9] [已应用 ✓] ✂️ Telegram 4096 长消息智能段落切分
 [10] [已应用 ✓] 📁 Terminal 失效工作目录自动回退
 [11] [已应用 ✓] 🧱 SQLite 主库防误删护栏
 ---------------------------------------------------
 [12] 🔍 预览变更 (Dry Run，不写入磁盘)
 [13] ↩️ 卸载补丁并无损还原 (.bak 原生回滚)
 [14] 🧪 运行运行时行为断言测试套件 (Behavior Test)
 [0] 🚪 退出脚本
=====================================================

请输入选项编号 (直接多选如 2 3 7、2,3,7 或 2-5) [默认: 1]: 

```

### 交互亮点：

1. **状态实时透视** ：启动即对目标源码进行代码特征预检，前面直观显示 `[已应用 ✓]` 或 `[未应用 -]`，哪些打了、哪些没打一目了然；
2. **零二级跳转，支持多选与范围** ：在主输入框直接输入 `2 3 7`、`2,3,7` 或区间 `2-5`，按回车直接批量安装并平滑重启，拒绝套娃菜单；
3. **持续会话主循环** ：操作完成后提示按回车刷新状态并返回主菜单，随时连续管理多个补丁，输入 `0` 或 `q` 退出。

* * *

## 🛡 生产安全与升级自愈机制

跑在生产 VPS 上的工具，稳定性与可维护性是第一位的：

1. **编译预检与原子置换** ：所有代码修改先在隔离临时文件中运行，通过 Python 原生 `py_compile.compile(..., doraise=True)` 严格语法校验后才执行 `os.replace` 原子替换，绝不产生残缺损坏文件；
2. **升级自愈守护** ：脚本会自动给 systemd 注册 `ExecStartPre` 挂载。平时上游执行 `hermes update` 或升级源码后， **Gateway 重启时会自动执行补丁自愈重应用，升级永不失效** ；
3. **无损一键还原** ：初次安装自动生成物理 `.bak` 备份文件，执行 `--uninstall` 即可瞬间无损回滚到官方原生代码。

* * *

## 🚀 安装与使用姿势

### 方式 A：零配置一键脚本（推荐，开箱即用）

在安装了 Hermes Agent 的服务器上直接执行：

```bash
curl -fsSL https://raw.githubusercontent.com/shali10/hermes-patches/main/install.sh | bash

```

> **脚本全自动处理** ：自动寻径识别 Hermes 活跃源码路径 ➔ 编译检查并原子注入补丁 ➔ 自动初始化 `~/.hermes/config.yaml` 对应配置项 ➔ 刷新 Python ` __pycache__ ` 字节码 ➔ 配置 systemd 升级自愈 ➔ 自动平滑重启 `hermes-gateway`。

* * *

### 方式 B：通过 PyPI 标准全局安装

```bash
# 1. pip 全局安装
pip install -U hermes-patches

# 2. 终端任意路径拉起交互控制台
hermes-patches

# 3. 或一键静默全量打补丁 + 自动写入配置 + 平滑重启
hermes-patches --all --auto-config --restart

```

* * *

### 方式 C：进阶 CLI 常用命令

```bash
# 检查当前环境补丁生效状态（支持输出 JSON 便于监控脚本读取）
hermes-patches --status
hermes-patches --status --json

# 仅试运行预览变更（Dry Run，绝不写入磁盘）
hermes-patches --dry-run -v

# 仅安装特定编号或别名的补丁
hermes-patches --only 2 3 7 --auto-config --restart
hermes-patches --only 2-5 nostream --auto-config --restart

# 一键卸载所有补丁，从 .bak 恢复官方原生代码
bash install.sh --uninstall

```

* * *

## 🤝 结语

这个项目最初只是我自己自用“补丁包”，后来随着上游 Hermes 的大版本演进与模块化解耦，逐步把它重构成了带完整 AST 注入、多版本自适应寻径、CI 自动化测试与 PyPI 打包的正规军工程。

如果佬友们平时也在用 Hermes Agent 跑 VPS 运维、接 Telegram 机器人或搭个人助理，欢迎上手跑跑看，彻底告别原生的各种小毛病。遇到任何环境兼容性问题或新的痛点建议，欢迎在帖子里交流，或者去 GitHub 提 Issue / PR！

- **GitHub 开源地址** ：[https://github.com/shali10/hermes-patches](https://github.com/shali10/hermes-patches)
- **开源协议** ：MIT License

---

<div class="post-metadata">

作者： ![app\_welcome\_bot](https://www.nodeloc.com/user_avatar/www.nodeloc.com/app_welcome_bot/32/74125_2.png) [@app\_welcome\_bot](https://www.nodeloc.com/u/app_welcome_bot)\
发布日期： [2026 年9 月 9 日 03:08 UTC](https://www.nodeloc.com/t/topic/107872/2 "2026-09-09T03:08:13Z")

</div>

@ou_zhou 欢迎来到 [n/chit-chat 杂谈](https://www.nodeloc.com/n/chit-chat) —— 海阔天空随便说的地方，不知道该发哪个节点的，先发这里就对了。

- **说清楚背景，回复会更靠谱。** 标题写明白在聊什么，正文里带上必要的前因后果；求助类的话题，把你已经试过的、想达到的效果一起写上。
- **善用标签。** 发帖时给话题加上合适的标签，同好更容易找到你。
- **别忘了日常。** 今天的饭、路上的风景、家门口的小店、深夜的一点感想，都欢迎发出来，这里就是聊这些的。
- **注意隐私。** 照片里不要出现能认出的人脸、门牌、车牌，也不要贴自己或别人的联系方式。

聊得不愉快时不必对线，看到违规内容请直接 **举报** ，版主会来处理。

_我是 [杂谈](https://www.nodeloc.com/n/chit-chat) 节点的欢迎机器人，这条回复是自动发送的。有问题请联系节点版主。_

---

<div class="post-metadata">

作者： ![xiaoyi669](https://www.nodeloc.com/user_avatar/www.nodeloc.com/xiaoyi669/32/63122_2.png) [@xiaoyi669](https://www.nodeloc.com/u/xiaoyi669)\
发布日期： [2026 年9 月 9 日 03:18 UTC](https://www.nodeloc.com/t/topic/107872/3 "2026-09-09T03:18:17Z")

</div>

牛逼啊佬

---

<div class="post-metadata">

作者： ![ou\_zhou](https://www.nodeloc.com/user_avatar/www.nodeloc.com/ou_zhou/32/72379_2.png) [@ou\_zhou](https://www.nodeloc.com/u/ou_zhou)\
发布日期： [2026 年9 月 9 日 03:32 UTC](https://www.nodeloc.com/t/topic/107872/4 "2026-09-09T03:32:31Z")

</div>

帮到你就行

---

<div class="post-metadata">

作者： ![Yunwu001](https://www.nodeloc.com/letter_avatar_proxy/v4/letter/y/f17d59/32.png) [@Yunwu001](https://www.nodeloc.com/u/Yunwu001)\
发布日期： [2026 年9 月 9 日 03:46 UTC](https://www.nodeloc.com/t/topic/107872/5 "2026-09-09T03:46:23Z")

</div>

来学习

---

<div class="post-metadata">

作者： ![CHAI](https://www.nodeloc.com/user_avatar/www.nodeloc.com/chai/32/67123_2.png) [@CHAI](https://www.nodeloc.com/u/CHAI)\
发布日期： [2026 年9 月 9 日 12:25 UTC](https://www.nodeloc.com/t/topic/107872/6 "2026-09-09T12:25:18Z")

</div>

厉害啊

---

<div class="post-metadata">

作者： ![CHAI](https://www.nodeloc.com/user_avatar/www.nodeloc.com/chai/32/67123_2.png) [@CHAI](https://www.nodeloc.com/u/CHAI)\
发布日期： [2026 年9 月 9 日 12:26 UTC](https://www.nodeloc.com/t/topic/107872/7 "2026-09-09T12:26:25Z")

</div>

给你一个star

---

<div class="post-metadata">

作者： ![ou\_zhou](https://www.nodeloc.com/user_avatar/www.nodeloc.com/ou_zhou/32/72379_2.png) [@ou\_zhou](https://www.nodeloc.com/u/ou_zhou)\
发布日期： [2026 年9 月 9 日 12:28 UTC](https://www.nodeloc.com/t/topic/107872/8 "2026-09-09T12:28:25Z")

</div>

:xhj19:

---

<div class="post-metadata">

作者： ![KKKeee](https://www.nodeloc.com/letter_avatar_proxy/v4/letter/k/d9b06d/32.png) [@KKKeee](https://www.nodeloc.com/u/KKKeee)\
发布日期： [2026 年9 月 9 日 12:34 UTC](https://www.nodeloc.com/t/topic/107872/9 "2026-09-09T12:34:40Z")

</div>

很赞

---

<div class="post-metadata">

作者： ![crazypeace](https://www.nodeloc.com/user_avatar/www.nodeloc.com/crazypeace/32/80616_2.png) [@crazypeace](https://www.nodeloc.com/u/crazypeace)\
发布日期： [2026 年9 月 9 日 13:43 UTC](https://www.nodeloc.com/t/topic/107872/10 "2026-09-09T13:43:41Z")

</div>

看上去不错!  
不过, 有一些我觉得算官方的bug, 应该官方在未来就会修复吧?

---

<div class="post-metadata">

作者： ![James](https://www.nodeloc.com/user_avatar/www.nodeloc.com/james/32/1745_2.png) [@James](https://www.nodeloc.com/u/James)\
发布日期： [2026 年9 月 9 日 13:44 UTC](https://www.nodeloc.com/t/topic/107872/11 "2026-09-09T13:44:36Z")

</div>



---

<div class="post-metadata">

作者： ![Hiyyovo](https://www.nodeloc.com/letter_avatar_proxy/v4/letter/h/f6c823/32.png) [@Hiyyovo](https://www.nodeloc.com/u/Hiyyovo)\
发布日期： [2026 年9 月 9 日 15:26 UTC](https://www.nodeloc.com/t/topic/107872/12 "2026-09-09T15:26:36Z")

</div>

厉害了

---

<div class="post-metadata">

作者： ![heyuxuanyyds1](https://www.nodeloc.com/user_avatar/www.nodeloc.com/heyuxuanyyds1/32/64387_2.png) [@heyuxuanyyds1](https://www.nodeloc.com/u/heyuxuanyyds1)\
发布日期： [2026 年9 月 9 日 20:57 UTC](https://www.nodeloc.com/t/topic/107872/13 "2026-09-09T20:57:19Z")

</div>

写得好，点赞了，后面可能对我有用

---

<div class="post-metadata">

作者： ![ou\_zhou](https://www.nodeloc.com/user_avatar/www.nodeloc.com/ou_zhou/32/72379_2.png) [@ou\_zhou](https://www.nodeloc.com/u/ou_zhou)\
发布日期： [2026 年9 月 10 日 00:31 UTC](https://www.nodeloc.com/t/topic/107872/14 "2026-09-10T00:31:41Z")

</div>

修复了，我就剔除，反正我PR官方还没反应

---

<div class="post-metadata">

作者： ![Jwz-git](https://www.nodeloc.com/user_avatar/www.nodeloc.com/jwz-git/32/67744_2.png) [@Jwz-git](https://www.nodeloc.com/u/Jwz-git)\
发布日期： [2026 年9 月 10 日 12:14 UTC](https://www.nodeloc.com/t/topic/107872/15 "2026-09-10T12:14:44Z")

</div>

看着不错诶

---

<div class="post-metadata">

作者： ![ou\_zhou](https://www.nodeloc.com/user_avatar/www.nodeloc.com/ou_zhou/32/72379_2.png) [@ou\_zhou](https://www.nodeloc.com/u/ou_zhou)\
发布日期： [2026 年9 月 10 日 12:21 UTC](https://www.nodeloc.com/t/topic/107872/16 "2026-09-10T12:21:20Z")

</div>

试试，有没有bug

---

<div class="post-metadata">

作者： ![Iewen](https://www.nodeloc.com/user_avatar/www.nodeloc.com/iewen/32/67684_2.png) [@Iewen](https://www.nodeloc.com/u/Iewen)\
发布日期： [2026 年9 月 10 日 12:24 UTC](https://www.nodeloc.com/t/topic/107872/17 "2026-09-10T12:24:08Z")

</div>

牛啊，学习学习 :xhj19:

---

<div class="post-metadata">

作者： ![ou\_zhou](https://www.nodeloc.com/user_avatar/www.nodeloc.com/ou_zhou/32/72379_2.png) [@ou\_zhou](https://www.nodeloc.com/u/ou_zhou)\
发布日期： [2026 年9 月 10 日 12:24 UTC](https://www.nodeloc.com/t/topic/107872/18 "2026-09-10T12:24:21Z")

</div>

试试看，宝贝

---

<div class="post-metadata">

作者： ![berrice](https://www.nodeloc.com/letter_avatar_proxy/v4/letter/b/eb8c5e/32.png) [@berrice](https://www.nodeloc.com/u/berrice)\
发布日期： [2026 年9 月 11 日 01:49 UTC](https://www.nodeloc.com/t/topic/107872/19 "2026-09-11T01:49:27Z")

</div>

支持
