背景
通过对 claude-subconscious 的深度拆解分析,发现 pi-zero 记忆系统在工程性(本地可审查、分层过滤、使用驱动验证)上全面胜出,但在记忆主动性和双向交互方面存在可改进空间。
本 issue 汇总了 4 个相关但独立的改进点,可按优先级分阶段实施。
架构分析摘要
| 维度 |
claude-subconscious (Letta) |
pi-zero (role-persona) |
| 存储后端 |
Letta 云端 API + SQLite |
本地 Markdown 文件 + LanceDB |
| 记忆层数 |
8 flat blocks (单层, 硬限 30000 chars) |
Daily -> Pending -> Consolidated -> Knowledge (四层) |
| 验证机制 |
Agent 主观判断 |
Pending 层使用驱动验证 (score >= 0.5 -> promote) |
| 检索能力 |
fetchAgent() 网络请求 (10s timeout) |
关键词 + 标签 + 向量 hybrid RRF 融合 (本地零延迟) |
| 可审查性 |
需通过 Letta API |
git diff 可直接审查,本地回滚 |
| 主动探索 |
Sub Agent 可 Read/Grep/Glob 读代码 |
无独立 Agent,被动记录 |
| 双向对话 |
Claude <-> Sub Agent 双向交流 |
单向:只能写入和读取 |
改进 1:引入 Observer Agent(观察者模式)【高优先级】
问题
当前记忆引擎是被动记录——只能提取对话中的显式信息。如果用户说"我刚改了 auth.ts 的 token 逻辑",记忆系统只记下了这句话,但不理解 auth.ts 实际长什么样、为什么改、上下文是什么。
方案
引入一个轻量 Observer Agent,类似 claude-subconscious 的 Subconscious Agent 设计,但定位为只读助手:
- 用户会话 -> transcript 发送到 Observer Agent
- Observer Agent 有 Read/Grep/Glob 只读权限
- 自动读取相关代码文件理解上下文
- 生成"上下文感知"的高质量记忆条目
- 通过 knowledge tool 写入 pi-zero 知识库
技术实现
- 使用
@letta-ai/letta-code-sdk 或类似 SDK 启动独立进程
- 仅开放 Read/Grep/Glob/web_search 工具(read-only 模式)
- 处理 transcript 后,通过 extension tool 写入 memory/knowledge
- 异步运行,不阻塞主 Agent 会话
预期收益
- 记忆从"被动录音"升级为"主动理解"
- 记忆质量提升:有代码上下文的记忆远比孤立的句子有价值
- 可发现用户未明确表达的模式和架构决策
改进 2:Pending 精确 Promote 机制【中优先级】
当前问题
Session 启动时随机 promote 1-2 条 pending 记忆(Math.ceil(Math.random() * 2)),这不是真正的"使用驱动验证",而是 warm-cache 策略。
方案设计
引入三维评分模型替代随机 promote:
promote_score = 检索频率 x 0.4 + 语义相关性 x 0.35 + (1 - 年龄衰减) x 0.25
定期 consolidate 时批量决策:
score >= 0.6 -> promote -> consolidated
score < 0.3 -> discard
0.3 <= score < 0.6 -> 给 LLM 判断
实施步骤
- 在 pending record 中增加
accessCount 字段
- 修改
searchRoleMemory 中的 autoPromotePending 逻辑
- 在
consolidateRoleMemory 中增加 pending 批量处理
- 移除 session start 的随机 promote
改进 3:[0x] 区定期清理【低优先级但高 ROI】
现状
consolidated.md 的 # Learnings (New) 区堆积了 120+ 条 [0x] 从未被使用的记忆。这些条目写入后从未被检索到,占用认知空间但无价值。
清理规则
在 consolidate 时增加自动清理逻辑:
- 年龄 > 30 天 -> 自动移入 events 归档
- 年龄 7-30 天 -> LLM 判断是否值得保留
- 年龄 < 7 天 -> 保留,等待验证
实施
修改 consolidateRoleMemory() 函数,增加 zero-used 清理逻辑,保持向后兼容。
改进 4:双向对话记忆机制【创新特性】
概念
允许 Agent 对记忆进行反馈和修正,实现"与记忆对话":
memory({
action: "converse",
target: "learning-id-or-query",
converseAction: "confirm" | "reject" | "discuss" | "amend",
content: "这条记忆不够准确,实际情况是..."
})
操作类型
- confirm — 确认某条 pending/consolidated 记忆准确 -> reinforce + 标记 verified
- reject — 标记记忆不准确 -> 移入 daily log 并注明原因
- discuss — 对记忆发表看法 -> 写入 daily 作为讨论记录
- amend — 修正记忆内容 -> 调用 update 逻辑并记录变更
收益
- 记忆准确性提升:Agent 可以自我纠正
- 可追溯性:所有修改变动都有记录
- 与 claude-subconscious 的双向对话能力对齐
实施优先级建议
| 改进 |
优先级 |
复杂度 |
预期收益 |
实施难度 |
| [0x] 区清理 |
P0 |
低 |
立即减少 120+ 噪声条目 |
1 |
| Observer Agent |
P1 |
高 |
记忆质量质的飞跃 |
4 |
| Pending 精确 promote |
P2 |
中 |
验证机制真正闭环 |
2 |
| 双向对话记忆 |
P3 |
高 |
自我纠正能力 |
3 |
相关文件
extensions/role-persona/memory-md.ts — 核心记忆存储引擎
extensions/role-persona/memory-llm.ts — LLM 提取与整理
extensions/role-persona/memory-vector.ts — LanceDB 向量搜索
extensions/role-persona/memory-tags.ts — 标签系统与遗忘曲线
extensions/role-persona/index.ts — 主扩展编排层
extensions/role-persona/memory-extraction-rules.ts — 可推导信息过滤
skills/memory-knowledge-distiller/SKILL.md — 记忆到知识蒸馏
备注
- 本 issue 基于对 claude-subconscious (Letta) 的深度拆解分析
- 所有改进保持向后兼容
- Observer Agent 实现可参考
@letta-ai/letta-code-sdk 的 resumeSession 模式
- 建议分项实施,按优先级逐步推进
背景
通过对 claude-subconscious 的深度拆解分析,发现 pi-zero 记忆系统在工程性(本地可审查、分层过滤、使用驱动验证)上全面胜出,但在记忆主动性和双向交互方面存在可改进空间。
本 issue 汇总了 4 个相关但独立的改进点,可按优先级分阶段实施。
架构分析摘要
改进 1:引入 Observer Agent(观察者模式)【高优先级】
问题
当前记忆引擎是被动记录——只能提取对话中的显式信息。如果用户说"我刚改了 auth.ts 的 token 逻辑",记忆系统只记下了这句话,但不理解 auth.ts 实际长什么样、为什么改、上下文是什么。
方案
引入一个轻量 Observer Agent,类似 claude-subconscious 的 Subconscious Agent 设计,但定位为只读助手:
技术实现
@letta-ai/letta-code-sdk或类似 SDK 启动独立进程预期收益
改进 2:Pending 精确 Promote 机制【中优先级】
当前问题
Session 启动时随机 promote 1-2 条 pending 记忆(
Math.ceil(Math.random() * 2)),这不是真正的"使用驱动验证",而是 warm-cache 策略。方案设计
引入三维评分模型替代随机 promote:
实施步骤
accessCount字段searchRoleMemory中的autoPromotePending逻辑consolidateRoleMemory中增加 pending 批量处理改进 3:[0x] 区定期清理【低优先级但高 ROI】
现状
consolidated.md 的
# Learnings (New)区堆积了 120+ 条[0x]从未被使用的记忆。这些条目写入后从未被检索到,占用认知空间但无价值。清理规则
在 consolidate 时增加自动清理逻辑:
实施
修改
consolidateRoleMemory()函数,增加 zero-used 清理逻辑,保持向后兼容。改进 4:双向对话记忆机制【创新特性】
概念
允许 Agent 对记忆进行反馈和修正,实现"与记忆对话":
操作类型
收益
实施优先级建议
相关文件
extensions/role-persona/memory-md.ts— 核心记忆存储引擎extensions/role-persona/memory-llm.ts— LLM 提取与整理extensions/role-persona/memory-vector.ts— LanceDB 向量搜索extensions/role-persona/memory-tags.ts— 标签系统与遗忘曲线extensions/role-persona/index.ts— 主扩展编排层extensions/role-persona/memory-extraction-rules.ts— 可推导信息过滤skills/memory-knowledge-distiller/SKILL.md— 记忆到知识蒸馏备注
@letta-ai/letta-code-sdk的 resumeSession 模式