【持续更新】关于我给Hermes Agent提的PR以及经验分享

遐蝶 2026-05-03 12:54 1

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:



  • 我的帖子已经打上 开源推广 标签:

  • 我的开源项目完整开源,无未开源部分:

  • 我的开源项目已链接认可 LINUX DO 社区:

  • 我帖子内的项目介绍,AI生成、润色内容部分已截图发出:

  • 以上选择我承诺是永久有效的,接受社区和佬友监督:


以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出




【v5 更新】补丁仓库大瘦身——从 60 个散装补丁到 1 个整合包


好消息:上次 v4 有 60 个补丁散装在仓库里,装起来一堆依赖关系,有人反馈冲突。这次做了一次彻底清理——删掉了 121 个冗余文件,把所有功能合并到一个 combined-final.patch,零冲突安装。


这次改了什么:



  • 合并成 1 个 combined-final.patch(79 个文件,~34K 行),不再有依赖顺序问题

  • 删掉了 patches/individual/ 两个目录(50+ 个历史补丁,要么已合进 combined,要么在最新版上游已无法单独 apply)

  • install.sh 简化:只做 combined-final.patch apply + 复制 disclosure_router.py,一行搞定

  • 清理了 patch 里的 3 个垃圾文件(调试时误打进去的)

  • PR #21869(media file paths)和 #22437(reverse proxy domains)已关闭——上游自己修了,不需要我们了

  • 新开 PR #25680 - Session Memory Compaction(872 行,长对话上下文压缩模块)


装完即生效,不需要额外配置。已安装的佬友重新跑一遍即可,脚本会自动跳过已应用的补丁。上游 PR #22516 已提交,如果官方合并了 install.sh 会自动跳过。


当前 PR 状态:


























































PR 状态 说明
#22516 等待合并 记忆元认知框架
#18316 等待合并 混合模式技能检索 + Skill Evaluation Gate
#17989 等待合并 多用户记忆/会话隔离
#18849 等待合并 合规检查插件
#19064 等待合并 credential pool 轮换修复
#19163 等待合并 跨渠道记忆统一
#25680 新开 Session Memory Compaction
#21869 已关闭 上游已自行修复
#22437 已关闭 上游已自行修复

为什么要做这次清理:之前的仓库有 60 个 .patch 文件散装在 3 个目录里,有些互相依赖(A 必须在 B 之前 apply),有些跟上游冲突(上游改了同一个文件),新用户装起来经常踩坑。这次把所有功能压成一个 combined-final.patch对最新版上游零冲突(测试通过 upstream/main commit db84a78e6)。装完自动生效,不需要管顺序。


仓库结构现在很干净:


combined-final.patch      — 核心补丁(79 文件)
agent/disclosure_router.py — 记忆主动注入路由(独立文件)
memory_policy.default.yaml — 元认知策略配置
install.sh — 一键安装



【v4 更新】补丁增至 49 个,新增记忆元认知框架——模型不再反复犯同一个错


好消息:上次 v3 精简到 35 个补丁后,又新增了 14 个,其中包括一个重量级功能:记忆元认知框架


先说痛点:你有没有遇到过这种情况?明明上次踩过的坑,教训千叮万嘱记下来了,模型也口口声声说"再也不会犯了,已经修复"——结果下次换个说法问,同样的错再犯一遍。根本原因是它有记忆,但不知道自己记得什么,也不知道什么时候该查,更不会在执行前检查自己有没有违反。


这次新增的框架从工程层强制约束,补上了三层防护:



  • 不再失忆:session 启动时自动注入记忆库摘要,不用等用户问才想起来

  • 搜得更准:你说"改一下配置",它会自动搜 config.yamlprovidergateway;你说"做个 patch",它会搜 branchPR、四端同步。实测召回率提升 3-5 倍

  • 拦得住rm -rf / git push --force 直接 block;发消息方法不对 → block;缺必要参数 → block。不是靠模型"自觉",是系统在工具调用前强制检查参数。你也可以自定义规则


装完即生效,不需要额外配置。~/.hermes/memory_policy.yaml 可自定义或删除关闭。上游 PR #22516 已提交,如果官方合并了 install.sh 会自动跳过。




用Hermes Agent的佬友们有福了,这几周用mimo模型深度体验hermes agent遇到了不少bug和特性,目前总结了,提了PR,但是官方的动作貌似很慢,半个多月了尚未合并,因此有需要的佬友可以提前用我这的。


一句话总结: 使用agent会更加省token、记得自己记得什么、知道什么时候该查记忆、高风险操作被强制拦截、多个用户一起用记忆不会串味、安全补丁防泄露。




GitHub 仓库: Cyrene963/hermes-patches




终端一键补丁:


bash <(curl -sL https://raw.githubusercontent.com/Cyrene963/hermes-patches/main/install.sh)



核心功能补丁(我提的PR)


PR #22516 - 记忆元认知框架


链接: feat: add configurable memory metacognition framework

改了什么: 新增 agent/memory_metacognition.py,修改 prompt_builder.pyrun_agent.py,新增 43 个测试

核心功能:



  • Memory Index:session 启动时注入记忆库摘要(“我大概记得什么”)

  • Query Expansion:自动扩展用户消息为更好的 hindsight 搜索词

  • Preflight Gate:高风险工具调用前的结构化参数校验(field_required / field_equals / field_not_contains 等)

  • 默认 no-op,不影响现有行为,本地 policy 文件启用

  • 体验提升: 模型不再反复犯同一个错,危险操作被系统性拦截而非靠"自觉"


PR #18316 - 混合模式技能检索 + Skill Evaluation Gate


链接: feat: semantic skill retrieval with FTS5 + hybrid selector + skill enforcement

改了什么: 新增 agent/hybrid_skill_selector.py,修改 prompt_builder.py,新增 FTS5 全文索引

核心功能:



  • 根据用户消息语义自动选择相关skills注入system prompt

  • 3层筛选(快速规则→任务模式→FTS5),25种任务类型

  • Skill Evaluation Gate:代码强制agent在第一次action前评估skill

  • 以前: 全部130+个skills一股脑打包注入(浪费token)

  • 现在: 平均每条消息只注入1-2个相关skills

  • 体验提升: token节省93-99%,回复速度提升,不再被无关skills干扰


PR #17989 - 多用户记忆/会话隔离


链接: fix: enforce per-user memory/session isolation for multi-user gateway

改了什么: hermes_state.py, session_search_tool.py, run_agent.py 等5个文件

核心功能:



  • 不同用户(Telegram/CLI/Discord)的记忆和会话完全隔离

  • session_searchuser_id 过滤,搜"我的密码"只返回自己的记录

  • Hindsight memory bank 按用户分隔

  • CJK 中文搜索也已修复隔离(trigram路径)

  • 体验提升: 多人共用一个bot时隐私安全,不会串数据


PR #18849 - 合规检查插件 + 技能执行纪律框架


链接: feat(plugins): add skill-enforcer plugin for periodic compliance checkpoints

改了什么: 新增 plugins/skill-enforcer/ 目录

核心功能:



  • 每 25 个action tool call触发一次合规检查站(已从8调整为25)

  • 长session中间被迫做自检(调skill_view/hindsight_recall确认合规)

  • 体验提升: 长任务中减少"跑着跑着就跑偏"的情况


PR #19064 - 修复 credential pool 轮换池丢弃


链接: fix: preserve credential pool through /model session override

核心功能: /model 切换不再丢弃 credential pool,轮换机制正常工作


PR #19163 - 跨渠道记忆统一


链接: feat: add auto-setup for owner detection & cross-channel memory

核心功能:



  • 同用户 Telegram/CLI/Discord 记忆自动互通

  • 支持自动检测 owner,一键设置 symlink


PR #19682 - credential pool key 歧义修复


链接: fix: credential pool key ambiguity

核心功能: custom provider 按名称匹配,解决轮换池混乱


PR #19683 - Gateway /model api_key 修复


链接: fix: gateway model api_key

核心功能: /model 切换时正确读取 model config 中的 api_key


PR #19685 - CLI base_url env 查找


链接: fix: cli base_url env lookup

核心功能: 使用 get_env_value 正确解析环境变量中的 base_url


PR #19686 - Custom provider max_tokens 默认值


链接: fix: custom provider max_tokens

核心功能: Anthropic 后端的自定义代理自动设置 max_tokens,防止 400 错误




上游已合并的功能(不再需要补丁)


以下功能已内置在最新版 Hermes 中,无需额外安装:



  • ^-^ Pre-flight thinking block(预飞思考块)

  • ^-^ Auto-context retrieval(自动上下文检索)

  • ^-^ 14 个社区 PR(KV cache、secret redaction、emergency compression 等)

  • ^-^ Custom provider slugs

  • ^-^ MCP reconnect

  • ^-^ Backup 0600 permissions

  • ^-^ Terminal fence stripping

  • ^-^ Memory 权威性保护


安全补丁系列


这批是扫描 GitHub 上的安全相关 issue 后针对性修复的:



  • #19 - 保护 Hermes 控制面板文件不被 prompt injection 修改

  • #20 - 代码级防护 bundled_hermes 目录不被 agent 覆写

  • #22 - 阻断 IPv4-mapped IPv6 地址的 SSRF 绕过

  • #23 - 阻止 agent 写入 _hermes_config.yaml

  • #25 - 在 request_dump_json 文件中自动 redact secrets

  • #28 - 从 ACP 子进程环境中清除 provider credentials

  • #29 - WebSocket localhost 检查失败时 fail-closed

  • #30 - per-process UUID 防止跨会话状态泄露

  • #31 - 修复 context compressor 的字符串消息处理

  • #32 - Gateway 媒体路径安全边界单元测试

  • #33 - Discord DISCORD_ALLOWED_ROLES 限定到发起 guild

  • #34 - restore_quick 中验证 snapshot_id 和文件路径




社区精选 PR


稳定性:



  • #18547 - 稳定system prompt前缀,提升KV cache命中率

  • #18650 - 修复畸形tool消息导致的API 400错误

  • #18607 - 迭代预算耗尽前触发紧急压缩

  • #18603 - 压缩遇到413限流时自动fallback

  • #18614 - 补丁重复循环的幂等保护

  • #18600 - HERMES_HOME未设置时抛明确错误


兼容性:



  • #18663 - 为严格API清理tool_calls中的extra_content

  • #18618 - 正确传递explicit_api_key到OpenRouter

  • #18616 - 允许context文件中的ZWJ emoji

  • #18582 - /restart时重新加载.env文件

  • #18692 - session搜索截断时去除FTS5操作符

  • #18596 - 默认启用secret redaction

  • #18638 - 模型切换时正确传递threshold_percent

  • #18632 - /insights命令显示cache tokens明细

  • #5447 - session_search FTS 匹配内容加载优化

  • #7701 - 非阻塞后台 delegation




觉得不错,好用的话别忘了给我个star哦~꒰ ´͈ ᵕ `͈ ꒱

最新回复 (19)
  • LucentSnow 05-03 13:23
    1

    借楼问一下,佬友对hermes的看法是什么样的呢?和openclaw相比实现起来会更高效吗

  • 遐蝶 楼主 05-03 13:27
    2

    Hermes Agent比Openclaw主要是整体架构,回复速度,token消耗这一块优秀很多。个人看法,目前OpenClaw有的Hermes Agent都有,但是OpenClaw想要有的,它就没有。OpenClaw还有屎山代码呢。


    建议,可以全力换成Hermes Agent,经过我这些PR的优化,目前已经很像一个,你的数字替身,以及外置大脑了。问题就是很烧token,日常的话可能只有每天5千万,稍微上点强度干活的话,每天2亿token都是简简单单。

  • Ice 05-03 13:42
    3

    佬 为什么提示^-^ 未找到 hermes-agent 仓库: /root/.hermes/hermes-agent

    请先安装 Hermes Agent: pip install hermes-agent

  • 遐蝶 楼主 05-03 13:56
    4

    佬,你要先部署hermes agent才能装我的补丁哈。这是一键安装hermes agent的脚本:


    curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

  • Ice 05-03 13:58
    5

    l佬 我肯定部署了才会给你说呀 哈哈哈哈哈哈哈 但是还是提示这个

  • Cora Tracy 05-03 14:06
    6

    好东西,回去部署下,谢谢佬!看到省token,我就很心动

  • 遐蝶 楼主 05-03 14:07
    7

    哈哈哈哈哈是我的锅,现在再试试呢?

    脚本现在支持 pip 安装方式了。

    pip 安装的没有 .git 目录,之前的脚本没考虑到这种情况。


    现在脚本会自动:
    1. 先通过 pip 的 hermes_cli 模块路径查找源码
    2. 找不到就自动克隆仓库
  • 遐蝶 楼主 05-03 14:09
    8

    嘿嘿,感谢支持,等我再进一步使用,实测收集下数据,把token前后消耗对比图发出来。

  • 人生海海 05-03 14:28
    9

    Hindsight



    佬,我很需要这个,谢谢你的布丁,希望我的马吃得少跑得快 ^-^

  • 遐蝶 楼主 05-03 14:40
    10

    哈哈,马就得吃得少还跑得快,之前token烧的太快,一天好几亿,让我不得已主动寻求路子,没想到真给我找到一个代码缺陷。这几天我会进一步实测token消耗前后对比,到时候把对比图发出来

  • 人生海海 05-03 14:45
    11

    嗯呢,已经给了star,等你的对比图哈!

  • MineMine 05-03 16:45
    12

    现在: 每个用户独立的memory bank和session查询

    体验提升: 多人共用一个bot时隐私安全,不会串数据



    这个估计很难合并进去,通过 user_id 来识别不合适,举个最简单的例子,我一个人有多个 message channel 的配置,按照你这个 user_id 那么每个都是隔离的。


    目前的 Hermes 应该还没做多用户隔离的设计,只能通过创建 profile 来解决。

  • zamasu 05-03 17:15
    13


    跟这个有什么区别呢,官网的这个好像是对低频的skill进行归档

  • 遐蝶 楼主 05-03 17:21
    14

    skill是skill。你再看看呢?我这是PR,代码级别的改动。

  • 遐蝶 楼主 05-03 17:26
    15

    Profile 确实能解决跨 channel 统一身份,但它是重量级方案

    (每人一个独立实例)。我的 PR 解决的是轻量级场景:

    多人共用一个 bot 时的基础隐私隔离。两者互补,不冲突。

    跨 channel 记忆统一可以后续通过 user_id mapping 解决。

  • 橙子 05-03 18:31
    16

    先用着佬的,等官方更新。我就自己用,总觉得每次加载很多skill

  • 遐蝶 楼主 05-03 18:47
    17

    感谢 @Minemine 指出多用户隔离的跨渠道盲区。


      新增补丁 #8:跨渠道记忆统一(user_mapper.py)

    问题:同一个用户在 Telegram 和 CLI 上聊天,记忆是分裂的。
    解决:通过 symlink 将同一用户的多个渠道映射到同一份记忆目录。

    支持两种模式:
    1. 自动检测 owner(读 config.yaml 的 home channel)
    2. 手动映射任何用户(帮朋友统一记忆)

    bash
    自动设置(owner 一键搞定)
    python3 user_mapper.py auto-setup

    手动映射(帮其他用户)
    python3 user_mapper.py map --chat-id XXX --user steven

    与 #9308(Honcho owner identity)的区别:
    - #9308 只覆盖 bot owner,且仅限 Honcho provider
    - 我们的方案覆盖任何用户,不限 memory provider
    - 两者可以共存

    PR: #19163
    补丁已更新: https://github.com/Cyrene963/hermes-patches

    现在的补丁合集覆盖 21 个功能,包括:
    - 多用户隔离(#17989)
    - 跨渠道记忆统一(#19163)← 新
    - 语义技能检索(#18316)
    - 凭证池修复(#19064)
    - 16 个社区精选 PR
  • 遐蝶 楼主 05-03 18:47
    18

    哈哈,我先提前搞好一个补丁,就是等不及官方合并了。等了半个月都。只是给我的PR,打了P1之类的标签。社区其他PR也是。

  • sunfly 05-03 19:47
    19

    深度用的话其实里面的bug和问题其实还是不少的,零零星星总能碰见几个

* 帖子来源Linux.do
返回