Skip to content

Memory(记忆)

侧栏 → Memory Profiles(位于 Tasks 分组),再在 Agent 编辑页 → Memory 中按 Agent 开启。

Memory 是 Agent 的自动长期记忆。每轮对话结束后,后台 Selector 会先浏览完整记忆目录并筛出相关条目,再由 MemoryLLM 阅读候选正文并执行最终修改。在后续对话中,Agent 通过 search_memoryread_memory 工具把它们读回来。

可以把它理解为:Agent 从每次对话中自我学习,无需你显式教学,也不会撑爆系统提示词。

工作原理

  1. 筛选 —— 对话结束后,selector 模型 用本轮对话匹配全部全局记忆和当前工作区记忆的自包含标题。标题在预算内时一次完成;目录过大时只将对话压缩一次,再用简短事实分批匹配标题。Selector 不读取正文;未配置时复用 writer 模型。
  2. 提取 —— writer 模型 阅读候选条目的完整正文和本轮对话,再决定新建、更新、删除或不修改。
  3. 读取 —— 后续对话中 Agent 调用:
    • search_memory —— 在已存记忆中做 BM25 关键词查找
    • read_memory —— 按 slug 读取某条记忆的完整内容
  4. 维护 —— 后台任务保持记忆库健康:
    • Consolidate(合并) —— 合并、去重相关记忆
    • Reconcile(校正) —— 重建索引、清理陈旧条目
  5. 删除 —— 被删除的记忆移到 .archive/,可恢复。

全局与工作区记忆

一个 Memory Profile 同时包含两层记忆:

  • 全局 —— 跨项目生效的用户偏好、机器环境和通用工作方式。
  • 工作区 —— 按当前 workPath 隔离的项目路径、约定、模块关系、构建步骤和架构决策。

频道仍然只需选择一个 Memory Profile。每轮对话会同时读取全局记忆和当前工作区记忆;不同 workPath 使用独立的数据库和检索索引,不会互相搜索或写入。未配置 workPath 的会话(包括普通 Web 对话)统一使用 ~/.sbot/workspace 作为默认记忆工作区,不会把所有内容都写进全局记忆。Memory Profiles 的查看窗口可以在全局和已创建的工作区之间切换。

配置项

Memory Profile 定义记忆如何被提取与读取。侧栏 → Memory Profiles → 新建:

字段说明
名称该 Profile 的显示名称
启用暂停该 Profile,而不删除配置
Writer 模型阅读候选完整正文并执行最终修改的权威 MemoryLLM
Selector 模型可选的低成本目录筛选模型;不设置时复用 Writer 模型
Writer 提示词控制 提取什么
Read 提示词召回的记忆如何回填进提示词

随后在 Agent → Memory 区块开启 Memory 并选择 Profile。在 Memory Profiles 页面可以 查看记忆、检查 pending / failed 后台任务、重试或删除任意失败任务,也可以用 整理记忆 排队合并/压缩现有记忆,用 同步文件索引 重新扫描文件与索引。

Memory vs Notes vs Wiki

写入方写入时机
Memory后台 MemoryLLM对话空闲后自动写入
Notes人 / 运维者手动写入,随后自动注入或通过 note_search 召回
Wiki人 / Wiki 数据源插件编纂后的页面供 Agent 搜索 / 读取

三者中 Memory 最"省心、自动"。

基于 MIT 许可证发布。