---
template: sheet
theme: shadcn
title: hy-memory 补丁审计
subtitle: 5 处改动砍到 2 处 · 判据是代码路径，不是「上游有没有 bug」
source: 本机实机审计 2026-10-29 · wheel 逐文件 diff 复核
cols: 2
---

Lead: 保留的只有提炼历史那一个补丁（两段改动），加上插件层的三个开关与版本锁。
server.py 的两处已卸载并按 wheel 原文还原，两个 venv 现在只剩 writer.py 有 9 行改动。

## A 逐条判决

| 补丁 | 位置 | 判据 | 结论 |
|---|---|---|---|
| 提炼历史 `or 5` | writer.py | 上游未修，实测 4060 → 2668 token，重抽 13 条 → 3 条 | 必须留 |
| `max_turns<=0` 短路 | writer.py | 同一补丁的第二段，缺它 0 轮不生效 | 必须留 |
| `_client_lock` 双检 | server.py | 启动时已初始化 client，双检永不触发 | 已卸载 |
| healthz 三处关闭 | server.py | 深度检查只挂 `/api/v1/status`，无人调用 | 已卸载 |
| search_query 透传 | 插件 | `.env` 开着去重，不透传则恒 false | 必须留 |
| trace 透传 | 插件 | 平时等价于硬编码，但保留能临时开 trace 测 token | 留，零成本 |
| SDK 版本锁 | 插件 | 防 doctor 静默升级冲掉全部补丁 | 必须留 |

## B 两个卸载的实证

```callout info 锁是死代码
`run_server()` 在 `serve_forever()` 之前就调了 `_get_client()`。
请求进来时 `_client` 恒非空，那双检分支一次都走不到。
```

```callout info 深度检查没人走
`/healthz` 是静态回复，`/health` 只探 event loop。
贵的那个在 `/api/v1/status`：embed 一次、LLM 一次、两个 asyncio loop。
看门狗打 `/health`，插件 CLI 也不打 status，于是这段代码常年不动。
```

## C 清理与复核

| 动作 | 对象 | 结果 |
|---|---|---|
| 卸载 | server.py 五处改动 | 按 wheel 原文还原，sha256 一致 |
| 归档 | hy_memory_patch_embed_cache.py | 移入备份目录 obsolete_scripts |
| 删除 | 两个 venv 的 server.py.bak | 已删 |
| 收敛 | hy_memory_patch_208.py | 只剩 writer 两条规则，幂等 |
| 复核 | wheel 逐文件 diff 两个 venv | 仅 writer.py 9 行 drift |
| 冒烟 | 重启后 info / healthz / health / status / 召回 / 写入 | 全通，写入 ops.add=1 |

```callout warn 卸载后的唯一代价
以后谁手动打 `/api/v1/status`，每次会漏两个 event loop 和一个 OpenAI client。
别把它当日常探针；真要看库状态，用 `/health` 或看门狗的状态文件。
```
