AI 记忆让 YAWBDB 为服务器保存有用的上下文,使 AI 的回复随着时间推移越来越一致。
有两方会往里写入:你(在面板里),以及机器人(它会记下在 Discord 对话中了解到的内容)。记忆系统在面板里管理,里面的任何内容都不会被自动删除。

🧠 记忆的用途
记忆可以帮助 AI 记住这类信息:
- 服务器设定
- 社区的事实
- 偏好的语气
- 经常出现的梗
- 用户或身份组的上下文
- 服务器专属的术语
- 重要的规则或提醒
目的是让 AI 的回复更了解这个服务器。
📒 记忆页面
记忆页面让有权限的用户可以完整查看已存储的记忆条目。
在这个页面上,你可以:
- 按服务器查看记忆
- 按键名或内容搜索
- 手动添加新记忆
- 编辑现有记忆
- 删除过时的记忆
- 查看置信度
🔎 筛选与分页
记忆可以按服务器筛选,并且支持即时搜索。
记忆很多时会分页显示,让页面保持好用。
✍️ 手动添加记忆
当你想让 AI 知道某件具体的事时,可以手动添加记忆条目。
示例:
server_theme:这个服务器是关于复古游戏的。bot_tone:回复要友好、简洁。important_rule:不要在公共频道提供支持,引导用户去开工单。
条目要简短、清晰。除非必要,不要塞进大段文字。
✏️ 编辑记忆
你可以编辑:
- 键名
- 内容
- 置信度
当一条记忆仍然有用但需要修正时,就编辑它。
当它已经过时或不再相关时,就删除它。
♻️ 不会有东西在你背后被遗忘
条目绝不会被自动删除。没有过期时间,也没有清理任务:一条事实会一直保留,直到机器人自己判断它不再成立,或者有人在这个页面上把它删掉。
你能控制的是有多少内容会送到 AI 面前。AI 回复设置页面上的 每次注入的记忆事实数量上限 决定了作为上下文发送的事实数量:范围是 1 到 1000,默认 20。调高它,AI 能参考的内容更多;调低它,回答会更精炼。无论怎么调,都不会删除任何东西,所以你可以随意上下调整。
时间久并不是遗忘的理由。这个服务器说法语 两年后依然成立,而且不会有人再重新说一遍。
机器人如何判断
发送给模型的每条事实都带有自己的编号,在它收到的上下文里显示为 [#12]。当机器人断定某件事不再成立时(比如规则变了,或者某个偏好被推翻了),它会用这个编号作答,这条记忆就不再被使用。至于它是被删除,还是保留供查阅,取决于下面所说的记忆类型。
它只能移除在这次对话中实际展示给它的事实。如果它说出一个没有出现在它面前的编号,什么都不会发生:猜出来的编号碰不到另一场对话里的事实,哪怕那个编号真实存在、而且属于同一个服务器。
这就是为什么 每次注入的记忆事实数量上限 有双重意义。一条从未送到模型面前的事实,模型永远无法重新审视它,它会一直留着,直到有人在这个页面上删掉。在可搜索归档下,这就不再是死胡同:机器人查到的事实,也是它可以纠正的事实。
🧭 选择记忆类型
记忆类型 是每个服务器选一个,在这个记忆页面上选择,而不是在 AI 回复设置页面上。它决定机器人如何存储它所知道的内容,以及如何把这些内容找回来,并且在你点击的那一刻就会保存。它不是下拉菜单:点击后,六种类型会并排展开在页面上,每一种都写明它做什么、会改变什么、切换过去会移动什么,以及去哪里了解更多。
页面顶部把六种类型画成一条刻度,并标出你的服务器当前所处的位置,你甚至不用先打开选择器就能看到。
AI 回复设置页面仍然保存着与当前所选类型配套的设置:排序权重(新鲜度、重要性、相关性)、注入的事实数量,以及后台整合任务和语义嵌入所用的模型。这个页面会明确告诉你这些设置各自在哪里,不用你自己去找。
Classic 是目前运行的类型,也是默认值。从未打开过这个选项的服务器,行为与以往完全一样:一个平铺的事实列表,最近更新的事实会被注入每次回答,不会有任何东西被自动删除。
其余五种,每一种都在前一种的基础上增加一项能力,它们正在按顺序逐步构建:
- 日志:现已可用。不再成立的事实会被停用而不是被抹掉,所以你仍然可以读到它原来写的是什么。见下一节。
- 可搜索归档:现已可用。机器人可以主动查找,而不是只用递给它的事实,所以超出注入上限的内容不再是看不见的。见再下一节。
- 排序记忆:现已可用。名额会给最有用的事实,而不只是最新的事实。
- 整合记忆:现已可用。后台任务会在服务器安静的时候把重复内容归并起来,并重写摘要,而且每一项改动都会作为提案交给你批准。
- 语义记忆:按含义而不是按字面匹配,所以 “他说法语” 能找到 “服务器语言是法语”。这是六种里最强的一种,也是唯一会产生费用的一种。
唯一还没有准备好的那一种,在对话框里有标记,无法选择。无论选哪种类型,下面两条规则始终成立:它们读取的都是同一份记忆,并且没有任何一种会自行删除内容,所以改变主意、再切换回去,永远不会让你丢掉一条事实。
选定一个服务器后,记忆页面会在你做出更改之前,用数字告诉你这次更改实际会移动什么。
📓 日志:什么都不会被抹掉,只会被停用
在日志类型下,机器人判断一条事实已经过时后,不再删除它。这条事实的有效期只是结束了:它离开 AI 拿到的上下文,但仍然留在这个页面上,并标明它何时停止生效,以及(如果有的话)取代它的那条事实。
机器人也因此多了一个配套的动作。它不再只能丢弃 [#12],还可以说 “这条不再成立,替换它的是这条”,并且会被明确告知旧的措辞仍然保留着。一个它认为是破坏性的修正,是它会犹豫要不要做的修正。
查看历史
一旦有内容被停用,表格上方就会出现三个标签页:
- 生效中:机器人实际能看到的内容。这是默认标签页,也是对 “机器人到底知道什么?” 这个问题的真正回答。
- 已停用:曾经成立的内容。带删除线,附有日期、机器人给出的原因(如果有),以及替换它的那一条。
- 全部:两者合在一个列表里。
撤销错误的判断
机器人有时会判断错。在已停用的那一行上点 恢复,一次点击就能重新启用它,这正是这一行被保留而不是被删除的全部原因。替换它的那条事实(如果有)会被特意保持原样:两条事实可以同时成立,该留哪一条由你决定,而不是由面板决定。
在已停用的行上,删除 仍然是真的删除,和其他行一样。有人在这个页面上删掉一条事实,就是已经做了决定,没有任何东西会去质疑这个决定。
切换过去,再切换回来
打开日志类型不会移动任何东西。你已有的每条事实都算作仍然成立(它本来就是如此),并保留创建时的日期。
切换回 Classic 时,在此期间被停用的内容会原样留在原处:仍然在这个页面上,机器人仍然看不到。如果你想把它们全部重新放到 AI 面前,记忆页面提供了针对那一个服务器的 恢复全部已停用记忆 选项,并会把这个操作写入你的审计日志。它绝不会替你自动完成:日志停用的内容,停用是有原因的。
🔎 可搜索归档:机器人可以自己查
Classic 记忆有一个真正的限制,但它不在你可以存多少条事实上,而在于超出 每次注入的记忆事实数量上限 的所有内容,无论多么真实,AI 都看不见。调高上限是唯一的办法,而这会让每一条消息都变得更贵。
可搜索归档 给了机器人另一个办法。最近的事实照常递给它,除此之外,它还可以按名称索取某一条,比如 “在记忆里搜索:Paul 的生日”。查到的内容会在它回答之前交给它。
费用是多少
在机器人不去查找的消息上,没有任何额外费用,而这占了大多数。当它确实去查找时,恰好多花一次额外的调用:带着查到的事实把问题再问一遍。绝不会是两次:如果机器人在第二次回答里再次要求搜索,这个要求会被忽略。
搜索本身是由数据库执行的全文搜索。没有嵌入,没有向量,没有对每条消息做任何计算,也不涉及任何第三方服务。
它能查到什么
那个服务器里所有仍在使用的事实,两种范围都包括:关于服务器的事实,以及关于其成员的事实。这是有意为之:“Paul 的生日” 是关于一个并非当前说话者的人的事实,如果搜索只能触及说话者自己的事实,就会漏掉大多数值得问的问题。
它查不到的有:在日志类型下被停用的任何内容(关闭一条事实的有效期,恰恰就是决定不再把它交回去),以及在不允许读取记忆的频道里的一切内容。搜索也是一种读取,遵守同样的 允许[读取]记忆的频道 设置。
机器人通过搜索找到的事实,也可以由它来纠正,条件与递给它的那些事实相同。
切换之前:试运行
选定一个服务器后,记忆页面会用来自你自己数据的数字告诉你归档会带来什么成本:有多少条事实需要建立索引,那是多少文本,以及对它们做一次真实搜索花了多长时间。
打开它不会移动任何东西,也不会改写任何东西。索引建立在已经存储的文本之上,并且无论服务器是否使用搜索,索引都存在,所以不管是切换过去还是切换回来,都是瞬间完成的。
🏅 排序记忆:名额给值得的事实
Classic 记忆会把最近修改的 N 条事实交给模型。换句话说:你的服务器遵守了一年的规则,会输给昨天的闲聊而失去名额,因为闲聊被碰过的时间更近。
排序记忆 会按三个维度给每条候选事实打分,然后把最好的 N 条交出去:
- 它有多新。
- 它有多重要:由模型在写入这条事实的那一刻打分,因为只有那一刻,存储它的理由还摆在模型面前。
- 它与此刻正在说的内容有多相关。
这是一种排序,而不是过滤。没有任何东西被永久搁置,一条在某条消息上没入选的事实,在下一条消息上又会成为候选。
权重由你决定
AI 回复页面上的三项设置(新鲜度、重要性、相关性)决定每个维度的分量,按服务器分别设置。记忆以长期规则为主的服务器,会希望重要性比新鲜度占更大分量;热闹的社交服务器则会想要相反的设置。
每条事实本身已存储的置信度也会被读取。它起乘数的作用,而且只会往下调:机器人不确定的事实,不会排在它确定的事实前面。
切换不需要任何成本
没有迁移,也没有费用。还没有人打过分的事实会排在中间而不是最后,所以排序从第一条消息起就能基于你已有的内容工作,而重要性会随着机器人重写事实自行补全。
试运行会告诉你有多少条事实已经带有分数,并显示哪些会多得一个名额、哪些会失去一个。
🧩 整合记忆:整理在服务器安静时进行
不断增长的记忆,最终会把同一件事用两个名字说两遍:这边是 language,那边是 lang。在这之前,处理这个问题的唯一办法就是手动。
整合记忆 会在服务器安静下来之后,对它的记忆运行一次后台整理。它绝不会在回答进行到一半时运行,而且(这一点很重要)它不会自行应用任何改动。
它提出建议,由你决定
整理任务会写出提案。提案会逐条出现在记忆页面上,保留的事实与它将取代的事实并排显示,每一条都有三个选择:
- 合并:采纳整理任务的建议。
- 反向合并:改为保留另一条事实。对于两条互相矛盾的事实,哪一条仍然成立,只有你最清楚。
- 两条都保留:拒绝。除非这两条事实中有一条之后被改写,否则整理任务不会再问。
在点击其中一项之前,什么都不会改变。
同意不等于抹掉
合并是日志意义上的替换。让位的那条事实会关闭自己的有效期,并指向留下来的那一条,它会带着日期和原因以删除线显示在这个页面上,点 恢复 就能把它找回来。合并的撤销方式与任何其他停用完全一样。
矛盾的内容绝不会被合并。 说法相反的两条事实会被标记出来,交给人去裁决。整理任务无从知道哪一条仍然成立。
摘要会被重写
摘要是机器人每次都会完整读取的唯一一行记忆,所以它也是最先过时的那一行。它是根据当时已知的内容写下一次之后就没再动过的。
整理任务会根据服务器范围的事实,起草它今天会怎么写,页面则把两份并排放在一起:机器人现在读的 和 它将改读的。规则与合并相同:没有你的同意,任何东西都不会取代它,而且之前的措辞是被停用而不是被删除。
它自己的模型
这个整理任务不需要和 Discord 回复赛跑,所以它可以使用比频道里回答问题的模型更强的模型,也可以用更便宜的,并且有它自己的端点和它自己的密钥,和面板里的每一个模型字段一样。
它也可以完全不用模型。没有模型时,整理任务仍然会找出并提出每一对重复项;只是合并时会逐字保留胜出的那条事实,而不是把两条改写成一句话。模型只负责写建议的措辞和摘要草稿。
何时运行
它按自己的计划运行,并且在不划算的时候会自己拒绝运行:记忆太少,不可能有重复;自上次整理以来没有变化;距离上一次不到一天;或者已经有一条提案在等待回复。一个从来不安静的服务器,在一周后也会被整理一次,因为恰恰是这样的服务器,记忆里最容易积满重复内容。
切换之前:试运行
卡片会用你自己的数据告诉你:存储了多少条事实,一次整理会发现多少重复和多少矛盾,并附上五个取自你服务器的真实例子。
打开它不会移动任何东西。第一次整理只会提出建议,由你决定。
🧠 语义记忆:看含义,而不是看字面
在它之前的每一种类型,底层回答的都是同一个问题:这两段文本有没有共同的词? 对于 “他说法语” 和 “服务器语言是法语”,答案是否定的:只有一个共同的词,而且不是有用的那个。
语义记忆 会把每条事实变成一个嵌入:一个方向,而不是一段字符串。意思相同的两条事实会指向同一个方向,不管它们是用什么词写的,它们之间的接近程度是面板可以比较的一个数字。
实际改变了什么
两件事,而第二件是你每天都能感受到的。
搜索不再漏掉东西。 当机器人去查找一条没有递给它的事实时,它不再依赖成员是否使用了与记下这条事实的人相同的词。
排序不再依赖消息里的字眼。 在排序记忆下,一条事实的相关性分数来自它在搜索结果中排在哪里。在语义记忆下,则按它与当前所说内容的实际接近程度打分,这就是 “这条事实被找到了” 与 “这条事实说的就是这件事” 之间的区别。
费用是多少
这是唯一一种会按计划把你的数据发送到别处的类型,所以有必要把成本说清楚:
- 每写入一条事实,调用一次嵌入,仅此一次。没有被改写的事实绝不会被嵌入两次。
- 每条长度足以参与排序的消息,调用一次。 少于十二个字符时不会发送任何内容,因为 “lol” 没有什么可匹配的。
- 比较本身发生在面板里,而不是数据库里,这就是为什么这种类型在一个服务器上处理几千条事实都很轻松,再往上就不太行了。
它需要一个嵌入模型,在与你其他 AI 设置相同的端点和密钥上指定。
它会自动回退
没有指定模型、端点拒绝请求、补全任务还没运行,或者你刚更换了嵌入模型:在所有这些情况下,搜索都会回退为按字词匹配,而不是失败。回答里会说明实际运行的是哪一种,所以静默的回退也是看得见的。
更换嵌入模型会让所有内容重新嵌入,在这个任务完成之前,服务器按字词搜索。这期间不会有任何东西出问题。
切换之前:试运行
卡片会告诉你补全任务将发起多少次调用、涉及多少文本,以及在向量看来,你的哪些事实已经被视为同一件事。
不显示货币价格。 在那里写一个金额,就意味着为你指定的任何端点编造一个价目,而在一个讲钱的页面上,编造的数字比没有数字更糟。
🧹 清空记忆
对于某一条错误的事实,逐条删除是合适的。另外两种情况则有 清空记忆,选定一个服务器后,它就在服务器筛选旁边:
- 关于这个服务器的一切:当记忆偏离得太远,重新开始比改正二十次更划算时。
- 关于某一位成员的一切:当某人已经离开,或者要求被遗忘时。输入他们的 Discord 用户 id。
它会立即生效,而且无法撤销,机器人会从下一次对话开始重新学习。每一次清空都会以执行者的名字写入你的审计日志,并记录删除了多少条。
🔑 访问控制
记忆条目对任何有权访问该服务器所属团队的人都是可见的。
更改它们则是另一种权限:添加、编辑、删除和清空都需要配置该服务器的权限,也就是功能设置所需要的同一个权限。没有这个权限,你仍然可以阅读列表,只是看不到“清空记忆”按钮。
不要在 AI 记忆里存放敏感的机密、密码、私密令牌或保密信息。
🧵 子区
记忆的读取和写入遵循 允许[读取]记忆的频道 和 允许[写入]记忆的频道 设置,而子区不属于这些频道之列,即使它所属的频道在其中也是如此。默认情况下,子区里既不读取也不写入记忆。AI 回复的 包含子区 选项(默认关闭)可以让子区跟随它所属的频道,参见 AI 回复。如果子区可能对不应该看到记忆内容的人开放,请保持关闭。
✨ 记忆与回复质量
记忆并不是越多越好。
太多不相关的事实会让 AI 变得不够专注。
好的记忆应该是:
- 简短
- 准确
- 相关
- 保持最新
- 容易理解
💡 最佳实践
- 服务器发生重大变化后,检查一下记忆。
- 删除过时的事实。
- 当成员要求被遗忘时,直接清空他的条目,而不是逐行去找。
- 让重要的规则保持清晰、明确。
- 除非有充分的理由并获得许可,否则不要存放用户的私人数据。
- 用记忆来改善上下文,而不是取代审核管理或工作人员的判断。