犀牛鸟 2026 研究笔记 estelledc.github.io

框架内建记忆横评

tRPC-Agent-Go 精读:精读: tRPC-Agent-Go Letta 精读:精读: Letta/MemGPT 记忆设计模式:记忆设计模式目录

调研元信息

项目
调研日期 2026-06-22
涉及研究轴 E(框架内建)
证据等级 [已有] [文档] 混合

一句话定位

Agent 框架处理记忆有三条产品线——独立记忆库(mem0、DB-Agent-Memory)、框架内建记忆(tRPC-Agent-Go、Letta、LangGraph)、产品内建记忆(Claude Code、Codex)——三者的架构权衡和适用场景截然不同 [已有]

记忆类型标注

类型 涉及 说明
Working 框架管理 session 上下文
Profile 间接 框架配置
User Fact/Episode Memory
External 间接 通过 MCP/插件对接

三条产品线对比

flowchart TB
    subgraph lib["独立记忆库"]
        M0["mem0<br/>SDK,接入任何框架"]
        DBAM["DB-Agent-Memory<br/>Host-Adapter 解耦"]
        GR["Graphiti<br/>时序图谱"]
    end

    subgraph framework["框架内建记忆"]
        TRPC["tRPC-Agent-Go<br/>Fact+Episode"]
        LETTA["Letta<br/>Core+Archival OS"]
        LG["LangGraph<br/>Store API"]
    end

    subgraph product["产品内建记忆"]
        CC["Claude Code<br/>memdir"]
        CX["Codex<br/>Phase1/2 pipeline"]
        OC["OpenClaw<br/>flush+dreaming"]
    end

    lib -->|"可嵌入框架"| framework
    lib -->|"可嵌入产品"| product
    framework -->|"框架耦合"| APP[应用]
    product -->|"产品锁定"| APP

tRPC-Agent-Go:Fact + Episode 双层

详见 精读: tRPC-Agent-Go

tRPC-Agent-Go 在 memory/ 目录下实现了经典的双层记忆 [已有]

Episode Memoryepisode.go):保留原始对话历史——谁说了什么、什么时候说的。是 Agent 的”自传体记忆”,无加工、无提炼,用于回溯和调试。

Fact Memoryfact.go):从对话中提炼的跨会话可复用知识——”用户偏好 Go 而非 Python”“这个服务的超时阈值是 3s”。是 Agent 的”语义记忆”,经过 LLM 加工。

与 DB-Agent-Memory 的对比:tRPC-Agent-Go 的 Fact/Episode 二分法可以映射到 DB-Agent-Memory 的金字塔——Episode ≈ L0(原始对话),Fact ≈ L1(原子事实)。但 DB-Agent-Memory 在 L1 之上还有 L2(场景块)和 L3(用户画像),提供了更高层次的抽象。

当前局限:StateGraph 缺少 Checkpoint 持久化的多后端支持——Memory 无法跨实例持久化,是明确的贡献机会 [已有]


Letta/MemGPT:Agent 即记忆 OS

详见 精读: Letta/MemGPT

Letta 是所有方案中记忆系统最”重”的——它不是在框架上加记忆,而是围绕记忆设计整个框架 [已有]

Core Memory(RAM):有字符限制的 Block,直接存在 system prompt 中,Agent 通过 core_memory_append / core_memory_replace 工具主动管理。

Archival Memory(硬盘):无限容量的归档,存在 PostgreSQL 中,Agent 通过 archival_memory_search / archival_memory_insert 工具主动查询。

Recall Memory:被动回忆——自动检索历史对话中的相关片段,补充 Archival 的主动搜索。

核心争议:Agent 自管理 vs 系统自动管理。Letta 让 Agent 自己决定”什么时候存”“存什么”“存到哪”——这需要强大的元认知能力。弱模型可能忘记保存重要信息,或者保存大量无用信息。DB-Agent-Memory 和 Claude Code 选择了系统自动管理,降低了对模型能力的依赖 [已有]


LangGraph Store:外挂式持久记忆

LangGraph 通过 langgraph.store 提供了一个键值+向量的持久化 Store [文档]

核心 APIput(namespace, key, value) / search(namespace, query) / get(namespace, key)

设计特点

与其他方案的关系:LangGraph Store 是一个通用的持久化层,不强制任何记忆组织范式——你可以用它实现扁平事实(类似 mem0)、也可以实现分层(类似 DB-Agent-Memory),取决于应用层代码如何使用 namespace 和 value 结构。


框架内建 vs 独立记忆库 vs 产品内建

维度 框架内建 独立记忆库 产品内建
耦合度 中(与特定框架绑定) 低(SDK 可接入任何框架) 高(与特定产品绑定)
定制灵活度 高(可改框架代码) 高(可换后端/算法) 低(用户无法修改)
开箱即用 中(框架内自动集成) 低(需自行集成) 高(零配置)
记忆能力深度 中(框架聚焦编排不聚焦记忆) 高(专注做记忆) 中-高(产品级优化)
可移植性 低(换框架=换记忆) 高(框架无关) 极低(锁定在产品中)
代表 tRPC-Agent-Go、Letta、LangGraph mem0、DB-Agent-Memory、Graphiti Claude Code、Codex、OpenClaw

关键论点:三条产品线不是互斥的——独立记忆库可以通过 Adapter 嵌入框架(DB-Agent-Memory 的 Host-Adapter),也可以通过 MCP 被产品调用。理想的架构是”记忆库 + 框架适配 + 产品集成”的三层解耦。


局限性

  1. LangGraph Store 分析基于文档:未深入源码验证 [文档]
  2. tRPC-Agent-Go 记忆分析基于已有精读:可能有遗漏 [已有]
  3. 框架迭代很快:LangGraph、Letta 等可能已更新记忆设计。

证据等级汇总

论点 证据等级
tRPC-Agent-Go Fact/Episode 架构 [已有] deep-dive-trpc-agent-go.md
Letta Core/Archival/Recall 模型 [已有] deep-dive-letta.md
LangGraph Store API [文档] LangGraph 官方文档
三条产品线对比 [推导] 基于全部精读