Hermes 记忆系统优化报告

执行概览

Hermes 记忆系统优化报告

USER.md / MEMORY.md 瘦身 + 治理加固 + 项目内容归位 + rules/ 范式 + blueprint 体检(REQ-1~9)

99.9% → 48.7%
USER.md 水位(18 条 → 14 条)
98.5% → 39.8%
MEMORY.md 水位(21 条 → 16 条)
89 项
迁移完整性验证 ALL PASS
25 条
提案队列清零(22 本任务闭环 + 3 条历史 resolved)
方法链:需求事实(第一性原理 + 剃刀 + 对抗性验证)→ 设计事实(+渐进式披露)→ 覆盖矩阵 → 实现检查设计(对抗性验证)
证据物:VERIFICATION.md(89 项 ALL PASS)、migration-map.mdblueprint-audit.mdverify-memory-migration.py
执行:MBP Claude Code 编排,hermini 远程执行;memories git 基线 6b13229 → 重写 591129e → 对齐 6d8ab79

发现的问题清单(16 项)

现象 / 实测数据 / 根因。需求分析期 9 项 + 实现期对抗性验证增量发现 7 项。

需求分析期发现

问题 1
两文件触顶,写入能力丧失
MEMORY 3938/4000(98.5%)、USER 2498/2500(99.9%);memory_tool.py 整文件预算超限即拒写根因职责原则(项目内容归项目目录)未执行 + governor 三缺口;非限额太小——限额已上调过一次,5 天膨胀 ×3。
问题 2
governor 对 USER.md 零主动治理
allow_proposals=False 硬编码,99.9% 水位的文件没有任何提案机制。
问题 3
提案闭环未闭
proposals.json 3 条 pending 自 08-12;催收项目大段因此长期驻留 MEMORY.md。
问题 4
FORCE_MARKERS 豁免过宽
带 🔴/⚠️ 的铁律条目不参与长条目提案,而最长的条目恰是铁律(豁免 = 失声)。
问题 5
无条目时效机制
瞬时状态(kimi key 周重置日等)永久占坑。
问题 6
USER/MEMORY 跨文件重复
CC 委派铁律两文件各一份,语义重叠。
问题 7
项目内容违规驻留
催收外呼项目大段事实(M20)留在 MEMORY.md,违反 08-09 既有原则。
问题 8
矛盾条目
U13/U16(GitHub 推送规则)与 M15(2026-08-11 用户明确撤销推 remote)直接冲突。
问题 9
过期事实
M14「VPS 2核3.6G/systemd」(hermes 已迁 Mac mini/launchd);env.md ssh 别名表过期;M20「v7=42 节点」(实际 v8=48)。

实现期发现(对抗性验证的增量价值)

问题 10
governor 长条目阈值与写入规范矛盾
阈值 80 字符 vs 新规范单条 ≤150:重写后的合规文件被干跑出 10 条噪音提案(P20260814-16~25),机制空转。
问题 11
blueprint SKILL.md 同一规则 5 次重述
「全局层+Feature 层」在第二节重述 5 遍(用户原话引 4 次、git mv 坑写 3 遍)+ 2 处逐字重复(表头/段落各写两遍)。
问题 12
references 三份同主题文件漂移
global-feature-layers / structure / two-layer-structure 同用户原话三版本,内容互有出入。
问题 13
SKILL.md 触发链缺陷
description 触发词只有「新项目」向,REQ-9(做任何事走项目方式)无触发通路。
问题 14
CC 强制委派双口径矛盾
USER.md 条目例外按类型(基础设施命令),blueprint 准入节例外按规模(极小一次性),执行时会打架。
问题 15
.claude/rules/ 死目录
CC 无按路径自动加载机制,scaffold 却持续生成且文档声称「@import 引用」(6 处假声明)。
问题 16
skill 目录无版本控制
~/.hermes/skills/ 非 git 仓库,改错不可回滚。

解决的问题清单(8 项)

做法 / 验证证据。

解决 1
职责宪章重写(方案 B:全量双审查迁移)
USER 18 条→14 条 1217 字符(99.9%→48.7%);MEMORY 21 条→16 条 1593 字符(98.5%→39.8%)证据verify-memory-migration.py 89 项 ALL PASS;hermes -z 自读数字与实测逐字一致。
解决 2
全量迁移映射
U1-U18/M1-M21 每条裁决去向+理由(migration-map.md);脚本按编号断言全覆盖、去向目标(refs/新文件条目序号/references 文件)全部真实存在。
解决 3
项目内容归位(REQ-2)
催收:STATE.md 从 08-09 过期态更新至当前事实(v8=48 节点 / 8-13 会议 6 结论 / 三方待办),NOTES.md 操作条目迁 rules/deploy.md;wechat-qa:NOTES.md 操作条目迁 rules/eval-pipeline.md + rules/doc-sync.md;UI 偏好细节迁 refs/ui-preferences.md(新建);项目属性(公司/个人)登记进 refs/project-index.md;env.md 拓扑修正(launchd / WG 别名 / 7897 污染)。
解决 4
rules/ 范式落地(REQ-3)
两试点项目根目录 rules/ + CLAUDE.md「项目规范(rules/)」注册节(git aa02f8b / 85941a6);scaffold 模板与 init-scaffold.sh 同步改根目录范式(TDD:2 红 → 11 绿);冷启动验证两项目注册节引用文件全部存在。
解决 5
governor 加固(REQ-7,5 项)
USER.md 纳入提案(仍禁自动下沉);usage 水位计量 + ≥80% warn;@[日期] 过期提案(不自动删);铁律条目 >200 字符仍提案;长条目阈值 80→150 与写入规范对齐(修正案,TDD:先红后绿,26 测试全绿)。 干跑auto_actions=0、proposals=0、双 warn=false。
解决 6
提案队列清理
本任务产生的 22 条全部闭环(12 resolved=迁移已执行 / 10 dismissed=阈值噪音);08-12 的 3 条历史 pending 亦于 08-14 核实 resolved(条目已在重写中压缩落位),提案队列清零。
解决 7
blueprint 体检落地(REQ-8)
任务准入节新增(REQ-9);description 触发词扩充;.claude/rules/ 死目录 6 处假声明修正;同一规则 5 次重述合并为 1 权威块(信息零丢失,用户原话 4→1);references 三份漂移文件合并(两份转指针 stub);全部改动 .bak-20260814 备份。
解决 8
矛盾与过期事实清理(REQ-4)
U13/U16 删除(以 M15 为准);M14 更新为 Mac mini/launchd 事实;M20 项目事实归项目目录(以 NOTES.md v8=48 为准,不搬旧播种错误);USER/MEMORY 重复条目按职责归一处。

未解决 / 转办清单

已闭环
历史提案清零(原转办 1,2026-08-14 解决)
P20260812-02/03/04 三条历史 pending 经核实:条目已在重写中压缩落位(02→MEMORY条目2 / 03→USER条目13 / 04→MEMORY条目5),提案诉求实质满足,已全部 resolved,提案队列清零,无需用户操作。遗留:提案确认闭环自动化 = hermes-evolution 遗留问题#1,归该项目迭代。
转办 1
blueprint-audit 待确认 3 项
B1:第一/五节 ~400 行项目战疤是否下沉 references/(触发链取舍,建议按「通用机制留正文、单一项目战疤下沉」切分);B2:skill 目录 git init(本地仓,不推 remote);B3:SKILL.md 开头「不可跳过」与准入豁免的表述微调。详见 blueprint-audit.md 第二节。
转办 2
test_pw_schedule.py 11 ERROR
环境性既有失败(fixture FileNotFoundError),与本任务无关,未动。
转办 3
wechat-qa-bot 存量未提交变更
08-13/08-14 会话产物(任务卡/截图/dist-doc),非本任务产物,按「只提交本任务文件」原则未动;建议该项目另行整理提交。
保留
备份保留
~/.hermes/memories.bak-20260814、SKILL.md.bak-20260814、references 两份 .bak、~/.ssh/config.bak-20260814(WG 升级);确认运行一周无误后可删

优化前后对比

2498/2500 → 1217/2500
USER.md 字符(18 条 → 14 条)
3938/4000 → 1593/4000
MEMORY.md 字符(21 条 → 16 条)
指标优化前优化后
USER.md2498/2500(99.9%),18 条1217/2500(48.7%),14 条
MEMORY.md3938/4000(98.5%),21 条1593/4000(39.8%),16 条
governor USER 提案无(allow_proposals=False)有(提案允许,自动下沉仍禁)
条目时效机制@[YYYY-MM-DD] 标记 + 过期提案
长条目提案阈值80(与 ≤150 写入规范矛盾)150(对齐;铁律 >200 仍提案)
铁律条目治理无限豁免(最长条目失声)>200 字符提案「铁律句+细节下沉」
水位可见性usage chars/limit/pct + ≥80% warn
提案队列3 pending + 22 本任务噪音3 pending(仅 08-12 历史遗留)
项目内容催收大段等驻留 memory全部归项目目录/refs,留指针
rules/ 范式不存在(.claude/rules/ 死目录)根目录注册节范式(2 项目 + scaffold 模板)
blueprint 任务准入无(触发词仅「新项目」)「〇、任务准入」节 + 触发词 + 记忆条目对齐
blueprint 结构冗余双层结构 5 次重述 + references 三份漂移1 权威块 + 1 权威文件(stub 重定向)

优化后 USER.md 完整内容

14 条,1217 字符 / 2500(48.7%)。条目以 § 分隔。

USER.md(优化后全文)
设计哲学:设计=第一性原理+剃刀原理;审查=对抗性验证;选择必须明确指定;指标须过「可获取性+独立价值」双审查;流程图用PlantUML。可点击vs不可点击样式须可区分。邮件/对外文案:言简意赅、给明确答复时间点。
§
🔴CC强制委派:一切编程/工程任务必须委派 Claude Code(Hermes只做编排/检查/验证/数据分析/环境配置);做任何事(除极小一次性改动)先过 project-blueprint skill「任务准入」节判定。
§
GitHub: grootwu55-code。偏好中文。⚠️能自查的别问用户(如kimi额度:scripts/kimi-proxy.py)。
§
用户背景:车贷平台AI技术部(易鑫)。车主通Agent已投产(外呼→企微加好友→微信推进至终审→转人工)。汇报面向老板:重事情前景与有利条件。
§
前端/UI偏好→读 refs/ui-preferences.md(做页面/HTML交付物时:双端适配、一屏Dashboard、目录左固定、表头吸顶、移动端CDP实测)。
§
做事风格:宁可少做几样但做精;分步迭代(「先简单」);用数据算清能不能做完做好;回答已隐含答案时别重复问。
§
交付物固定 HTML+CF Pages 链接;部署/更新后完成通知末尾必须附全部 pages.dev 链接;复杂表格/待办清单写进 HTML 交付物,不在聊天贴大表格。
§
工作流:功能开发默认先brainstorming(澄清→方案→设计→批准→实现);记待办必须把遗留问题嵌入条目内部,重启项目第一步=逐条确认;委派CC的任务卡必须同步发用户一份。
§
冲突处理:需求反复冲突≥2次→停下复盘冲突史找根因→按「必须保证/重要想要/加分项/不可接受」四档重述→逐条确认后再行动。
§
真实性:结论必须附真实数据来源+逐条case清单,明确区分「真实数据」与「规则推演」;交付质量要求持续提高。
§
契约偏好:固定契约名/单一写法,不喜兼容多key hack;凭证/VPS地址不落代码(显式占位符);文档指令与程序行为逐字一致、以源码为准,程序变更须同提交同步双份文档+契约测试。
§
场景指针:每月考勤→attendance-helper skill;孩子学习规划(窄焦点1-2科)→study-planning skill;购物调研必须含商品图、断言「有很多」时信任并扩大渠道(头条/360)。
§
设备:MBP M4 Max 128G + iPhone12PM(Lightning)。知识管理:Markdown=知识真相源,Obsidian只是编辑器;同步用Syncthing,禁iCloud同步Vault。
§
「工作站建设」=个人AI工作站体系(project-blueprint/待办看板/Hermes部署在Mac mini+2台VPS),所有基建服务于此;涉及工作站/基建方向时以此为准。
来源:~/.hermes/memories/user.md(2026-08-14 职责宪章重写后基线 6d8ab79)

优化后 MEMORY.md 完整内容

16 条,1593 字符 / 4000(39.8%)。条目以 § 分隔。

MEMORY.md(优化后全文)
环境配置→读 ~/.hermes/memories/refs/env.md(涉及CF部署/仪表盘/工具链/服务器/ssh别名/WG拓扑时)
§
项目索引→读 ~/.hermes/memories/refs/project-index.md(涉及具体项目任务时;项目级内容一律放工程目录不放memory;项目属性=公司/个人登记在此)
§
新教训→读 ~/.hermes/memories/refs/lessons.md(同类问题出现时)
§
模型/provider诊断→先读 ~/.hermes/state/sentinel.json(勿假设config误改);详见 hermes-provider-management skill。
§
Hermes主对话优先级链:K3(kimi-coding) > GLM5.2(zai) > DeepSeek V4 Flash;config在 ~/.hermes/config.yaml model段。两个kimi coding key轮换:一个403限流→切另一个;周重置日可能变化 @[2026-08-25]。
§
🔴视觉铁律:需要视觉一律第一时间用CC(claude -p "用Read读取image.png");禁用GLM视觉(非多模态且429);文本OCR用tesseract;截图先压缩(800×1000)每批≤2-3张防CC OOM。
§
⚠️铁律:断言"可用/能通"前必须实测;方案按实测可用性排序,已知不通不放首选。
§
Discord子区会话隔离:用户说"继续"时必须先session_search当前子区/线程,勿全局搜索把别子区任务拉过来(2026-07-23教训)。
§
量化结论验证:声称"做不完/太多/不够"前必须拆因子逐一对照真实数据校正;出现强反证(如孩子"轻松完成")立即重算而非坚持原结论。
§
Hermes自进化体系:每周日21:00 cron自动跑memory治理+情报+进化页;用户说「确认/拒绝进化提案 <id>」→手动更新 ~/.hermes/scripts/data/evolution/proposals.json;详情→ ~/hermes-evolution/.cc/STATE.md。
§
CC故障:403/失败→查 claude-code skill 降级方案;claude -p无输出挂起(非403)→查 settings.json 残留 ANTHROPIC_MODEL。
§
文件版本日期铁律:展示的版本日期必须取文件内容里的版本时间,绝不取mtime(构建复制会更新mtime冒充);声明两份文件一致前必须内容双向差集验证。
§
🔴不要推remote(2026-08-11用户明确撤销旧规):项目一律不配置GitHub remote、不推送;若再被要求推先与用户确认。长任务委派CC(>5分钟)中途播报一次进度。
§
主机事实:Mac mini(M4/32G,用户hermini)=主平台,WG别名192.168.240.2(ping别名不回包是macOS怪癖,测连用ssh);北京VPS=WG hub(154.8.194.50,10.0.0.1);新加坡VPS已退役;禁Tailscale。跑批上传 --vps-host 用 hermini。Clash代理127.0.0.1:7897(curl需-x;报错=终端会话污染换新标签页)。
§
运维:切Claude Code模型一律用 cc-switch(~/.cc-switch-cli/config.json),绝不直接改 settings.json;零手动断点,init命令一条搞定。
§
记忆写入规范:瞬时状态类条目必须带 @[YYYY-MM-DD] 时效标记;单条≤150字符,详情指针化;项目级内容写工程目录不写本文件。
来源:~/.hermes/memories/memory.md(2026-08-14 职责宪章重写后基线 6d8ab79)

迁移映射表(全文)

每条旧条目的去向裁决(migration-map.md 原文)。决策规则:①绑定特定项目/skill/场景→下沉 ②身份/跨项目偏好→USER.md,环境事实/运维教训/指针→MEMORY.md ③两文件重复→按职责归一处 ④被更新规则明确撤销→删 ⑤瞬时状态→核实后更新/删除/加@[时效] ⑥保留条目>150字符→压缩+细节下沉。

条目编号来自 parse_entries.py 对 2026-08-14 基线(git 6b13229)的解析;governor 加固后干跑产生的 12 条机器提案(P20260814-04~15)与本表人工裁决一一对应(交叉验证通过)。

决策 tag 图例:保留/重写 合并/拆分 迁移 删除

USER.md(18 条)

编号字符条目起始决策去向/理由
U1155设计哲学:①设计=…重写保留新 USER#1,压缩至 ~130 字
U2123🔴CC强制委派…重写保留新 USER#2;与 M11 去重合并,细节在 blueprint「任务准入」节 + references/cc-delegation-*
U370GitHub: grootwu55-code…重写保留新 USER#3
U498用户背景:车贷平台…重写保留新 USER#4(车主通流程精简)
U5343所有页面默认双端适配…迁移+指针细节→refs/ui-preferences.md(新建);新 USER#5 留指针
U659每月考勤管理见 attendance-helper…合并并入新 USER#12 场景指针行
U7121功能开发默认先brainstorming…重写保留新 USER#8 压缩
U887做事哲学…孩子学习规划…拆分哲学→新 USER#6;学习规划→新 USER#12 指针行
U9128交付物固定 HTML+CF Pages…重写保留新 USER#7
U1094购物类调研…设备…拆分购物→新 USER#12 指针行;设备→新 USER#13
U11113移动端验收标准…CDP touch events迁移+指针细节在 blueprint references/mobile-overlay-scroll-testing.md;并入新 USER#10 真实性条
U12142会质疑交付真实性…重写保留新 USER#10
U1364GitHub 项目一律 private…删除被 M15(2026-08-11 用户明确撤销「推 remote」)取代;矛盾解决
U14119需求反复冲突≥2次…重写保留新 USER#9
U15178测试用例设计偏好…重写保留新 USER#8 合并压缩(细节在 blueprint skill)
U16175GitHub 推送规则:项目属性…删除+迁移规则被 08-11 撤销;公司/个人项目清单→refs/project-index.md「属性」列
U17125「工作站建设」…重写保留新 USER#14 压缩
U18253运维铁律:cc-switch…迁移属 hermes 运维→新 MEMORY#15 压缩;USER 删

MEMORY.md(21 条)

编号字符条目起始决策去向/理由
M1126Discord 子区会话隔离…重写保留新 MEMORY#8 压缩
M240⚠️铁律:断言"可用"前必须实测保留新 MEMORY#7 原样
M3165量化可行性结论验证流程…重写保留新 MEMORY#9 压缩
M4152CC 调用失败/403…cc-quota-reset-mechanism 待办压缩+待办迁移待办→todo-board(查重登记);条目→新 MEMORY#11 故障指针
M578环境配置→读 refs/env.md保留新 MEMORY#1 指针(措辞微调)
M6101项目索引→读 refs/project-index.md保留新 MEMORY#2 指针(追加属性登记说明)
M763模型哨兵→读 sentinel.json合并并入新 MEMORY#4「模型诊断」条
M8168🔴视觉铁律…重写保留新 MEMORY#6 压缩
M960⚠️新教训→读 refs/lessons.md保留新 MEMORY#3 指针
M10202Hermes 自进化体系…重写保留新 MEMORY#10 压缩
M11257🔴铁律(08-11) 工程内一切工作必须CC…删除(去重)与 U2 合并于新 USER#2;细节在 blueprint references/cc-delegation-*
M12239文件版本日期显示铁律…重写保留新 MEMORY#12 压缩(wechat 实现引用保留)
M13255Hermes 主模型配置在 config.yaml…合并并入新 MEMORY#5「优先级链」条;细节指针→hermes-provider-management skill
M14287VPS 2核3.6G。模型哨兵(systemd)…重写(过期)hermes 已在 Mac mini(launchd 非 systemd,VPS 已退役)→ 新 MEMORY#14 主机事实行;哨兵现状以 sentinel.json 为准
M15186🔴不要推 remote(08-11)…保留压缩新 MEMORY#13(最新推送规则,为准)
M16239用户偏好固定契约名…迁移用户偏好→新 USER#11「契约偏好」条
M17433Mac mini(M4/32GB)…WG拓扑08-14…重写保留新 MEMORY#14 压缩主机事实;env.md 同步修正别名表
M18205知识管理偏好…迁移用户偏好→新 USER#13 合并(压缩)
M19287Hermes 主对话优先级链…coding1 5h窗口满…重写保留新 MEMORY#5:留稳定事实;瞬时状态(窗口满/重置日 8/13 已过期)删除,加 @[2026-08-25] 时效
M20281AI催收外呼项目:易鑫…v7=42节点…删除(过期+违规驻留)项目内容归项目目录;NOTES.md 已有更新事实(v8=48节点、08-14 用户纠正),旧事实不搬(搬旧=播种错误);若 STATE.md 缺三方待办数则补入
M2154长表格不要全量贴 Discord…删除(去重)与 U9(交付偏好)重复,新 USER#7 已含

统计

USER.md:18 条 → 保留重写 9,合并/拆分 4,迁移 2(U5 细节、U18),删除 3(U13/U16/M16 类矛盾与迁出)→ 新 14
MEMORY.md:21 条 → 保留/重写 14,合并 2(M7/M13),迁移 2(M16/M18),删除 3(M11/M20/M21)→ 新 16
预期水位:USER ≤1500/2500(≤60%),MEMORY ≤2400/4000(≤60%)—— 实际 48.7% / 39.8%,均达标

附录:基线条目清单(parse_entries.py 输出存档——USER.md 2447 chars/18 entries,MEMORY.md 3878 chars/21 entries,编号 U1-U18 / M1-M21 与上表一致)。

验证结果(摘要)

全文见 VERIFICATION.md(89 项 ALL PASS)。

验证项结果
迁移完整性(编号覆盖 U1-U18/M1-M21 + 去向目标存在性 + 决策非空)✅ 89 项 ALL PASS
水位 ≤60%(双口径:文件字符 / MemoryStore §join)✅ 48.7% / 39.8%
死指针(refs/*.md、~/路径)✅ 0
时效标记(@[日期] 无过期驻留)
MemoryStore roundtrip(venv 实测解析)✅ memory=1592 user=1215
governor 回归✅ 26 passed(含 6 新增加固用例)
governor 干跑✅ auto_actions=0 / proposals=0 / warn 双 false
scaffold 回归✅ 11 passed(先 2 红后绿,TDD)
rules/ 冷启动(两项目注册节+引用文件存在)
hermes -z 冒烟(自读两文件报数)✅ 14条/1217、16条/1593 与实测一致
验证脚本自身对抗性修正首轮 23 误报(前缀匹配口径)→ 判为脚本口径错 → 改结构化核验

本次改动的 git 留痕

位置commit
~/.hermes/memories6b13229 基线 → 591129e 职责宪章重写 → 6d8ab79 准入口径对齐
~/ai-collection-callaa02f8b(rules/ 范式 + STATE.md 更新 2d189e6)
~/wechat-qa-bot85941a6(rules/ 范式)
hermes-ops(MBP 本仓库)spec 9e4410e + plan + 本报告归档
~/.hermes/skills/(blueprint)无 git(转办 B2);改动均有 .bak-20260814 备份