Skip to content

记忆由哪些插件组成 ​

受众:用 Aalis 的人。讲记住对话靠哪几个插件、它们之间怎么依赖,以及缺了一环时界面上怎么显示。写插件要用的接口见 memory 服务。

Aalis 里没有一个叫「记忆」的插件。记住对话是几层插件配合完成的,每层要的东西不一样,只有最底下的消息存储是会话离不开的:

层做什么插件要什么
消息存储按会话存下每条消息,会话、归档与历史都从这里读写SQLite 记忆(默认)、内存记忆(重启就丢)、MongoDB 记忆,装一个即可SQLite 记忆要本地存储(默认就装);MongoDB 记忆要一个在运行的 MongoDB
会话、归档与历史管会话;把收到与发出的消息写进存储;新会话里带上别处最近聊过的会话管理、会话服务、消息归档、跨会话历史消息存储
摘要与画像长对话压成摘要;记下每个人的长期事实与人物之间的关系记忆摘要、用户事实档案、人物关系图消息存储;记忆摘要与用户事实档案还要一个对话模型,人物关系图用对话模型提取,没有也照常启动
语义记忆按意思找回很久以前聊过的内容向量记忆一个 embedding 提供者与一个向量库

npm create aalis 的默认集装前三层,问「要长期语义记忆吗?」时答「要」(探到本机的 Ollama 时默认就是「要」)才装第四层(向量记忆、一个 embedding 提供者与 Flat 向量库),见脚手架上手指南。

服务:插件之间的接口 ​

插件之间靠服务连起来:一个插件声明提供某个服务,别的插件声明需要它。比如 SQLite 记忆提供 memory,会话管理需要 memory。需要的服务(required)此刻没有插件提供时,需要它的插件不启动;可选的(optional)缺了照常启动,只是少了相应的功能。同一个服务可以由不同的插件提供,换一个提供者不用改别的插件,SQLite 记忆换成 MongoDB 记忆就是这样换的。

记忆相关的几个服务:

服务谁提供谁需要
memorySQLite 记忆、内存记忆、MongoDB 记忆会话管理、会话服务、消息归档、跨会话历史、记忆摘要、用户事实档案、人物关系图
llmDeepSeek、OpenAI、Ollama 等模型插件记忆摘要、用户事实档案
embeddingOpenAI Embedding、Ollama Embedding向量记忆
vectorstoreFlat 向量库、LanceDB 向量库向量记忆
session-manager会话管理会话服务
session-protocol会话服务WebUI 的会话列表与会话页

插件详情的「依赖与贡献」一块列出这个插件要的服务各由谁提供。

缺一环时界面怎么显示 ​

某个插件没起来,依赖它的插件跟着停在「缺服务」。WebUI 不只写缺了哪个服务,还沿着提供者往下追到真正出问题的那个插件(根),写出这条链,按钮直接去处理根。几种常见情形:

情形「需要处理」里怎么写
选了 OpenAI Embedding 但没填 keyOpenAI Embedding 一行「待配置:apiKey」,按钮「去配置」;向量记忆一行「缺服务:OpenAI Embedding(待配置:apiKey)」,按钮「去配置 OpenAI Embedding」
卸掉了唯一的 embedding 提供者向量记忆一行「缺服务:没有已装的插件提供 embedding,可以在插件市场按服务搜 embedding」。在插件市场搜 embedding,卡片写着「提供:embedding」的就是
停用了 Flat 向量库向量记忆一行「缺服务:Flat 向量库(已停用)」;在向量记忆详情的「依赖与贡献」里一键「启用 Flat 向量库」
SQLite 记忆打不开数据库SQLite 记忆一行「失败:」加修法与原因;会话管理、会话服务、消息归档等各一行「缺服务:SQLite 记忆(失败:…)」,按钮「去处理 SQLite 记忆」。首页(手机是第一层的会话列表)写「会话服务未启用」与「会话服务 → SQLite 记忆(失败:…)」,按钮同样去 SQLite 记忆
提供者还在启动不进「需要处理」,插件树上写「等待启动」,它启动完自己就好了

终端、/doctor 与启动日志里的写法见第一次运行的「开始使用与需要处理」。

换后端与数据 ​

  • 换消息存储:装上另一个记忆插件,停用或卸掉原来的。消息不会在两个后端之间迁移,换了之后从空开始。
  • 换 embedding 或向量库:向量记忆只认一个 embedding 提供者的向量,换了模型之后旧向量召回不出来;向量库的数据也不通用。换完可以用 /clear all -t vector 清空向量库,由新消息重新积累。
  • Ollama Embedding:默认模型 nomic-embed-text 要先 ollama pull nomic-embed-text;没拉时向量索引每次都失败,/doctor 的 service/embedding.ollama 报不可用。
  • LanceDB:Intel Mac 上装不了,用 Flat,见安装与启动排障。

文档对应 dev@c4e046e41,core 0.21.0,构建于 2026-11-02
基于 MIT 许可发布