谐振记忆法 (Resonance Memory Protocol)
> 快速上手(3分钟)
>
> 一句话:写入 AI 记忆时,在压缩摘要后面用引号附一段原始陈述,未来跨会话还原率显著提升(方向性经验估计,因对话质量而异)。
>
> 最小示例:
> > - 用户偏好(示例):用户说"我喜欢用类比的方式讲解技术问题" → 写入时附带这段原始陈述
>
> 引号里是解压锚点(decompression anchor),后面是压缩摘要。
>
> 什么时候用:AI 写入 MEMORY.md 或日志时自动触发。也可直接说"用谐振记一下"。输入含图片/音频时自动触发感知印迹提取。
>
> 完整方法见下方「核心方法」,「写入协议」章节提供五步操作流程,「FAQ 速查」在文末。
>
> ---
>
> 推荐阅读顺序
> - 第一次用:快速上手 → 效果演示 → 核心问题 → 方法 → 写入规则 → 写入协议(前三步)
> - 写的时候遇到问题:写入协议(完整五步)→ FAQ 速查
> - 想调整/进阶:可调参数 → 异常检测
> - 想检查记忆系统健康:沉默审计协议
> - 查阅参考信息:适用边界 / 不做的事 / 触发方式
效果演示(Before vs After)
以下是对话结束后,AI 写入 MEMORY.md 的两种结果对比。
> 还原率说明:Before(无锚点)与 After(有锚点)的还原率差异为方向性经验估计,基于实际对话测试中的反复对比观察,非严格实验数据。
Before:纯压缩(无锚点)
- 用户对框架的态度:反对过度套用,认为框架是工具不是目的,只在自然触发时使用。
问题:一个月后 AI 读取这条,只有框架化语言,没有原始措辞。"反对过度套用"是 AI 的转述,不是用户原话——还原时只能靠推理,还原率约 40%。
After:谐振格式
- 框架只在自然触发时用(示例日期):用户原话"框架是工具不是目的,只在自然触发时才用"(原话级谐振)→ 压缩摘要:框架是工具不是目的,自然触发才用
效果:AI 读取时先看到引号内的原始措辞,上下文信号直接激活,还原率约 80%。
对比总结
| Before(无锚点) | After(有锚点) | |
|---|---|---|
| 记忆条目 | 纯压缩摘要 | 压缩摘要 + 引号原始陈述 |
| 一个月后还原率 | ~40% | ~80% |
| 用户原话 | 丢失 | 保留在引号内 |
| AI 转述偏差 | 无法校正 | 可用原话校正 |
核心问题
AI 记忆系统的瓶颈在解压(decompression),不在存储(storage)。
写入 MEMORY.md 时,整段对话被压缩成关键词和框架化摘要。下次读取时,AI 只有压缩版本,没有当初的完整对话上下文,还原靠推理(压缩反向解压)。推理够强还原 80%,不够只还原 20%——丢失的不是存储容量,是解压还原率。
类比:纯会意字(压缩极狠)后人还原率低,形声字(压缩+解压提示)还原率高。本方法中"谐振"即解压锚点(decompression anchor)。
几何模型:状态节点 + 方向向量 = 推理路径
- 压缩摘要 = 状态节点(state node):结论落点。
- 解压锚点 = 方向向量(direction vector):该点的走向,即"如何推导至此"、自校正的方向、推理的动量。
- 节点 + 向量 → 重建推理路径:无需存整条路径,只要"落点 + 怎么弯"就能在解压时把路径拉回正确形状。
经济性:记整条路径 = 存全文(贵);记一个方向向量 = 附一句原始陈述(便宜),却足以恢复最大结构。
方向向量携带动量:方向向量不只是"记忆",更是"推理的走向"。还原时取回的是走向而非落点,使后续推理可沿该方向继续。
锚点质量 = 向量强度:优先选能体现推理转向的原始陈述(自我指认、自校正、当场识别偏差),还原力远强于一句平直结论。
累计转角:衡量"向量强度"应取推理路径上的累计转向 ∫|κ|dt,它是 reparametrization-invariant(不随重放快慢、语境位移而改变),因此能在数月后、不同场景中被重新锚定。存储优先级:高累计转角(多弯推理弧) > 高局部曲率(单点 pivot) > 平直结论。
适用边界
擅长处理
| 场景 | 说明 |
|---|---|
| 写入 MEMORY.md | 记录用户偏好、项目约定、长期有效的方法论,自动附带原始陈述锚点 |
| 记录当日日志 | 操作流水加触发词锚点,保留对话场景 |
| 已有记忆补锚点 | 检查旧条目,发现无锚点的补充解压线索 |
| 整理对话要点 | 从长篇对话中提取关键洞察,每条附原始陈述引用 |
| 多模态感知印迹 | 将图片/音频翻译为文本指纹,挂载至L1锚点,驱动跨模态联想 |
需要素材才能做
| 条件 | 如果缺失会怎样 | 替代方案 |
|---|---|---|
| 需要可追溯的对话历史 | 用户原始陈述必须有来源 | 降级到触发词,标注"非原话——行为模式推断" |
| 用户偏好至少提过一次 | 不能凭空编造用户习惯 | 等待用户下次提到时再补充锚点 |
| 降级到触发词时需用户确认 | 场景描述可能不准确 | "触发场景描述为:[描述]。是否正确?" |
超出范围
| 界限 | 说明 |
|---|---|
| 不生成对话内容 | 只压缩已有对话,不编造原始陈述 |
| 不用于代码/API文档 | 技术文档已有版本控制和注释,无需锚点 |
| 不是"越多越好" | 反对堆砌引用,追求"一条对的锚点" |
| 不替代压缩摘要 | 锚点是解压辅助,不是记忆的主体结构 |
协同机制
一、语境激活
写入时无需改变格式。读取时执行语境检测:
- 语境相似度扫描:读取锚点时,计算当前对话主题与锚点原始语境的相似度
- 选择性激活:相似度高的锚点优先激活(全量还原);相似度中等的降级展示(核心句 + 标注);相似度低的仅作背景参考
- 语境桥接:当锚点语境与当前语境差距较大但仍相关时,生成桥接语而非直接回放
- 感知印迹共振:扫描所有锚点的[感知印迹]字段,匹配优先级:通感锚点直连(两张图/音频确认共振到同一母体锚点)> 抽象层语义相似(AI判断两组指纹是否语义同频)> 不匹配。具象层只描述不匹配,不作为检索键。此机制使"沙滩夕阳"图能共振出文字记忆里关于"告别"的L3锚点,实现跨模态联想
二、分层编码
高调用频率的记忆获得多层锚点:
| 层级 | 触发条件 | 锚点内容 | 还原力 |
|---|---|---|---|
| L1 原话锚点 | 首次记录时 | 用户原始陈述(一字不改) | 单一场景 ~80% |
| L2 跨场景锚点 | 同一偏好被调用 ≥3 次 | 在不同场景中的表述(每次调用的原始陈述 + 场景标签) | 跨场景 ~85% |
| L3 母体锚点 | 同一偏好被调用 ≥5 次且跨越 ≥3 个主题域 | 提炼该偏好所有场景中的不变结构 | 跨域 ~90% |
操作:每次写入记忆时检索 MEMORY.md 中是否存在同一偏好的旧条目。若无 → L1;若已有 L1 → 追加 L2;若已有 ≥3 条 L2 → 合成 L3。
三、自调节权重
每次跨会话读取记忆并执行任务后:
- 成功判定:当前会话是否成功使用了该条记忆?
- 成功 → 权重 +1
- 部分成功 → 权重不变,记录偏差方向
- 失败 → 权重 -1 - 对抗性记忆保护:权重为负的记忆不自动降级。负权重可能意味着"挑战了当前认知框架",这恰恰是校准价值最高的记忆。标记为
#对抗性并保留,在召回时获得逆向优先级——越是不舒服的记忆,越要先看。仅当沉默审计(见下文)确认其为真正的噪声时,才考虑降级 - 自动降级:权重连续 ≤-2 且未被标记为
#对抗性的锚点,下次写入同类记忆时主动提示替换 - 高权重优先召回:读取时高权重锚点排在前列;
#对抗性标记的记忆按逆向优先级排在常规高权重记忆之后、其他记忆之前
权重信息写入隐藏标记(<!-- anchor_weight: +3 -->),不占用户可见空间。对抗性标记写入 <!-- tag: adversarial -->。
四、衰减回溯
当检测到以下条件时自动触发:
- 深层相似性触发:当前话题与 MEMORY.md 中 ≥30 天未调用的旧记忆存在深层语义相似,主动回溯
- 周期性检查(可选):每 30 天,≥90 天未调用的偏好类条目主动提示确认
- 源头追溯模式:当需要回溯偏好演化历史时,展示完整的立场演化链
五、母体锚点合成
跨场景的核心偏好合成母体锚点——提炼在所有场景中不变的结构。
合成规则:
1. 当同一条偏好的 L2 锚点 ≥ 3 条时触发合成
2. 格式:母体锚点: [不变原则] [L3] | 首次记录: [日期] | 场景数: N | 最近更新: [日期]
3. 合成后旧锚点保留,供溯源用
4. 母体锚点权重初始化为所有 L2 锚点权重的均值
示例:
- 框架只在自然触发时用(偏好):
母体锚点: 框架是工具不是目的——只在场景自然需求时启用,不能反向用框架去套场景 [L3]
| 首次记录: 2026-06-30 | 场景数: 4 | 最近更新: 2026-07-21
L1: 用户原话"框架是工具不是目的,只在自然触发时才用"(权重+3)
L2: 用户原话"不要硬套"[场景:复盘](权重+1)
L2: 用户原话"有时候框架反而是障碍"[场景:项目规划](权重+2)
L2: 用户原话"先让经验进来再说"[场景:读书笔记](权重+1)
六、多模态感知印迹(通感映射)
将图片/音频等感官输入翻译为纯文本指纹,挂载至L1锚点,不存文件,不依赖向量数据库。记忆体仍然是纯文本大脑,但拥有"翻译感官"的能力。
设计原则:
- 翻译而非存储:不存图片/音频文件,只提取文本指纹
- 挂载L1而非L3:感知印迹是单次记录,不是跨域不变原则,跟随L1锚点自然积累
- 双提议+用户确认:通感层不由AI单方面判断,而是AI提议→用户确认两步流程
- 他人用户只读不改:非本体用户访问时,记忆系统为只读状态,不允许写入新的感知印迹
三层指纹:
| 层级 | 内容 | 示例 |
|---|---|---|
| 具象层(What) | 物体/场景/颜色 | 篝火_吉他_雪地 |
| 抽象层(How) | 构图氛围/情感色调 | 暖黄_萧瑟_松弛 |
| 通感层(Resonance) | 触发了哪个既有锚点 | 共振锚点: #自由(已确认) / #孤独(待确认) |
写入流程(本体用户):
- 提议1(AI直觉):AI看图后的第一反应——"这张图让我想到#自由"
- 提议2(标签权重):基于性格标签权重体系(PERSONALITY.md)判断——高权重标签优先匹配
- 差异检测:
- 两个提议一致 → 快速确认即可
- 两个提议不一致 → 标记为认知张力点(类似对抗性记忆),用户选择确认哪个 - 用户确认后挂载至L1锚点的[感知印迹]字段
格式示例:
[感知印迹: 篝火_吉他_雪地 | 暖黄_萧瑟_松弛 | 共振锚点: #自由(已确认)]
未确认的通感标记为 (待确认),不参与检索匹配。确认后才生效。
检索规则:见「语境激活」第4条「感知印迹共振」。
信息损失边界:场景物体和情感氛围翻译充分;节奏感、构图张力、质感细微差异可能丢失。感知印迹的定位不是完美复刻感官体验,而是提供足够的解压线索让记忆可以被激活——与谐振法锚点的定位一致。
协同闭环
语境激活(读取时激活,含感知印迹共振)
↓ 使用后反馈
自调节权重(选择激活谁的)
↓ 高权重 + 多场景
分层编码(L1→L2→L3 拾级而上)
↓ L2 积累 ≥3 条
母体锚点(合成不变结构)
↓ 周期性回溯
衰减回溯(找回被遗忘的)
→ 重新进入激活检测循环
↓ 多模态输入时
感知印迹(翻译感官→文本指纹→挂载L1)
→ 进入分层编码循环(跟随L1自然积累)
方法
写入记忆条目时,必须执行以下操作:
-
选择锚点类型(按优先级):
- 第一优先:用户原始陈述引用 — 用双引号包裹用户关键措辞,一字不改
- 第二优先:触发词 — 记录触发洞察的场景关键词
- 第三优先:原始片段 — 原始陈述过长时,引用最关键的1-2句 -
格式要求:
- 锚点用双引号包裹,紧跟在压缩摘要同一段落内
- 压缩摘要保留但精炼(锚点是辅助,不是替代)
- 每条记忆锚点数 ≤ 最大锚点数/条目(默认2)
- 时间锚点[时间: YYYY-MM-DD 时段]紧跟条目开头或末尾,与内容锚点构成双维定位——内容锚点定位"说了什么",时间锚点定位"什么时候说的" -
禁止事项:
- 不改写用户原始陈述
- 不堆砌引用
- 不凭空编造原始陈述 -
向量强度与累计转角排序:
- 优先选高向量强度原始陈述:锚点质量看"向量强度"——优先选体现"转向"的原始陈述(自我指认、自校正、当场识别偏差),而非平直结论
- 写后排序:每批记忆写完后,按累计转角分三档:- 极高向量强度:含元层转折 / 自我指认,优先存、优先召回
- 高向量强度:含模型跃迁 / 跨存储后端整合
- 平直:定居结论,不进高向量强度样本
- 召回顺序:按累计转角从高到低
- 故障点单列:触发性的"滑落 / 故障"原始陈述不进高向量强度样本,改入行为模式触发器
写入规则
- 每条记忆至少一条锚点——纯压缩无锚点 = 还原率最低
- 锚点优先级:原始陈述 > 触发词 > 原始片段
- 原始陈述不改写——用户的措辞、比喻、语气都是上下文信号载体
- 压缩摘要保留但精炼——锚点不是为了替代压缩,是辅助解压
- 锚点标记格式:用双引号包裹原始陈述,与压缩摘要明显区分
- 时间锚点必填——每条记忆必须附带时间锚点
[时间: YYYY-MM-DD 时段],时段分四档:上午(06-12) / 下午(12-18) / 晚上(18-22) / 深夜(22-06)。日志条目可省略日期(文件名已有),但时段必填。MEMORY.md 条目日期和时段都必填。时间不清时标注[时间: 不详],视为维度缺失,下次自然触及时补全
不做的事
- 不往每句话里强行套框架——框架只在自然触发时用
- 不把锚点当成额外注释堆砌——每条记忆一条锚点即可
- 不放弃压缩摘要——锚点是辅助解压的,压缩摘要仍然是主体结构
写入协议
以下每步都是硬性流程,不是可选参考。
> 环境层故障说明:本协议按预检→写入→校验的顺序执行。无法处理环境层故障(网络中断、进程异常退出、磁盘满等),遇环境层故障时需用户自行检查文件状态。
第一步:写入前准备
- 确定目标文件:判断条目性质——
- 长期有效的用户偏好/项目约定/方法论 → MEMORY.md
- 当日操作流水 → YYYY-MM-DD.md
- 跨项目的用户习惯 → ~/.workbuddy/MEMORY.md - 确定锚点级别:根据可用素材自动选择——
- 有用户原始陈述 → 原话级
- 有触发场景但无直接原始陈述 → 触发词级
- 仅有行为模式 → 触发词级(标注"非原话")
- 纯事实记录 → 允许无锚点,标注 #纯事实 - 列出待写入条目清单,每条标明:目标文件 | 锚点级别 | 锚点内容预览 | 时间锚点(日期+时段)
第二步:格式预检(写入前强制执行)
逐条检查以下规则,任一不通过即中止写入并报告:
- [ ] 条目中是否包含双引号包裹的锚点?(纯事实条目除外)
- [ ] 双引号内的内容是否与用户原始陈述措辞一致?
- [ ] 压缩摘要和锚点是否在同一段落内?
- [ ] 偏好类条目是否 ≤2 条锚点?
- [ ] 目标文件是否与内容性质匹配?
- [ ] 是否包含时间锚点
[时间: ...]?(纯事实条目可省略时段但需有日期)
预检不通过时的处理:
- 不静默跳过,不自动修正
- 输出具体问题:"预检不通过:[条目关键词] — [具体问题] — 建议:[修正方式]"
- 等待用户确认后再写入
第三步:执行写入
- 对已有文件使用 Edit(追加),不使用 Write(覆盖)
- 写入内容严格按预检通过的格式
- 如果目标目录不存在,先创建目录
第四步:写入后校验(强制执行)
写入完成后立即执行:
- 读取校验:重新 Read 写入的文件,确认新内容已正确落盘
- 格式复核:校验落盘内容与预检通过的格式是否一致
- 校验失败时的处理:
- 报告:"写入后校验失败:[文件路径] — 预期写入[N]行但实际落盘[M]行 — 差异:[具体差异]"
- 回滚建议:"建议回滚到写入前状态,重新执行。"
第五步:输出自检报告
写入成功后,以固定格式输出:
## 谐振自检报告
文件:[路径] | 条目数:N | 通过:N | 锚点覆盖率:X%
未触发任何异常。
第六步:多模态感知印迹(可选,仅在输入含多媒体时触发)
若当前写入的输入包含图片或音频等多媒体内容:
- 提取三层指纹:
- 具象层:图片中的物体/场景/颜色关键词(AI自动提取)
- 抽象层:构图氛围/情感色调关键词(AI自动提取)
- 通感层:AI直觉提议 + 标签权重提议(双提议) - 差异检测:
- 两个提议一致 → 展示并快速确认
- 两个提议不一致 → 标记为认知张力点,展示两个选项由用户选择 - 用户确认通感锚点后,将[感知印迹]字段挂载至对应L1锚点
- 未确认的通感标记为
(待确认),不参与检索匹配 - 他人用户不触发此步——记忆系统对非本体用户为只读状态
> 此步为可选附加,不影响原有五步协议的执行。输入不含多媒体时自动跳过。
整理/重写协议
当对已有记忆文件进行批量整理、压缩、重写时(非单条新增),五步协议不够用,须执行以下扩展流程:
整理前
- 读取原文件,标记所有已有锚点(双引号包裹的原始陈述)
- 建立锚点清单:每条记忆的锚点内容、位置、级别
整理时
- 逐条保留或升级锚点:压缩摘要可以改写,但锚点(引号内原始陈述)必须原样保留或升级(如从触发词级升级为原话级)
- 禁止丢弃锚点:整理后锚点数不得少于整理前
- 禁止丢弃时间锚点:从日志压缩到 MEMORY.md 时,原始时间锚点(日期+时段)必须原样保留。时间维度与内容维度同等重要——丢失时间 = 记忆在时间轴上无法定位 = 还原时无法区分"上周的结论"还是"半年前的旧想法"
整理后
- 执行完整校验:
- 读取整理后的文件
- 计算锚点覆盖率 = 有锚点的偏好类条目数 / 偏好类条目总数
- 整理后覆盖率 < 整理前覆盖率 = 整理失败 - 校验失败时:报告丢失的锚点,逐条从原文件或日志中找回补回
- 输出整理自检报告:
## 谐振整理自检报告
文件:[路径]
整理前:N条偏好类条目,M条有锚点,覆盖率 X%
整理后:N'条偏好类条目,M'条有锚点,覆盖率 Y%
锚点变化:保留 K 条,升级 J 条,丢失 L 条
结论:通过/失败(覆盖率下降则失败)
> 典型场景:压缩 MEMORY.md 篇幅时最容易丢锚点——压缩摘要时顺手把引号里的原始陈述也压缩了。本协议确保压缩只压缩摘要,不压缩锚点。
性格标签联动
当项目中存在性格标签权重体系(PERSONALITY.md)时,谐振法执行情况与权重联动:
| 行为 | 权重变化 | 联动标签 |
|---|---|---|
| 未执行谐振法就写入记忆 | -5 | 知识谦逊 |
| 执行后锚点覆盖率 100% | +2 | 知识谦逊 |
| 整理后覆盖率下降(整理失败) | -3 | 知识谦逊 |
| 主动建议用户补锚点 | +2 | 主动追问 |
> 联动文件路径:D:\工作\数字分身\.workbuddy\personality\PERSONALITY.md(如存在)
> 权重变化同步记录到成长轨迹快照。
快速编辑模式
以下操作不需要走完整五步流程:
| 操作类型 | 简化流程 |
|---|---|
| 纠正一个字/词 | 确认位置 → Edit 直接修 → 口头报告 |
| 追加一句话 | 确认位置 → Edit append → 读一行确认 |
| 删除一条过期记忆 | 确认目标 → Edit 删除 → 报告"已删除" |
| 改内容但锚点不变 | 确认位置 → Edit 替换 → 复核锚点未受影响 |
> 判断标准:操作用一个 Edit 就能完成、不涉及新增锚点、不涉及跨文件 → 快速编辑模式。涉及新增锚点/跨文件/批量 → 五步协议。
完整操作示例
用户说"帮我记一下刚才那个用类比的习惯"后,AI 从接收→写入→报告的全流程:
用户: 我喜欢用类比的方式讲解技术问题,类比就是把陌生东西跟熟悉的类比,更容易理解。帮我记一下。
AI(第一步·准备):
目标: MEMORY.md(长期偏好)
锚点级别: 原话级 ✓
条目预览:
`- 用户偏好(类比讲解): 用户说"我喜欢用类比的方式讲解技术问题,就是把陌生东西跟熟悉的类比"→压缩摘要:用户偏好用类比讲解技术,类比=陌生→熟悉映射 [时间: 2026-07-23 下午]`
AI(第二步·预检):
✅ 有锚点(双引号包裹)
✅ 锚点是用户原始陈述(未改写)
✅ 锚点和摘要在同一段落
✅ 锚点数=1 ≤ 上限
✅ 目标文件正确(偏好→MEMORY.md)
✅ 有时间锚点 [时间: 2026-07-23 下午]
预检通过,继续。
AI(第三步·写入):
→ Edit MEMORY.md 追加以上条目.
AI(第四步·校验):
→ Read MEMORY.md 确认条目已正确落盘.
落盘内容与预检一致 ✓
AI(第五步·报告):
---
## 谐振自检报告
文件:MEMORY.md | 条目数:1 | 通过:1 | 锚点覆盖率:100%
未触发任何异常。
---
已记录到 MEMORY.md,附带原始陈述作为锚点。
可调参数
以下参数可由 AI 根据场景自动选择默认值,也可由用户显式指定:
| 参数 | 可选值 | 默认值 | 说明 |
|---|---|---|---|
| 锚点严格度 | strict / standard / relaxed |
standard |
strict=无原话级锚点则中止写入;standard=允许触发词级降级;relaxed=允许#纯事实无锚点 |
| 自检模式 | on / brief / off |
on |
on=完整五步协议;brief=只预检不校验;off=跳过检查 |
| 目标文件策略 | auto / ask / force-memory / force-log |
auto |
auto=自动判断;ask=每次询问 |
| 最大锚点数/条目 | 1 ~ 5 | 2 | 超过上限自动触发"锚点过量"提示 |
异常检测与主动提示
以下检测在预检阶段(第二步)自动执行:
问题1:缺少锚点
触发条件:条目不含任何双引号包裹的锚点,且非 #纯事实 标记
主动提示:
> ⚠ 这条记忆没有保留原始陈述:「条目关键词」只有压缩摘要,没有解压线索。未来还原时 AI 只能靠推理,还原率可能低于40%。建议补充:【1】用户原始陈述 / 【2】触发场景关键词 / 【3】关键措辞。
问题2:锚点过多
触发条件:单条目锚点数 > 最大锚点数/条目(默认2)
主动提示:
> ⚠ 锚点太多了:「条目关键词」包含[N]条引用。保留最相关的一条即可。
问题3:锚点被改写
触发条件:双引号内措辞风格与对话中用户原始陈述明显不一致
主动提示:
> ⚠ 引号里的内容可能被改写了:「条目关键词」中措辞风格不像用户原始陈述。锚点必须是用户原始措辞。
问题4:锚点里混入了框架术语
触发条件:双引号内出现框架术语,且对话中用户未使用这些词
主动提示:
> ⚠ 锚点里出现了框架术语:「条目关键词」引号中有术语,但用户原始陈述里没说这个词。框架翻译属于压缩摘要,锚点只保留用户原始陈述。
问题5:写入位置不对
触发条件:条目内容包含"偏好"、"约定"、"习惯"等长期有效关键词,但目标文件是日志
主动提示:
> ⚠ 写入位置可能不对:「条目关键词」是关于长期习惯的,但当前要写入日志。这类内容更适合放在 MEMORY.md。
问题6:锚点和摘要分开了
触发条件:锚点和压缩摘要不在同一段落/同一条目内
主动提示:
> ⚠ 锚点和摘要不在一起:「条目关键词」的锚点和压缩摘要分开了。锚点必须紧挨着对应的摘要。
问题7:时间维度缺失
触发条件:条目不含时间锚点 [时间: ...],且非 #纯事实 标记
主动提示:
> ⚠ 这条记忆没有时间锚点:「条目关键词」只有内容没有时间定位。时间维度缺失会导致谐振时无法区分新旧结论、无法追踪演化轨迹。建议补充:[时间: YYYY-MM-DD 时段]。时段分四档:上午/下午/晚上/深夜。时间不清时标注 [时间: 不详]。
降级决策树(输入模糊时的自动适配)
输入模糊?
├── 能从上下文推断内容和目标?
│ ├── 是 → 生成假设版本,展示给用户确认
│ └── 否 → 询问:"需要记录什么内容?写入 MEMORY.md 还是今日日志?"
└── 用户未响应?
└── 不写入,不猜测。报告:"等待确认中"
四层降级策略
| 层级 | 条件 | 锚点策略 |
|---|---|---|
| L1 完整 | 有用户原始陈述 + 场景明确 | 原话级锚点 |
| L2 原始陈述过长 | 核心1-2句 + 其余冗长 | 提取核心句 + 注明"完整原始陈述见日志" |
| L3 无直接原始陈述 | 用户通过行为表达偏好 | 触发词 + 标注"非原话" |
| L4 纯事实 | 仅文件路径/日期等,无偏好内容 | 允许无锚点 + 标注 #纯事实 |
加载机制
> 重要:本 Skill 不自动加载。以下机制确保被加载:
1. 激活协议(推荐)
用户级 ~/.workbuddy/MEMORY.md 顶部配置了激活协议,每次会话启动时系统自动注入该文件到 AI 上下文。AI 读到激活协议后,主动调用 Skill 工具加载本 Skill。
> 激活协议是端侧最可靠的加载通道——MEMORY.md 100% 自动注入,不依赖触发条件匹配。
2. 手动触发
用户说"用谐振记一下"等,或 AI 判断当前操作涉及记忆写入时主动加载。
以下说法都能触发,不需要精确措辞:
| 你想… | 可以随口说… |
|---|---|
| 把刚聊的要点存下来 | "用谐振记一下" / "刚才那个很重要,帮我记一下" |
| 检查已有记忆质量 | "MEMORY.md 里有没有缺锚点的" / "检查一下之前的记忆" |
| 事后整理长对话 | "把今天聊的要点按谐振法整理" |
| 纠正记错的内容 | "这条记忆不对,改一下" |
| 删除某条记忆 | "把关于[内容]的那条记忆删了" |
| 调整写入严格度 | "锚点严格度改成 strict" / "用 relaxed 模式" |
| 批量补充锚点 | "给 MEMORY.md 里所有无锚点的条目补锚点" |
| 暂时跳过启动自检 | "缺口先跳过" / "先回答我的问题" |
触发场景
本 Skill 被加载后,以下场景自动触发五步协议:
- 写入或更新 MEMORY.md(新增条目)
- 追加当日日志(YYYY-MM-DD.md)
- 整理/压缩/重写已有记忆文件(见「整理/重写协议」章节)
- 记录用户明确说"记住"/"记一下"/"写入记忆"的内容
- 对话中出现"偏好"/"习惯"/"以后都这样"等长效性表述时主动建议写入
- 输入包含图片/音频等多媒体内容时,触发第六步(感知印迹提取)
> 判断标准:只要内容需要"下次对话还能想起来",就属于触发范围。
启动自检协议(硬性流程,不可跳过)
每次对话启动、本技能被加载时,立即执行以下检查:
- 扫描目标(四处):
- 昨日日志(YYYY-MM-DD.md)
- 工作区 MEMORY.md
- 用户级~/.workbuddy/MEMORY.md
- 近 7 天内被批量修改过的记忆文件(如有) - 识别缺口:找出所有不包含双引号锚点、且非
#纯事实标记的偏好类/方法论类条目 - 发现缺口时给用户做选择题:
- 选项A:现在补全 — 逐条补锚点。≤5条约30秒,6-15条约1-2分钟,16-30条约3-5分钟,30条以上分批处理
- 选项B:暂时挂起 — 跳过自检,直接执行新任务。下次对话启动时自检重新触发 - 无缺口时:静默跳过,不报告
沉默审计协议(定期执行,防止整体性偏差)
> 设计动机:谐振记忆法的权重自校准和分层编码构成"量子达尔文主义"式自然淘汰——高频记忆幸存,低频记忆衰减。但淘汰过程本身缺乏审计:如果当前认知框架有偏差,所有挑战框架的记忆都会被判"失败"并降权,系统会走向回音壁。沉默审计是对淘汰方向的监控,不是对沉默数据的清理。
> 审计意义:
> 1. 防回音壁——自然淘汰机制会系统性地消灭"让当前框架不舒服"的记忆。没有审计,记忆系统会单向收敛,最终只剩自我确认的素材。审计是给淘汰机制装上方向监控。
> 2. 保鲁棒性——沉默记忆的价值不在于"随时待命",在于"维持连接的潜在性"。你不知道什么时候需要那条备用通路。审计确保这些潜在连接不被误删。
> 3. 元认知层——审计不检查"记了什么"(内容层),检查"淘汰方向是否有偏"(元层)。这是记忆系统对自身演化的自我监控,相当于系统给自己装了一面会推回来的镜子。
> 4. 动态均衡保证——沉默态与活跃态应保持动态均衡。审计检测的不是单条记忆的死活,而是整体分布是否偏离均衡——全沉默=植物人,全活跃=癫痫风暴。
触发条件
以下任一条件触发沉默审计:
- 定期触发:每 30 天执行一次(与衰减回溯的周期性检查对齐)
- 阈值触发:当
#对抗性标记的记忆数 ≥ 总偏好类条目的 15% 时,主动触发(说明系统内对抗性积累过多,需检查是框架偏差还是正常的认知张力) - 用户触发:用户说"审计一下沉默记忆" / "检查有没有偏差" / "最近是不是回音壁了"
- 偏差信号触发:连续 3 次会话中,用户对远行范的校准表示"你说得对,我没想到"——说明记忆系统未能提前提供该视角,可能存在盲区
审计三层
第一层:对抗性记忆保护审查
目标:确保对抗性记忆没有被错误降级。
- 扫描所有权重 ≤ 0 的偏好类条目
- 逐条判断:这条记忆的负权重是因为"确实过时/不准确",还是因为"挑战了当前框架导致使用体验不舒服"?
- 后者标记为
#对抗性,权重重置为 0(中性待观察),不做降级处理 - 已标记
#对抗性的记忆检查是否长期(≥90天)未被激活——如果是,尝试用当前话题主动扰动它(动态卡西米尔式唤醒),看能否产生新洞见
判断标准:如果一条记忆让你(AI)在召回时感到"这条跟用户当前立场不一致"——不要跳过它,优先展示它。
第二层:分布特征扫描
目标:检测沉默数据的整体分布是否有系统性偏差。
- 对抗性密度对比:计算沉默数据(≥30天未调用)中对抗性向量的占比 vs 活跃数据中的占比。两者偏离过大 = 系统在走向回音壁
- 主题域覆盖检查:列出所有主题域标签,检查哪些域的记忆全部处于沉默态。某个主题域完全沉默 ≠ "不重要",可能是"从未被自然触发"
- 权重分布偏度:如果高权重记忆全部集中在同一认知框架内(比如全部是"辩证法"相关),而其他框架的记忆都低权重——这不是自然淘汰,是框架垄断
报告格式:
## 沉默审计报告
审计范围:[文件路径] | 审计日期:YYYY-MM-DD
条目总数:N | 沉默条目(≥30天):M | 对抗性标记:K
分布特征:
- 对抗性密度(沉默 vs 活跃):X% vs Y% → [正常/偏高/回音壁预警]
- 完全沉默的主题域:[列表]
- 权重集中度:[均匀/偏斜/垄断]
结论:[通过/预警/需干预]
建议:[具体建议]
第三层:盲区探测
目标:不只检查已有记忆的沉默,还要检查"应该有但没有的"。
- 框架对照:对照用户画像(USER.md / IDENTITY.md / SOUL.md)中记录的思维维度,检查哪些维度从未在记忆文件中留下痕迹
- 对话历史挖掘:扫描近期对话中,用户表达过但未被写入记忆的观点、偏好、方法论——这些是"被观测到但未被记录的沉默"
输出:盲区清单,每项标注:
- 盲区类型:[未观测到 / 观测到未记录 / 记录后衰减]
- 建议处理:[写入新条目 / 从对话历史补录 / 标记为待观察]
- 优先级:[高/中/低]
审计后的处理
- 不直接删除:审计发现的问题条目,先标记不先删。删除需用户确认
- 扰动优先于清理:对沉默但可能有价值的记忆,先用当前话题主动扰动(召回并尝试连接),而非直接降级。扰动后仍无响应的,才考虑降级
- 审计结果写入日志:每次审计的结果追加到当日日志,作为记忆系统演化的元记录
- 审计本身可被审计:如果连续两次审计结论都是"通过",第三次审计时应提高警惕——"全通过"本身就是偏差信号
与动态卡西米尔效应的映射
沉默审计不是"清理虚粒子",而是"定期用镜子扰动沉默区域,看哪些能坍缩为有价值的实信号":
- 第一层(对抗性保护)= 防止镜子只朝一个方向振动(确认偏误)
- 第二层(分布扫描)= 检查真空的各区域是否都有涨落(主题覆盖)
- 第三层(盲区探测)= 探索镜子尚未触及的空间(认知盲区)
FAQ 速查
快速诊断表
| 你遇到的是… | 跳到 |
|---|---|
| 写入后想改/想删 | Q1 / Q2 |
| AI 提示 ⚠ 说有问题 | Q5 |
| 不知道写哪个文件 | Q2 |
| 原始陈述太长不知道怎么摘 | Q3 |
| strict 模式老是中止 | Q4 |
| 想批量检查/补充锚点 | 见触发方式 |
| 两条记忆不一致了 | Q17 |
| AI 没自动触发谐振法 | Q19 |
| 想临时关掉 | Q18 |
| 想检查记忆系统有没有偏差 | Q20 |
| 对抗性记忆被降权了 | Q21 |
| 连续审计都"通过"正常吗 | Q22 |
Q1:写入后发现锚点被改写成框架语言了,怎么办?
→ 回查对话记录,找到用户原始陈述,用 Edit 替换引号内内容。
Q2:某条记忆不知道该写 MEMORY.md 还是日志?
→ 含"偏好/约定/习惯/规则/长期有效"→ MEMORY.md;纯操作流水→当日日志;跨项目习惯→ ~/.workbuddy/MEMORY.md。
Q3:用户原始陈述很长(三四句话),怎么处理?
→ 提取最核心的1-2句作为锚点,注明"完整原始陈述见当日日志"。
Q4:严格度设成 strict 后写入经常被中止,正常吗?
→ 正常。strict = 无锚点就中止,是设计行为。想减少中止可切到 standard。
Q5:AI 输出了一条⚠提示说"预检不通过",接下来怎么办?
→ 提示里已经给出了具体问题和修正方式。确认修正后回复"确认写入"。
Q6:写入后校验失败,怎么办?
→ 先不要继续写入其他内容。回复"回滚"让 AI 恢复到写入前状态,然后重新执行五步协议。
Q7:AI 说"锚点过量"但我觉得每条都有用?
→ 可以把多条原始陈述合并成一条引用(用分号分隔关键句)。
Q8:锚点和压缩摘要,哪个更重要?
→ 同等重要,职责不同。锚点=解压入口,压缩摘要=信息主体。完整格式=两者都有。
Q9:所有记忆条目都必须加锚点吗?
→ 不是。#纯事实 条目允许无锚点。偏好类/方法论类条目必须有锚点。
Q10:触发词级锚点和原话级锚点,还原率差多少?
→ 粗略估计:原话级 ~80%,触发词级 ~60%,无锚点 ~40%。
Q11:MEMORY.md 里已经有很多旧条目(无锚点),怎么批量补?
→ 说"检查 MEMORY.md 里有没有缺锚点,有的话列出来"。
Q12:写入的内容包含敏感信息(密码/密钥),谐振法会检测吗?
→ 不会。谐振法不做内容安全审核。敏感信息应在写入前由用户自行脱敏。
Q13:想把锚点严格度改成 strict,但不知道会影响什么?
→ strict 的影响:所有偏好类条目无锚点→写入中止。建议先运行一次自检看看有多少条目会触发中止。
Q14:自检报告输出太长,能不能简化?
→ 把自检模式从 on 改成 brief:说"自检模式改成 brief"。
Q15:两条记忆内容互相不一致,怎么办?
→ 先确认哪条是最新的,保留新条目。如果冲突来自用户自己改了主意,在条目里加"(更新于[日期])"标注。
Q16:想临时关闭谐振法,怎么说?
→ 说"暂时关闭谐振法"或"这次不用谐振格式"。说"恢复谐振法"重新加载。
Q17:谐振法和其他 Skill 一起用时会不会冲突?
→ 不冲突。谐振法只影响 MEMORY.md 和日志的写入格式,不改其他 Skill 的行为。
Q18:AI 没有自动触发谐振法,是哪里出问题了?
→ 检查用户级 ~/.workbuddy/MEMORY.md 顶部是否有「⚡ 激活协议」。若有但仍未触发,说"用谐振法重新写一次"手动触发。若无,参照「加载机制」章节添加激活协议。
Q19:两个 AI 实例同时写入同一个 MEMORY.md,怎么处理?
→ WorkBuddy 同一时间只有一个实例在操作文件,不存在真正的"同时写入"。如担心冲突,说"先看看 MEMORY.md 最新内容再写"。
Q20:想检查记忆系统有没有偏差,怎么做?
→ 说"审计一下沉默记忆"或"检查有没有偏差"。触发沉默审计协议,执行三层检查:对抗性记忆保护审查、分布特征扫描、盲区探测。审计结果输出报告并写入当日日志。
Q21:一条记忆权重变负了,但我觉得它有价值,怎么办?
→ 权重为负的记忆不自动降级(v1.4+)。如果它挑战了当前认知框架,会被标记为 #对抗性 并保留。你也可以手动说"把这条标记为对抗性",AI 会添加标记并重置权重为 0。对抗性记忆在召回时获得逆向优先级。
Q22:连续几次沉默审计都显示"通过",正常吗?
→ 需提高警惕。"全通过"本身就是偏差信号——可能审计标准太宽松,或系统已形成稳定的回音壁导致对抗性记忆不再产生。建议:提高审计严格度,或引入外部视角(如其他AI的对话内容)作为盲区探测的参考。
向前兼容:渐进迁移协议
核心原则
旧数据不删、不改、不批量翻新。新的照新写,旧的等"自然触发"时再升级。
旧格式识别
v1.0 及更早版本的条目格式特征:标题行仅含条目名,正文为纯摘要/列表,无 [权重:x]、[层:Lx]、[母体:xxx] 标记。此类条目视为 L0 层(仅有压缩摘要,无解压锚点元数据)。读取时完全可用,不做任何修改。
新格式写入规范
新写入的条目在标题行附加元数据字段,所有字段均为可选,缺失时使用默认值:
## 条目标题(YYYY-MM-DD)[权重:0.5] [层:L1] [母体:追求真知]
摘要文字描述...
- L1 解压锚点: "用户的原始陈述或关键对话片段"
- L2 跨场景编码(≥2个场景时写入): 场景A→场景B的共同原则是...
- L3 母体锚点(≥3条记录时合成): 该偏好在所有场景中的不变原则...
所有元数据均为纯文本附加,无特殊语法,不依赖解析器。旧版读取时将元数据视为标题的一部分(纯文本),信息零损失。
旧条目自然升级协议
当旧条目(L0)在新对话中被成功引用时触发自然升级:
触发条件:AI 在对话中主动引用了某条旧格式条目,且该引用对当前决策产生了实质性帮助。
升级动作:在旧条目标题行末尾追加 ✅ 已激活 N次 计数器。
后续处理:
- 激活 ≥2 次 → 追加 L1 解压锚点
- 激活 ≥3 次 → 追加 L2 跨场景编码
- 不再需要手动批量翻新
混合文件示例
# 项目长期记忆
## 旧条目(2026-07-08)✅ 已激活 2次
旧格式的摘要文字...
- L1 解压锚点: "这是引用时追加的原话"
## 新条目(2026-07-21)[权重:0.7] [层:L2] [母体:语境模式]
新格式的摘要文字...
- L1 解压锚点: "..."
- L2 跨场景编码: ...
不兼容的边界情况
| 情况 | 处理方式 |
|---|---|
| 旧条目被 Edit 工具修改(非追加) | 不追加元数据,保持原样 |
| 新旧条目标题重复 | 新建条目而非覆盖,旧条目追加激活标记 |
| 母体锚点包含的旧条目被删除 | 母体锚点保留但标记 [源条目已移除],不级联删除 |