本节摘要:记忆进化不是只有 Letta 一条路。本节把三个常被拿来比较的候选——闭源托管的 Assistants API、编排优先的 LangChain 系框架、专注记忆层的 Mem0 类方案——与 Letta 放在同一张桌上,从状态归属、记忆能力、自托管自由度、工程复杂度四个维度逐项对照,最后给出可操作的选型决策路径。读完本节,你能为自己的项目写出一段有理有据的选型说明。
先把对手看清楚。托管型助手服务以 Assistants API 为代表:平台替你管会话线程、内置检索与代码解释器,接入成本极低;代价是状态锁在平台侧,记忆的内部构成对你不可见,可观测性止步于接口返回。编排型框架以 LangChain 与 LangGraph 为代表:强项是把模型调用、工具、检索串成可控的工作流,图结构里也能挂载检查点实现状态留存;但记忆不是它的原生抽象——持久化靠开发者自己选存储、自己设计读写策略,"记忆进化"要你亲手造。独立记忆层以 Mem0 为代表:把记忆抽取、更新、检索做成独立组件,插到任意应用或框架下使用;它是给已有系统补记忆的好选择,但智能体的运行时、工具执行、可视化观测仍需另配。
Letta 在这张图谱里的位置是:以持久化记忆为核心的完整智能体服务端。记忆不是插件而是地基,运行时、工具执行、REST API、可视化观测配套齐全,且全程可自托管。
| 维度 | 托管助手服务 | 编排型框架 | 独立记忆层 | Letta |
|---|---|---|---|---|
| 状态归属 | 平台侧,不可导出全貌 | 应用侧,自行设计 | 记忆在组件,运行时在外部 | 数据库中的完整智能体状态 |
| 记忆能力 | 内置线程与检索,黑盒 | 无原生记忆,自行拼装 | 抽取与检索强,需自行集成 | 分层记忆加自我编辑,白盒 |
| 自托管 | 不可 | 可以 | 组件本身可以 | 服务端完整可自托管 |
| 起步成本 | 最低 | 中等 | 集成成本中等 | 需跑服务与数据库 |
单看表格容易各打五十大板,落到真实项目里,差异会顺着三个追问显形。第一问:记忆要不要可解释? 若产品需要向用户或审计方展示"智能体为什么记得这件事",黑盒托管出局,剩下 Letta 与自建方案。第二问:核心难点是流程还是成长? 若是把固定业务流程自动化,编排框架顺手得多;若系统的价值随交互加深而增长,记忆优先的架构才对路。第三问:团队有没有运维余力? Letta 的自托管自由度是用跑服务换的,没有基础设施余力的小团队,用托管记忆层补足现有应用,可能比整建制迁到 Letta 更务实。

选型不只是勾选项,还能落到开发体验的差异上。假设需求是"助手记住用户上次会议提到的项目代号,并在下次会话使用"。在编排框架里,你要自己写三段逻辑:从对话中抽取事实、把事实写入选定存储、组装提示词时检索注入——三段都是你的代码,三段的边界情况都是你的 bug。在 Letta 里,同样需求的实现收缩为配置与对话:
# 记忆的抽取与写入交给模型自主决策,开发者只负责框架性配置 agent = client.agents.create( name="meeting_buddy", memory_blocks=[ {"label": "persona", "value": "你是项目助理,主动记录项目代号与关键决定。"}, {"label": "human", "value": "用户每周主持项目例会。"}, ], model="openai/gpt-4o-mini", embedding="openai/text-embedding-3-small", ) # 之后照常发消息:模型在会话中自行决定往 human 块写"项目代号:灯塔" resp = client.agents.messages.create( agent_id=agent.id, messages=[{"role": "user", "content": "例会纪要:灯塔项目进入灰度阶段。"}], )
这段代码里没有一行记忆存取逻辑,但记忆确实在增长——检查 human 块的内容就能验证。这种"框架承担记忆机制、开发者承担记忆策略"的分工,是选 Letta 最实质的收益;反过来,如果你想把记忆的每个读写时机都攥在自己手里做精细化控制,编排框架加自建存储反而给了你更大的权力。
两条路线没有高下,只有匹配:权力与责任总是成对出现的。 自建存储把每个读写时机的权力给你,也把每个边界情况的责任给你;Letta 收走细粒度的控制权,也接住记忆一致性、持久化、并发安全这些脏活。选型时诚实地问自己:我想要的是权力,还是省心?答案不同的两个团队,就算做同一个产品,正确的选型也会不同。
最后提醒一句:四个候选并非互斥。常见的生产组合是"编排框架管流程,Letta 管记忆"——用编排层调度审批、通知等确定性步骤,把需要长期积累的用户画像与会话状态交给 Letta 智能体托管,两边通过 REST API 通信。也有团队先引入独立记忆层试水,验证记忆价值后再整建制迁入 Letta,复用已积累的记忆数据。选型不是站队,而是弄清楚每一块能力由谁持有——本章到此给出的所有判断工具,都是为了让你在真实约束下做出这个分配。
选型讨论里反复出现三种误判,值得预先拆掉。误判一:拿编排框架的记忆插件对比 Letta。 编排框架的"记忆"组件多是把消息列表存进存储的便利封装,与"模型自主编辑的分层记忆"不是同一层抽象——前者帮你存,后者让智能体自己管。对比时先对齐抽象层级,否则比的是苹果与橘子。误判二:用"起步难度"否定长期价值。 Letta 的起步确实比托管服务重(要跑服务与数据库),但这个成本是一次性的,而记忆带来的个性化收益是随时间累积的。用第一天的成本否定第一百天的价值,是短视的算法。误判三:把独立记忆层与 Letta 当成竞品。 对已有重度投入的应用,先插一层记忆验证价值、再决定是否整建制迁移,本来就是更稳妥的路径——它们更像同一趟旅程的先后两站。
再补一张速查表,把典型处境与建议动作直接对上:
| 你的处境 | 建议起点 | 理由 |
|---|---|---|
| 周末做个原型验证想法 | 托管助手服务或编排框架 | 起步速度压倒一切 |
| 产品要长期陪伴用户、积累画像 | Letta 整建制 | 记忆是核心资产,值得从头建对 |
| 已有系统只想补长期记忆 | 先试独立记忆层 | 增量改造,不动现有架构 |
| 流程确定、步骤固定 | 编排型框架 | 流程控制是它的主场 |
| 强合规、数据不能出内网 | Letta 自托管 | 白盒加自托管是硬要求 |
至此第一章收束:你已经认识实验对象,知道它从哪来、值什么价、边界在哪。第 2 章把机器拆开,看记忆进化的齿轮如何咬合。