---
template: sheet
theme: shadcn
title: 全机补丁审计 · 插件层
subtitle: 机械扫描 RECORD 哈希 + git 状态 + 插件目录 diff，不靠记忆
source: 2026-10-29 · 两 venv 全覆盖 · Hermes 0.22.2 git checkout
cols: 2
---

Lead: 全机真正的本地补丁只有四处来源：Hermes 核心两个代理补丁、飞书卡片的九个文件注入、
hy-memory 一个提炼补丁、以及插件目录里的两处开关。
顺手发现一个漏口：运行时加载的插件目录那份 server_manager 没带上今天的版本锁。

## A 补丁全清单

| 位置 | 内容 | 判据 | 结论 |
|---|---|---|---|
| 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 自管，不动 |

```callout warn 今天补上的漏口
Hermes 的插件加载器是从 `$HERMES_HOME/plugins` 逐目录执行 `__init__.py`。
也就是说运行时用的是 `plugins/hy-memory/` 那份实体副本，不是 site-packages。
上午的版本锁只打在 site-packages，运行时那条路径其实没锁上。
现在两份 server_manager 已逐字节一致，reapply 也改成两处都打。
```

## B 扫出来的东西怎么定位

| 扫描手段 | 覆盖范围 | 结果 |
|---|---|---|
| dist-info/RECORD 哈希逐个比对 | 两个 venv 全部 pip 包 | 只有 2 个包有改动 |
| git status 与 diff | Hermes 核心 checkout | 2 个代理补丁 + 9 个 HFC 注入 |
| 目录 diff 与 sha 复核 | 插件实体目录、manifest | 抓出 pin 漏打那一份 |
| manifest sha 比对 | 飞书卡片 13 个 targets | 9 个真注入，4 个空注入 |

## C 清掉的东西

| 对象 | 数量 | 处理 |
|---|---|---|
| 僵尸 patch 文件 | 9 个 | 移入 backups/plugin_patch_audit_20261029_1102 |
| reapply 死引用 | 2 条（anthropic） | 从循环里移除 |
| 空插件目录 tdx_direct | 1 个 | 删除 |
| embed 缓存补丁脚本 | 1 个 | 上一轮已归档 |

```callout info 清完后的 reapply 实跑
只剩两个 patch 文件、两处 SDK 版本锁、两处 writer 补丁。
整条跑通且幂等，重复执行全部 skip，输出 RESULT OK。
```

## D 留给你定的两件事

| 事项 | 现状 | 我的建议 |
|---|---|---|
| plugins/hermes-achievements | 3 个 json、无 `__init__.py`、未启用 | 加载器根本不会加载它，可归档 |
| 飞书卡片 12 个 .bak | HFC 自己写的回滚底本 | 别删，HFC 卸载或回滚要用 |
| 每次 hermes update 之后 | 注入会被上游覆盖 | 按技能里的六步重注入并核 sha |
