Skip to main content
xbot
切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

记忆系统

xbot 支持可插拔的记忆提供者。Agent 使用记忆在对话间持久化信息、回忆过往交互、维护用户专属上下文。内置默认是 xbot;flat、letta 是可选实现,none 则完全关闭记忆(无工具、无提示词)。

提供者对比

FlatLetta(MemGPT 风格)None
核心记忆内存块SQLite(始终在提示词中)无
归档记忆Grep 可搜索的文本块向量搜索(chromem-go)无
回顾记忆事件历史FTS5 全文搜索无
依赖无需要嵌入模型无

配置

MEMORY_PROVIDER=xbot    # xbot(默认)| flat | letta | none

none 是显式模式:Agent 完全拿不到记忆工具和记忆提示词——不回忆、不整理、不注入任何记忆内容。

Letta 模式需配置嵌入模型:

LLM_EMBEDDING_PROVIDER=openai
LLM_EMBEDDING_BASE_URL=https://api.openai.com/v1
LLM_EMBEDDING_API_KEY=sk-xxx
LLM_EMBEDDING_MODEL=text-embedding-3-small

Flat Provider

所有长期记忆存储为单个文本块,每次请求时注入系统提示词。当你通过 /new 归档记忆并重置当前对话时,LLM 会合并和压缩记忆块。

工具: memory_write、memory_list

特性详情
存储文件文本块
持久化与会话状态一起保存/恢复
合并/new 时由 LLM 驱动
搜索基础文本匹配(grep 风格)
Tip
Flat 极其简单——想要人类可读、不依赖 SQLite 的文本块时很合适。内置 xbot 才是默认值。

Letta Provider

受 MemGPT 启发的三层记忆架构。基于 SQLite 构建,支持 chromem-go 向量嵌入和 FTS5 全文搜索。

核心记忆

以下三个记忆块始终存在于系统提示词中:

记忆块用途隔离策略
personaAgent 的身份和性格全局——所有用户共享
human每用户观察和偏好按用户——通过发送者 ID 隔离
working_context当前任务状态和活跃上下文按会话——/new 时重置

工具: core_memory_append、core_memory_replace、rethink

归档记忆

面向详细事实、事件和上下文的长期向量存储。基于 SQLite + chromem-go 嵌入,支持语义搜索。

工具: archival_memory_insert、archival_memory_search

回顾记忆

完整的对话历史,可按日期范围搜索。由 SQLite FTS5(全文搜索)提供支持,关键词匹配速度极快。

工具: recall_memory_search

None(无记忆)

设置 memory_provider: "none" 后,Agent 完全不具备记忆能力:

  • 不注册任何记忆工具(memory_*、core_memory_*、archival_memory_*、recall_memory_search),模型根本看不到它们。
  • 系统提示词中不注入任何记忆章节。
  • 不注入回忆内容、不做自动记忆整理、不触发压缩记忆钩子;SubAgent 同样没有记忆。
Note
none 是显式模式,不是兜底。未知/未注册的 provider 名仍会拿到通用的 flat 提示词引导;只有 none 会关闭记忆。

记忆合并

当使用 /new 重置当前对话时:

Provider行为
FlatLLM 合并和压缩记忆块——旧记忆被总结,冗余内容被移除
Letta核心记忆跨会话保留;归档记忆保留;working_context 被清除

核心记忆隔离

在多租户部署中(Server 模式,多个渠道如飞书 + Web):

  • persona 是全局的——Agent 的核心身份在所有用户之间共享
  • human 是按用户的——Agent 了解到的关于 Alice 的信息对 Bob 不可见
  • working_context 是按会话的——每个对话维护自己的任务上下文
Important
通过 core_memory_append/core_memory_replace 设置的核心记忆块在会话之间是持久化的。使用 rethink 触发 Agent 重新审视和演进其记忆,类似于 MemGPT 的自我编辑机制。

详见核心记忆隔离设计。

参见