本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 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.yaml、provider、gateway;你说"做个 patch",它会搜 branch、PR、四端同步。实测召回率提升 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.py、run_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_search 按 user_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哦~꒰ ´͈ ᵕ `͈ ꒱