993 字
5 分钟
我的 AI 小说家技术构筑:基于 MemPalace 与 AstrBot 的沉浸式共创系统
1. 核心架构设计思路
我构筑这套系统的初衷是实现一种“人机共创”的沉浸式跑团体验。为了解决大模型在长篇创作中容易“吃书”(忘记设定)的问题,我没有采用简单的长上下文方案,而是搭建了一套多层记忆检索架构。
1.1 技术栈选型
- 大脑 (LLM):选用 OpenAI Chat-GPT 5.5(或Google Gemini 3.1 Pro 预览版),主要看中其超长的上下文窗口和强大的函数调用(Function Calling)能力。
- 外壳与接口 (UI/Agent Host):采用 AstrBot。它原生支持 Gemini API 和 MCP 协议,并提供了便捷的 Web ChatUI 以及多端(微信/TG)接入能力。
- 外部记忆体 (RAG):使用 MemPalace 插件或 AstrBot 自带的向量知识库。MemPalace 的优势在于其独特的“空间分层”结构(Wings, Rooms, Closets, Drawers),能实现高达 96.6% 的检索召回率。
2. 知识库的结构化构筑
在数据准备阶段,我将 50 万字的原始背景通过 AI 压缩、结构化,转化为大约 5 万字的简约文本并存入记忆宫殿。
2.1 MemPalace 的空间布局
我通过 MCP(模型上下文协议)将 MemPalace 挂载为 AI 的工具集。其核心原理是将信息按逻辑隔离:
- 翼楼 (Wings):按独立项目或实体划分,确保不同设定互不干扰。
- 房间 (Rooms):在同一翼楼下细分主题(如世界观规则、人物属性、地理志)。
- 抽屉 (Drawers):存放最原始的逐字文本,作为最终的真实来源。
2.2 AAAK 压缩方言
为了在节省 Token 的同时保持高精度,我利用了 MemPalace 内置的 AAAK 方言。这是一种基于正则表达式的缩写系统,能将复杂的实体关系压缩到极小的体积,方便 AI 快速理解上下文。
3. 跑团模式的参数微调
为了让 AI 表现得更像一个“剧情引导者(DM)”而非简单的问答助手,我针对性地调整了运行参数:
- Thinking Budget(思考预算):我将其调低至 1024 或 2048。在即兴跑团中,这能保证 AI 既经过思考又能快速响应,维持沉浸感 [cite: 14, 15]。
- 安全过滤 (Safety Settings):为了适应小说中不可避免的冲突描写,我将其设为 NONE。
- Agentic 检索开关:开启后,AI 会根据我的指令自主决定何时调用
mempalace_search或自带知识库,无需我手动干预。
4. 解决 RAG 时间幻觉的技术方案
在使用原生向量库(RAG)时,我遇到了“时空缝合”问题,即 AI 会把旧章节的检索结果当成当前剧情。我的解决路径如下:
4.1 时间锚点 (Time Anchors)
我采用“一句话锚点”技巧,在每轮对话(尤其是清空上下文后的第一句)中强制声明当前的时间节点和剧情阶段(例如:【当前进度:第 07 阶段】)。
4.2 知识库预处理
我修改了所有分章节的知识库文件(01.txt - 07.txt),在每个文件的首行加入全局时间线声明。这样当向量库切块检索时,AI 能够通过片段头部的标签识别该设定属于“过去”还是“现在”。
4.3 提示词隔离规则
我在系统提示词中定义了 “绝对时间线隔离” 规则,明确要求 AI 检索到的内容仅作为历史背景,禁止将其作为当前发生的动作重新描写 。
5. 总结与未来迭代
这套系统目前通过 AstrBot + MCP + 本地分层存储,成功实现了低幻觉、强连贯的小说共创环境。未来我计划进一步引入 Reranker(重排序模型),以优化知识库返回片段的打分精度,彻底杜绝“串戏”现象。
我的 AI 小说家技术构筑:基于 MemPalace 与 AstrBot 的沉浸式共创系统
https://bbcslook.top/posts/guide/asbotandstory/ 评论区
CC