Skip to content

Memory Lifecycle

AceGuru-mjh edited this page Oct 1, 2026 · 4 revisions

记忆生命周期

💡 记忆 · 🏠 首页 › Memory-Lifecycle

Home Version Kotlin Modules Tools License

Memory-Lifecycle typing

📑 本页目录

cs-mem 不是"只增不减的日志",它有四个仿生管理机制:能量熵增 · 晶化 · 梦境渲染 · 免疫, 以及针对 App 升级的拓扑同胚迁移。本文是 cs-mem 的续篇。

1. 四个仿生机制一览

机制 组件 触发 效果
🔥 能量熵增 EntropyManager 每次梦境周期 成功检索/执行 → 能量增加;时间推移 → 按遗忘曲线指数衰减
💎 晶化 EntropyManager.shouldCrystallize → crystallizeMacro 能量 ≥8 且成功 ≥10 次且成功率 ≥90% ROM 级固化:免疫衰减 / 剪枝 / 删除
🌙 梦境渲染 DreamRenderer(WorkManager) 息屏 + 充电 + WiFi + 电量 ≥50% 低能宏随机保鲜验证、全局熵衰减、拓扑同胚迁移
🛡️ 免疫 MemoryImmuneSystem 每次摄取前 悬浮窗检测 / 敏感词分级 / 结构完整性 / 包名可信分级 / 可疑指纹隔离

1.1 能量与遗忘

能量↑   每次被成功检索 +a        时间↓ 每秒衰减 e^(-λt)(艾宾浩斯曲线形态)
能量↓   未被使用则随时间衰减     能量触及下限 → 坍缩删除(Prune)

这条曲线让记忆库是活的:常用常新,长期不用自然消失,而不是无限膨胀到撑爆手机存储。

1.2 晶化(ROM 化)

满足阈值的宏(shouldCrystallize)被固化为 ROM 级永久技能:

  • 免疫能量衰减;
  • 免疫剪枝与批量删除;
  • 只能通过"显式用户删除"移除。

类比:从"短期记忆+工作记忆"沉淀到"程序性长期记忆"(像骑自行车,不会忘)。

1.3 梦境渲染的条件与动作

DreamRenderer 通过 WorkManager 注册周期任务,必须同时满足:

  • 屏幕关闭(息屏);
  • 正在充电;
  • 连接 WiFi;
  • 电量 ≥50%(或满足 Energy 画像约束)。

满足后做三件事:

  1. 保鲜验证:随机挑低能宏,真的执行一遍验证还是否有效(失效则降低能量/删除);
  2. 熵衰减:全局走一遍 EntropyManager 衰减;
  3. 拓扑迁移:TopologyMigrator 处理版本漂移(见 §2)。

Note

这是"诚实保活"的一部分:不满足约束就不跑,不做欺骗式前台规避。

2. 跨版本记忆保鲜:拓扑同胚迁移

App 升级会改变 UI(resourceId / 布局 / 文案)→ 旧指纹失效 → 宏集体失配。 解法是"别名桥"而不是改写历史:

flowchart TB
    D["🌙 梦境周期<br/>TopologyMigrator"] --> CMP["对比旧/新版本节点集<br/>相同 role + resourceId 归一化<br/>+ textHint 相似度打分 ≥ 0.7"]
    CMP --> MAP["migration_map<br/>old_fp → new_fp<br/>(score · from_version → to_version)"]
    MAP --> LOOKUP["召回侧:精确匹配失败时<br/>findMacrosViaMigration 反查旧别名"]
    LOOKUP --> RES["resolveMigration 正向校验闭环<br/>resolve(旧指纹) == 探测指纹"]
Loading

要点:

  • 相似度阈值 0.7,低于则不建立别名(宁可失配重建,也不错误迁移);
  • 迁移记录带 score 与版本区间,可审计、可回退;
  • 召回时精确匹配优先,失败才走别名反查,并有正向校验闭环防止别名串错。

3. 免疫(MemoryImmuneSystem)

摄取前的四道防线:

防线 检查什么 命中后
悬浮窗检测 当前是否有第三方悬浮窗覆盖(钓鱼/劫持风险) 暂停摄取,避免把被诱导的操作学成"肌肉记忆"
敏感词分级 节点文本是否含密码/验证码/支付金额等 按级别脱敏或拒绝入库
结构完整性 UI 树是否被篡改(如无障碍层被劫持注入) 拒绝入库并告警
包名可信分级 当前前台 App 的包名是否在可信列表 可疑包的指纹进隔离区(Quarantine)

Important

这一层存在的原因很朴素:记忆系统会成为攻击面。 一旦"你在某输入框里填了什么"能被记住并被回放,就需要有东西阻止它被学进去。

4. 存储层面的硬约束

  • 升级必须显式提供 Room Migration(v2→v3 就是这么做的:清理重复边 + 唯一索引 + episode 作用域);
  • 只有降级允许 destructive 重建;
  • 边 ID 是内容哈希(SHA-256(源|目标|关系) 前 16 位),保证同一条边跨帧同 ID —— 见 cs-mem。

5. 出问题怎么查

现象 检查
宏从不被触发回放 是否真的蒸馏成功(TraceDistiller 日志)→ 能量是否被衰减到阈值下 → 是否被 DreamRenderer 剪枝
升级后全部宏失配 TopologyMigrator 是否跑过(梦境条件是否满足)→ migration_map 是否有记录 → 相似度是否普遍 <0.7
记忆库持续膨胀 差分摄取是否生效;EntropyManager 衰减是否在跑;是否有超大 Episode 未被清理
该记的没记住 MemoryImmuneSystem 是否把它判为敏感/可疑(这是正确的安全行为)
界面明显迟滞 MemoryWriterActor 邮箱是否长期积压(有界 256 → 会背压);afterAction 是否过于频繁

6. 相关页面

footer

🏠 返回首页 · 📚 文档索引 · ❓ FAQ · 🔧 故障排查 · 🗺️ 路线图 · 🐛 提 Issue

Android Guru Agent · v1.4.4 · Kotlin 2.0.21 · Compose · PRoot · Room

Clone this wiki locally