为什么你的 AI 角色总是忘事,以及怎样改善
先说结论
- AI 并不记得你们的聊天,是应用每次都在提醒它。你每发一条消息,应用就把角色卡和尽可能多的近期聊天发给 AI。AI 读完这些,写出回复。除此之外,它什么都没有。
- 能装下的内容有上限。这个上限叫作上下文窗口。一旦聊天长度超过窗口,最早的消息就会被丢掉。所以角色似乎会在第 100、300 或 400 条消息前后失忆,具体取决于应用。
- 窗口没法变大,但可以用得更好。让角色卡保持简短,写一份故事摘要,把背景细节放进世界书,只在提到时才加载。每个应用的记忆功能,都是这三种思路之一的某种变体。
幕后到底发生了什么
- 每条消息,AI 都从零开始。除非应用再发一次,否则上一条回复里的任何东西都不会带到下一条。
- 聊天很快就会填满窗口。窗口以 token 计量,一个 token 大约是四个英文字符。五十个来回就累计约 20,000 个 token,超过了大多数应用的上限。所以最早的消息最先被丢掉。
- 聊天不会改变 AI。有一种流行的说法认为,长时间聊天会慢慢覆盖掉角色。并不会。角色在第 60 条消息时开始走样,是因为当初定义这个角色的那些消息已经掉出了窗口。
- 窗口再大也解决不了。应用每条消息都要发送整个窗口,所以窗口越大,每一轮花得越多。而且窗口越长,AI 模型反而越用不好。
每种症状意味着什么
- 角色忘了一阵子之前提到的名字或情节。那条消息已经掉出了窗口。把这个事实重新写进摘要、记忆字段或世界书条目。
- 角色翻来覆去说同样的话。窗口里塞满了它自己最近的回复,而 AI 会模仿它看到最多的东西。编辑或删除那些重复的句子。
- 角色说话不像自己了。聊天把角色卡挤到了一边,或者应用把角色卡截短了。把角色卡写短一些。
- 角色忘了三条消息之前的事。这不是窗口的问题。要么是应用丢掉的内容远超应有的量,要么是 AI 模型太弱。在新聊天里试一试同样的情况,就能分辨是哪一种。
今晚就能用上的办法
- 缩短角色卡。卡里的每个字都占用了本可以留给聊天的空间。把角色卡控制在大约 1,500 个 token 以内。角色卡指南讲了先删什么。
- 自己写摘要。大多数应用都有专门的字段,叫作记忆、聊天记忆或作者注释。在里面写五行简短的事实,而不是一段故事:你们在哪里,现在是什么关系,哪些情节线还没收尾。
- 把背景故事移进世界书。世界书条目只在触发词出现在聊天中时才会加载。一个关于角色兄弟的条目,在有人说出“兄弟”之前不会产生任何开销。每个条目都要写短,因为条目一旦加载,也会像其他内容一样占用窗口空间。
- 角色走样时,写一段回顾。发一条跳出角色、写在括号里的消息,用两句话说明故事进展到了哪里、角色是谁。然后继续。
- 聊天实在救不回来时,带着回顾重新开始。把你的摘要粘贴为新聊天的第一条消息。你会失去旧的聊天记录,但故事还在,角色也会比之前更鲜明。
各个应用提供了什么
- Character.AI 没有公布它的窗口有多大。它提供置顶消息、一个 400 字符的记忆框,以及会自动收集事实的 Story Memory,付费方案中各项额度都更多。置顶消息占用的是同一个窗口的空间。
- JanitorAI 称,在它自家的模型上,窗口约为 8,000 到 9,000 个 token。它提供一个 Chat Memory 字段,建议“列事实,不写场景”,并建议把角色卡控制在 1,500 个 token 以内。
- Chai 对记忆只字未提。有用户反映,一个角色的文本被限制在 625 个字符以内。
- SpicyChat 根据你的方案提供 4,096、8,192 或 32,768 个 token,付费方案还有记忆管理器。
- SillyTavern(酒馆)会在聊天中画一条虚线,标出窗口在哪里结束。它的工具有 Summarize 扩展、Author's Note(作者注释)和 World Info(世界书)条目。
- 用你自己的 API 密钥时,窗口大小由你自己设定。16,000 到 32,000 个 token 左右,效果比模型的最大值更好;而且大多数服务商对它已经见过的那部分提示词收费低得多。API 密钥指南里有价格。
有些应用宣传自己拥有无限记忆。它们的限制和其他所有应用一样。它们有的只是一套决定保留哪些旧消息、丢掉哪些的办法。诚实的应用会解释它们是怎么决定的。
在这里,摘要自动生成
LonelyTavern 是一款适用于 iPhone 和 Android 的自带密钥角色聊天应用。滚动更新的故事摘要、对人物和地点的自动记忆,以及记录事情发生时间的故事时钟,让长对话始终前后连贯。服务商、模型和窗口大小都由你选择。免费,无需账号,没有广告,18+。
相关指南:如何写出好用的角色卡 · AI 角色扮演需要哪种 API 密钥 · 全部指南。
资料来源
- OpenAI:对话状态和Anthropic:上下文窗口:每次请求都从零开始、最早的消息最先丢弃、窗口过长效果下降
- Gemini API:token:每个 token 约四个字符;Chroma:Context Rot(上下文腐烂):在 18 个模型上,输入过长都会削弱信息召回能力
- Character.AI:Story Memory 与 Facts和记忆框
- JanitorAI:token、聊天记忆、代理的上下文大小
- Chai:常见问题(未提及记忆);r/ChaiApp 关于 625 字符上限的讨论(用户反馈)
- SpicyChat:token 与上下文;SillyTavern:上下文设置、Summarize、World Info
- 用户反馈:“覆盖”说、聊天应用如何处理记忆
Character.AI、JanitorAI、Chai、SpicyChat、SillyTavern、OpenAI、Anthropic 和 Google 均为各自所有者的独立产品。LonelyTavern 与其中任何一家都没有关联,也未获得其认可。文中的限制和说法查阅自它们 2026年9月18日的页面,此后可能有所变化。
