记忆系统

前置知识: 阅读本文前建议先了解 核心概念 中的记忆系统部分。

Monstrum 为每个 Bot 提供分区记忆系统,让 Bot 能够在多次对话间保留重要信息。记忆可以手动添加,也可以由 LLM 自动提取。


概述

Bot 记忆解决的问题:LLM 本身没有跨会话的持久记忆。每次新会话开始时,Bot 的上下文是空的。记忆系统让 Bot 能够记住用户偏好、学到的规则、重要事件和知识。

记忆以条目形式存储在数据库中(不是文件)。每条记忆有分类、内容、重要度和作用域。Bot 在会话或任务开始时,平台自动将相关记忆注入到系统提示词中。


记忆条目

每条记忆包含以下信息:

字段说明
分类用户偏好 / 学到的规则 / 重要事件 / 知识库
内容记忆的具体内容
重要度1-10 分,影响记忆的注入优先级
来源手动添加 / 自动提取 / 系统生成
作用域记忆的可见范围(见下文)

记忆分类

分类用途示例
用户偏好用户的习惯和喜好”用户偏好简洁的回复风格”
学到的规则从交互中总结的规则”部署前必须先跑测试”
重要事件发生过的关键事件”2024-01-15 生产环境发生过一次数据库迁移故障”
知识库领域知识”项目使用 PostgreSQL 15,部署在 GCP 上”

记忆作用域

记忆按作用域分区管理,决定记忆在什么场景下对 Bot 可见:

作用域可见范围典型场景
全局Bot 的所有对话和任务通用偏好、项目知识
频道特定 IM 频道的对话某个 Slack 频道的上下文信息
任务特定任务执行期间任务相关的临时信息
资源绑定了特定资源的场景某台服务器的运维知识
调度特定定时任务触发时定时报告的格式偏好
工作流特定工作流执行时工作流步骤的注意事项

全局记忆始终注入。其他作用域的记忆只在对应场景中注入。


手动管理记忆

查看记忆

进入 Bot 详情页 → 记忆 Tab,可以查看 Bot 的所有记忆条目。

支持:

  • 按关键词搜索
  • 按分类筛选
  • 查看记忆的来源(手动 / 自动)

添加记忆

  1. 在记忆 Tab 中点击 添加条目
  2. 选择分类
  3. 填写内容
  4. 设置重要度(1-10)
  5. 保存

手动添加的记忆标记为 source=user,不会被自动提取覆盖。

编辑记忆

点击记忆条目的编辑按钮,修改内容、分类或重要度。

删除记忆

点击记忆条目的删除按钮。删除操作不可恢复。

清空记忆

点击 清空 按钮可以清空 Bot 的所有记忆。此操作不可恢复。


自动记忆提取

当 Bot 的运行时配置中开启了 自动记忆提取(在 Bot 设置 Tab 中),平台会在以下时机自动提取记忆:

  • 任务完成时:分析任务的对话内容,提取重要信息
  • 会话过期时:分析整个会话的对话内容,提取重要信息

提取过程

  1. 平台将对话历史和当前记忆发送给 LLM
  2. LLM 分析对话内容,输出结构化的记忆条目(分类 + 内容 + 重要度)
  3. 平台原子替换该作用域下所有 source=auto 的记忆条目

注意:自动提取只替换 source=auto 的条目。手动添加的记忆(source=user)不会被覆盖。

提取质量

自动提取的质量取决于:

  • LLM 的理解能力
  • 对话内容的信息密度
  • 提取提示词的配置(可在 提示词模板 中自定义)

记忆注入

Bot 在会话或任务开始时,平台自动将相关记忆注入到系统提示词的 ## Bot Memories 部分。

注入顺序

记忆按以下优先级注入:

  1. 重要度高的记忆优先
  2. 同等重要度下,最近更新的记忆优先

Token 预算

如果记忆总量超过 Token 预算,低优先级的记忆会被淘汰。平台使用 recency decay(时间衰减)评分来决定淘汰顺序——越久没更新的记忆,评分越低。

三层缓存

在会话模式下,记忆通过三层缓存管理:

内容加载时机
基础层全局记忆 + 当前作用域记忆会话创建时
资源层绑定的 Resource 相关记忆工具解析完成后
注入层Bot 运行时动态装入的跨作用域记忆Bot 调用记忆装载工具时

Bot 在对话中可以使用记忆装载/卸载工具来动态加载其他作用域的记忆(只读),无需重启会话。


Bot 记忆工具

当自动记忆功能开启时,Bot 在对话中可以使用以下自有能力工具(不需要资源绑定):

工具说明
memory_write写入新记忆或更新现有记忆
memory_delete删除记忆条目
memory_load_context动态加载其他作用域的记忆(只读)
memory_unload_context卸载之前加载的作用域记忆

这些工具不走权限校验(属于 Bot 自有能力工具,数据归 Bot 自己所有)。


常见用法

让 Bot 记住用户偏好

在对话中告诉 Bot 你的偏好(如”以后回复用中文”),Bot 如果开启了自动记忆,会在会话过期时自动提取这个偏好。也可以手动在记忆 Tab 中添加。

为 Bot 预置知识

在部署 Bot 前,手动添加项目相关的知识条目:

  • 项目架构信息
  • 常用命令和操作流程
  • 团队约定和规范

分频道记忆

同一个 Bot 接入多个 IM 频道时,每个频道可以积累独立的记忆。例如,#ops 频道的运维知识不会污染 #dev 频道的开发知识。


常见问题

记忆太多导致提示词过长

记忆系统有 Token 预算限制,会自动淘汰低优先级的记忆。你也可以手动删除不再需要的记忆条目。

自动提取的记忆质量不高

  • 检查记忆提取的提示词配置(在 提示词模板 中自定义)
  • 对于重要信息,建议手动添加而非依赖自动提取

手动添加的记忆被覆盖了

不会。自动提取只替换 source=auto 的条目,手动添加的记忆(source=user)始终保留。