Generated by Answer me with HTML 0.5.10 · 2026-10-29 10:51 · ★ Star on GitHub

hy-memory 补丁审计

5 处改动砍到 2 处 · 判据是代码路径,不是「上游有没有 bug」

source本机实机审计 2026-10-29 · wheel 逐文件 diff 复核

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

两个卸载的实证

锁是死代码

run_server() 在 serve_forever() 之前就调了 _get_client()。 请求进来时 _client 恒非空,那双检分支一次都走不到。

深度检查没人走

/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
卸载后的唯一代价

以后谁手动打 /api/v1/status,每次会漏两个 event loop 和一个 OpenAI client。 别把它当日常探针;真要看库状态,用 /health 或看门狗的状态文件。