记忆与学习
LenBot 的原生长期记忆以本地 Markdown 文件按群分开保存;群内学习则从日常对话中积累说法、黑话、表情和回复效果。两者都在群聊空闲时通过后台整理回合自动更新。
长期记忆
目录与隔离范围
记忆默认存放在实例目录的 state/memory/ 下,每个群拥有独立子目录,群友个人档案位于 people/<完整账号>/,跨群共享的只读记忆位于公共范围(public)。
同一群内切换角色时,群友画像、群内事件和本群画像由所有角色共享;Bot 自身的发言与承诺记录按角色 ID 分目录隔离,详见给群换角色。
自动召回与主动查询
每轮对话开始前,宿主先读取最近几位发言人的个人画像(优先保留相处偏好与近期情况),再用本轮最近对话以及会话回想中尚未完结的承诺或待答问题检索相关记忆,作为本轮背景材料。回合进行中,聊天模型也可主动调用 memory 工具搜索、浏览、读取或写入记忆。
- 默认启用全文检索,无需外部向量服务。
- 配置记忆和资料向量后启用向量与全文混合检索,见模型与用量。
- 向量模型配置与现有索引不一致,或单次向量请求出错时,当次自动降级为全文检索并将错误写入系统日志。
在面板中浏览与删除
在群聊 → 记忆中可切换浏览、搜索、后台整理、索引与设置五个视图。

删除一份记忆文件时提供两种方式:
- 仅删除文件:移除当前记忆文件,保留历史修改记录。
- 彻底忘记:同时清除记忆正文、索引、全部历史版本和目录摘要,并可勾选关联的原始聊天消息(单次最多 500 条),后续后台整理会永久跳过这些消息,防止再次写出同一内容。
换用插件接管记忆或回想
实现了记忆入口的插件可按群替代原生长期记忆。在群聊 → 设置 → 本群启用的插件中先勾选启用该插件,再将长期记忆切换为该插件;实现了压缩入口的插件也可在压缩回想中单独选用。当目标插件已在该群加载运行时,保存设置后在当前回合结束时生效。
- 插件全面接管该群的每轮自动召回、
memory工具和后台整理,数据存放在插件自身的数据目录中。 - 原生记忆文件原样保留在磁盘上,插件可通过只读接口读取它们用于迁移导入。
- 切回原生记忆后,原生后台整理从切回时刻的新消息起算,插件接管期间产生的历史消息不补做抽取。
- 卸载记忆或回想插件时,使用它的群自动切回原生实现。
- 对话试聊固定使用空白原生记忆副本,不挂载记忆插件。
- 回想插件执行压缩超时或报错时,宿主保留原有回想与会话历史并在回合记录中标出错误,修复后可再次触发压缩。
仓库内的 examples/plugins/notebook 提供了完整的示例记忆插件。
群内学习
在群聊 → 学习开启学习后,宿主支持四类积累:
| 类型 | 学习内容与作用 | 默认开关 |
|---|---|---|
| 说法 | 提炼群友在特定情境下的自然表达。未开启自动采用时先进入待审核,采用后按情境供 Bot 参考,也可一键添加到角色样例 | 开启 |
| 黑话 | 识别群内专有词汇与缩写并推断词义,支持固定词义、恢复自动推断或禁用 | 关闭 |
| 表情 | 识别群友常发表情包的画面、文字与情绪,审核采用后供 Bot 在本群使用,详见收集群内表情 | 关闭 |
| 回复效果 | 观察 Bot 发言后的群友反应(认同、继续讨论、纠正、反感、未回应),用于动态调节主动插话间隔(见唤醒方式)并降权不受欢迎的说法 | 关闭 |
30 天内使用后被群友纠正或引起反感达两次以上的说法会在卡片上标出次数,便于运营者审核禁用。
推断黑话时,模型会对比本群实际语境与日常通用词义:与通用含义一致的普通词汇自动归入已禁用,具有群内特定指代的词条留待确认;已由人工固定词义的词条在聊天中始终采用人工词义,同时在学习页展示最新积累后的自动推断供对照。
后台整理回合与目录摘要
开启后台自动整理(位于群聊 → 记忆 → 设置)或任一学习子项后,宿主在群聊空闲时调度整理回合:
- 整理回合由聊天模型沿用当前群聊会话前缀执行,可命中服务商的提示词缓存;一次运行同时完成记忆更新与学习抽取,token 用量在模型 → 用量与上限中单列为整理记忆和学习。
- 当群内静默达到群内安静多久后整理且未整理消息数达到最少消息数,或距上次整理超过最长等待时间时自动触发;会话压缩前也会先行触发一次整理。
- 整理记忆要求当前角色的工具许可包含
memory。
原生记忆将群友个人档案按固定分节维护:身份与称呼、关系、稳定事实、相处偏好与雷点、近期情况、不确定信息,每条附带日期与来源消息定位;玩笑与自嘲会保留原始语境,过期的近期状态在后续整理中自动合并或清理。
单次整理失败时不推进处理游标,60 秒后自动重试,连续失败 3 次后暂停该群后台整理并在总览提示,排查后可在群聊 → 记忆 → 后台整理中点击重新整理此批。
开启为每个目录生成摘要,根目录摘要作为本群画像后,宿主使用记忆摘要用途的模型(未单独配置时复用聊天模型)为各目录维护摘要,并将根目录摘要作为本群画像注入系统提示词。
重建索引
手动编辑过磁盘上的记忆 Markdown 文件,或更换了向量模型的接口地址、模型名或向量维数后(仅重命名服务商无需重建),需重建向量索引:
- 在线重建:更换了向量模型配置时先按顶栏提示重启宿主,随后在群聊 → 记忆 → 索引中点击重建索引。重建期间聊天检索照常运行,全部新向量生成完毕后原子替换旧索引。
- 离线命令:停止 LenBot 后在实例目录执行
uv run --no-sync python -m len_bot.next.maintenance.memory_reindex。
重建记忆索引会保留全部正文与修改历史,并清空旧目录摘要以便后续按新内容重新生成。
学习到的说法使用独立的学习向量配置;更换学习向量后,在对应群的群聊 → 学习页点击重建索引,或停机执行 uv run --no-sync python -m len_bot.next.maintenance.reindex_expressions。