Skip to content

Memory Research

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

记忆系统调研与差距分析

💡 记忆 · 🏠 首页 › Memory-Research

Home Version Kotlin Modules Tools License

Memory-Research

📑 本页目录

对标 8 个业界项目(MemGPT/Letta、Mem0、A-MEM、Zep/Graphiti、Voyager、Claude Code、OpenHands、SWE-agent), 逐条映射到 platform/cs-mem 与 core/agent-engine 的真实代码符号。 来源:docs/memory-and-workflow-research.md、docs/cs-mem-gaps-spec.md。

1. 管线与六大子系统(对照基线)

PrivilegeManager.getUiTree()(无障碍三通道 Root→Shizuku→普通)
  → UiTreePruner.prune()(节点指纹 = SHA-256(cls|res|text|role|parent))
  → DifferentialIngestor.computeDelta()(只存状态跃迁,95%+ 压缩)
  → MemoryWriterActor(单协程串行 + 有界 Channel(256) 背压 + 批量 + 紧急刷盘)
  → MemoryGraphDatabase(Room v3:nodes / edges / episodes / fsm_macros / migration_map)

六大子系统:TraceDistiller(Trace → DFA 宏)、BypassExecutionEngine(0 token 回放)、 EntropyManager(衰减 + 坍缩 + 晶化)、DreamRenderer(息屏+充电+WiFi)、 TopologyMigrator(别名桥)、MemoryImmuneSystem(免疫与隔离)。

2. 逐家结论

对象 已对齐(✓) 刻意取舍(✗ 及理由)
MemGPT / Letta 分层记忆 ✓(ConversationMemory 工作记忆 ↔ cs-mem 长期记忆,HybridCompressor = "换页");睡眠整理 ✓(DreamRenderer) 记忆块自编辑 ✗:cs-mem 写入全走确定性管线,不允许 LLM 改写长期记忆 —— 理由:记忆驱动 0-token FSM 回放,错误记忆代价极高
Mem0 增量决策 ✓(DifferentialIngestor 的 ADD / lastSeen 更新 / 移除边即"结构化版"Mem0);异步写入 ✓(MemoryWriterActor 额外解决 Android Room "Database is locked") 冲突消解 ✗:语义冲突靠跨版本迁移而非 LLM 仲裁
A-MEM(arXiv:2502.12110) 链接生成 ✓(空间边 generateSpatialEdges + 因果边 compileFSM);记忆演化 ✓(受限,TopologyMigrator 写 migration_map) 演化的触发面 ✗:只在"梦境"批量做 —— 移动端电量预算的节流取舍
Zep / Graphiti 事务时间 ✓(Episode startedAt/finishedAt、节点 lastSeen、宏 lastExecutedAt) 有效时间 ✗(无 invalid_at,低能记忆物理删除)。这是与 Zep 的最大理念差异:本项目遗忘换体积,Zep 永不遗忘换审计
Voyager 技能库 ✓(FSMMacro = UI 自动化版技能);自动验证 ✓ 三处(蒸馏期 extractAnchors、回放期每步校验 toState、保鲜期梦境抽验);永久技能 ✓(晶化阈值能量≥8、成功≥10 次、成功率≥90%) 嵌入检索 ✗:宏召回仅指纹精确匹配 + 别名桥
Claude Code W1 压缩对齐 ✓(编排器注入同一 ContextCompressor,水位 128k×80%);W5 工具白名单 ✓(AgentConfig.enabledToolIds) —
SWE-agent ACI W2 历史收窄 ✓(BatchExecutionEngine.truncateForHistory → ToolOutputTruncator.smartTruncate:JSON 保头尾 / 列表保首尾 / 代码保头,事件流仍携带完整输出,仅对话历史收窄);护栏 ✓(CommandPolicy / TerminalInputController / TimeoutController / LoopDetector / PromptDetector);观察引擎 ✓ —
OpenHands 事件流 ✓(TerminalEventBus / TerminalEventLog / TaskLifecycleEvent / AgentEvent);沙箱 ✓ 且更进一步(PRoot 用户态 Linux 沙箱);多模型路由 ✓(T72 ModelRoleRouter,图片走 VISION + 能力校验降级) —

3. 两引擎同病(W3 / W4)

# 问题 修复
W3 编排器把 LLM 正文整段缓存误当 ThinkingChunk 改为流式逐段 ResponseChunk;reasoningContent 透传 ThinkingChunk + ThinkingComplete 收尾
W4 OpenAI 并行工具调用流式分片:累加器键 id 优先导致首片键 call_1 与续片键 _idx_0 不一致 → 参数 JSON 被裁断 改为 index 优先(_idx_N,index < 0 回退 id)

4. 记忆侧四项修复(M1–M4)

# 问题 修复
M1 边 ID 用帧内自增 e_0, e_1… —— 帧 N 与 N+1 的 e_3 可能连不同节点 改 `UiTreePruner.stableEdgeId = SHA-256(源指纹
M2 蒸馏参数与回放输入不纯 TraceDistiller.extractActionParams 提纯 + BypassExecutionEngine.extractInputText 三形态兼容
M3 升级后旧宏召回不到 MemoryGraphStore.findMacrosViaMigration + 正向校验 resolveMigration(旧指纹) == 探测指纹(闭环缺口 #9)
M4 晶化未落库 新增 EdgeDao.crystallize / FSMMacroDao.crystallize(is_crystallized = 1,衰减/剪枝/删除三处跳过)

5. 缺口 #9:拓扑迁移的完整规格

取舍:不做完整 VF2 子图同构(计算重、易误匹配),改用轻量属性相似度; 迁移不改写旧指纹本身(指纹是 stable key,改了破坏去重与宏的初始/终止指纹),而是建 migration_map 做"指纹别名解析"。

映射算法打分(同 appPackage + 同 role 的新节点中)

特征 加分
resourceId 归一化(去包名前缀、转小写)相等 +0.5
textHint 包含/被包含 或 Levenshtein 相似度 > 0.8 +0.4
className 末级类名相等 +0.1
总分 ≥ 0.7 视为同胚映射

存储层

MigrationMapEntity(
  id, oldFingerprint(唯一索引), newFingerprint,
  matchScore: Float, fromVersion, toVersion, createdAt: Long
)

接口:recordMigration(map) / resolveMigration(oldFingerprint): String? / getMigrationMaps()。 NodeEntity 增加 app_version 列(版本由 DreamRenderer / CsMemSessionManager 注入,Store 不依赖 PackageManager)。

四条验收标准

  1. Room 升 v2 且旧库数据存活(非 destructive);
  2. 版本变化触发后 getMigrationMaps() 非空且 matchScore ≥ 0.7;
  3. 同版本重复运行幂等(upsert 不产生重复映射);
  4. DreamResult.migrationNotes 含可读摘要(如 "migrated 12 nodes app=com.x v1.2→v1.3")。

6. 差异化结论

结论 内容
已对齐 分层记忆 + 异步写入 + 确定性回放 + 梦境巩固 + 免疫防御 + 沙箱运行时 + 事件流 + 观察引擎
差异化(调研对象无直接对应物) ① 确定性 FSM 旁路 0-token 回放 ② 记忆中毒免疫系统

7. Backlog(按收益排序)

  1. 宏技能语义检索(Voyager 启发,嵌入索引);
  2. 记忆软删除与双时间线(Zep/Graphiti 启发:edges 加 invalid_at,pruneLowEnergy 改软删);
  3. 子代理扇出(Claude Code 启发);
  4. LLM 记忆仲裁(Mem0,受免疫白名单约束);
  5. Letta 式记忆块自编辑(远期;前置 = 免疫系统的 MLKit OCR 视觉比对)。

8. 相关页面

footer

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

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

Clone this wiki locally