Skip to content

v5.6.0 — 记忆网络

Choose a tag to compare

@MirHuang666 MirHuang666 released this 09 Nov 11:05
· 110 commits to main since this release

本页会随勘误就地更新。规范全文以 main 为准。

范围

这一版只回答一个问题:每条记忆,说不说得清是谁记的、从哪来、还能信多久。

现状三处说不清:同一件事被三个模型各记一遍,看起来像三件;命中只给片段,不知道是电脑会话还是网页转述;
摘要覆盖式更新,事后问「当时为什么这么定」答不上来。设计四件:

一、分身 ID:avatar = <agent>-<model>[-<version>],三段全同才算同一个分身。
不取专名只留简称——模型的出厂身份已经有了,别叠加;缺哪段写 unknown
(dsh-unknown 比孤零零的 dsh 诚实),UUID 一律不当分身名。

二、三层溯源,一路回到原文,中间不许"再总结一次":

命中片段(带 avatar / source / 时间)
   → 分索引行:这条属于哪个文件(index\L1.jsonl)
   → 原文:file:line 逐字可读

三、检索只读客观:检索回的是「事实 + 来源 + 时间」,不返回性格、不写性格——
检索改的是"知道什么",改不了"是谁"。

四、性格 = 底座原生,只记录漂移(AVATAR_SPEC §8.1):不建性格面,人格直接用模型出厂神格;
差异不判跑偏、不压制、不写回。漂移只由本分身自己的真实记忆产生(peer: 与检索片段不参与),
由 persona_observe.py 按 persona_key 每天留一行表达快照(句长 / 问句率 / 决定词密度),
diff 只并排给人看,不判正常/跑偏——底座天生带性格,没有零点,也就没有「漂移」(§8.3)。
一句话:允许不同,不许互相污染;要「塑造」人格属于改身份,得人点头。

落地

文件 做了什么
persona_avatar.py avatar 唯一入口:认两种头方言(设备/底座 与 来源/模型)、缺段写 unknown、UUID 不当名
persona_index_l1.py L1.jsonl 每行加 agent/model/avatar;L1.md 加分身列
persona_search.py 结果带分身列;--avatar 过滤;--show-source(文件:行号);--context N(原文前后 N 行)
persona_master.py 总索引加「分身分布」
impl/launcher/avatar_poc.py 补 TC-AV7 性格隔离用例:7/7 → 8/8

证据

① 三层溯源:10/10 条命中都能在 3 步内读到原文行
② 可重建 :删 index/L1.jsonl → 重建 146 → 146 行
③ 性格隔离:PoC 8/8(AV7:A 变 B 不变 / 检索命中 0 / peer 不入漂移)

分身分布(实测):网页-deepseek-web 92 · dsh-unknown 32 · hermes-deepseek-v4-flash 7 ·
hermes-qwen3-* 12 · unknown 3。

顺手修掉两个真缺陷:--device/--model 对电脑会话一直是空的(导出写「来源/模型」,检索只认「设备/底座」);
分身过滤发生在「取前 60 名之后」,导致 206 条 dsh 命中被误报 0 条——改成先过滤再取候选。

边界

  • 历史文件没有元信息头 → unknown 就写 unknown,不按内容猜模型(猜出来的来源比没有更坏);
  • 不做跨设备实时同步:同步是文件层的事,索引只负责"读得对";
  • 不为整洁删重复——重复本身是证据(同一件事被两个模型独立记下,说明它重要);
  • 性格面不建(2026-11-09 定):人格用底座出厂神格;要「塑造」某分身属于改身份,仍须人点头(5.4 红线);
  • 漂移记录只落 ops\drift.jsonl,不进记忆正文——它是观察,不是经历。

修订记录

2026-11-09 首版。同日从「设计成文」推进到「已落地」:persona_avatar.py +
--show-source / --context / --avatar;性格隔离按他的要求折进 AVATAR_SPEC §8(合并章节),不新增节号。