Generated by Answer me with HTML 0.5.10 · 2026-10-29 11:05 · ★ Star on GitHub
全机补丁审计 · 插件层
机械扫描 RECORD 哈希 + git 状态 + 插件目录 diff,不靠记忆
Lead: 全机真正的本地补丁只有四处来源:Hermes 核心两个代理补丁、飞书卡片的九个文件注入、 hy-memory 一个提炼补丁、以及插件目录里的两处开关。 顺手发现一个漏口:运行时加载的插件目录那份 server_manager 没带上今天的版本锁。
补丁全清单
| 位置 | 内容 | 判据 | 结论 |
|---|---|---|---|
| Hermes 核心 | OpenRouter 代理两个文件 | gateway 环境无 proxy 变量,这是唯一出口 | 必需 |
| Hermes 核心 | 飞书卡片注入 9 文件 +626 行 | 卡片是你的核心体验,HFC 5.0.12 自己管 | 必需 |
| hy-memory | writer.py 提炼历史(两 venv) | 省 1400 token/次,防重抽旧话题 | 必需 |
| 插件目录 | plugin.yaml 撤 pip_dependencies | 10-27 那次防 PM 驱逐的修复 | 必需 |
| 插件目录 | server_manager 去重透传 + 版本锁 | 去重开关与防静默升级 | 必需 |
| 飞书卡片 | 4 个空注入条目及其 .bak | 清单里 original 与 patched 同 sha | HFC 自管,不动 |
今天补上的漏口
Hermes 的插件加载器是从 $HERMES_HOME/plugins 逐目录执行 __init__.py。
也就是说运行时用的是 plugins/hy-memory/ 那份实体副本,不是 site-packages。
上午的版本锁只打在 site-packages,运行时那条路径其实没锁上。
现在两份 server_manager 已逐字节一致,reapply 也改成两处都打。
扫出来的东西怎么定位
| 扫描手段 | 覆盖范围 | 结果 |
|---|---|---|
| dist-info/RECORD 哈希逐个比对 | 两个 venv 全部 pip 包 | 只有 2 个包有改动 |
| git status 与 diff | Hermes 核心 checkout | 2 个代理补丁 + 9 个 HFC 注入 |
| 目录 diff 与 sha 复核 | 插件实体目录、manifest | 抓出 pin 漏打那一份 |
| manifest sha 比对 | 飞书卡片 13 个 targets | 9 个真注入,4 个空注入 |
清掉的东西
| 对象 | 数量 | 处理 |
|---|---|---|
| 僵尸 patch 文件 | 9 个 | 移入 backups/plugin_patch_audit_20261029_1102 |
| reapply 死引用 | 2 条(anthropic) | 从循环里移除 |
| 空插件目录 tdx_direct | 1 个 | 删除 |
| embed 缓存补丁脚本 | 1 个 | 上一轮已归档 |
清完后的 reapply 实跑
只剩两个 patch 文件、两处 SDK 版本锁、两处 writer 补丁。 整条跑通且幂等,重复执行全部 skip,输出 RESULT OK。
留给你定的两件事
| 事项 | 现状 | 我的建议 |
|---|---|---|
| plugins/hermes-achievements | 3 个 json、无 __init__.py、未启用 |
加载器根本不会加载它,可归档 |
| 飞书卡片 12 个 .bak | HFC 自己写的回滚底本 | 别删,HFC 卸载或回滚要用 |
| 每次 hermes update 之后 | 注入会被上游覆盖 | 按技能里的六步重注入并核 sha |