1. 从“失忆”到“长情”我为什么需要一个能记住前文的AI小说编辑器写小说尤其是长篇最怕什么不是卡文不是灵感枯竭而是写到第十章突然想不起第三章里某个配角眼睛的颜色或者第五章主角随口提过的一个地名。你不得不停下创作的手在几十个文档里来回翻找或者依赖那并不靠谱的记忆。这种“上下文割裂”的体验足以打断任何流畅的创作心流。我尝试过市面上几乎所有主流的写作软件和笔记工具。它们有的界面精美有的功能强大但都有一个共同的短板它们只是被动的“记录者”而非主动的“协作者”。当我向内置的AI助手提问“主角第一次见到反派时反派说了什么” 得到的回复往往是“抱歉我无法访问您之前的文档内容。” 那一刻感觉就像雇了一个记忆力只有七秒的助理每次对话都得从头教起。这让我意识到一个真正能辅助创作的AI工具其核心能力不应该是“生成”而应该是“理解”。它需要像一个真正的编辑或合著者那样记住整个故事世界的设定、人物关系、情节脉络。于是我把目光投向了那些能够处理长文本、具备强大记忆能力的AI Agent框架。在众多选择中WorkBuddy以其清晰的架构、对Node.js的良好支持以及活跃的社区进入了我的视野。我的目标很明确不是做一个通用的聊天机器人而是打造一个专为长篇叙事服务的“记忆中枢”一个能嵌入到我的写作流程中、真正理解我故事上下文的AI小说编辑器。2. WorkBuddy不只是另一个AI套壳而是可编程的智能体框架在开始动手之前我们需要先理解WorkBuddy到底是什么。网络上有很多关于“WorkBuddy使用教程”、“WorkBuddy和CodeBuddy区别”的讨论容易让人把它看作一个现成的、开箱即用的AI应用。实际上这是一种误解。WorkBuddy更像是一个智能体Agent的底层开发框架和运行环境。你可以把它想象成乐高积木的基础底板和核心连接件。它提供了让AI智能体运行起来所需的基础设施任务调度、记忆管理、工具调用、状态保持等。但它本身不提供任何具体的“技能”Skill。你需要或者说你可以基于它来搭建任何你想要的智能应用。这正是它的魅力所在——高度的可编程性和定制性。与一些封装好的、提供固定问答模式的AI工具相比WorkBuddy的核心优势在于其记忆系统。它原生支持将对话历史、工具执行结果、用户自定义数据等以一种结构化的方式存储和检索。这对于小说创作场景至关重要。当我在编辑器中输入“将主角的冒险经历总结成时间线”时WorkBuddy驱动的后台智能体能够去它的记忆库中检索所有与“主角”、“冒险”相关的片段然后进行综合分析与生成而不是基于最后一次对话的只言片语胡编乱造。它的技术栈基于Node.js这对于广大JavaScript/TypeScript开发者来说非常友好意味着你可以用熟悉的语言来扩展它的能力。社区里已有不少“开源项目”展示了如何为WorkBuddy添加各种“Skill”比如连接数据库、调用外部API、处理特定格式的文件等。这为我构建小说编辑器提供了坚实的技术基础我不需要从零开始造轮子而是可以站在一个设计良好的框架上专注于实现“文学记忆”这个核心功能。3. 架构蓝图如何让AI成为你的“故事数据库”有了WorkBuddy作为引擎下一步就是设计整个系统的架构。我的目标是一个本地优先、隐私安全、深度集成的写作环境。整个系统可以分为三层呈现层、智能层和记忆层。呈现层编辑器界面我选择了一个轻量级、可嵌入的富文本编辑器作为前端例如Tiptap或Quill。它的作用是提供一个干净、无干扰的写作区域同时暴露一些特殊的交互控件比如“询问AI关于当前段落”、“检索人物设定”、“生成后续情节建议”等按钮。所有用户输入的文字都会实时或按批次发送到智能层进行处理。智能层WorkBuddy智能体这是整个系统的大脑。我创建了一个专有的WorkBuddy Agent它配备了几个关键技能Skill文本摄取与分块技能负责接收编辑器传来的文本按照章节、场景或固定长度进行智能分块。分块时不仅看字数还会尝试识别段落边界、对话切换等语义边界以保证上下文片段的完整性。向量化与存储技能将分块后的文本通过嵌入模型Embedding Model转换为高维向量。这个向量就像是这段文字的“数学指纹”包含了其语义信息。随后这个向量和对应的原始文本被一起存储到本地的向量数据库如ChromaDB或LanceDB中。这就是记忆层的核心。检索与推理技能当用户在编辑器中提出一个问题如“主角的导师叫什么”该技能会将问题也转化为向量然后在向量数据库中进行相似性搜索找出与问题最相关的几个文本片段记忆。WorkBuddy Agent会将这些片段作为“上下文”连同用户的问题一起发送给大语言模型如GPT-4、Claude或本地部署的Ollama模型请求模型基于这些确切的记忆来生成答案。记忆层向量数据库这是一个独立于大模型的外部记忆系统。它持久化地存储着你所有创作内容的向量和原文。即使你关闭了编辑器甚至更换了底层的大语言模型你的“故事记忆”依然完好无损。你可以把它想象成小说的“第二大脑”专门负责海量、结构化信息的存储和快速关联检索。这个架构的关键在于解耦写作界面、AI推理能力、长期记忆被分离成独立的模块。这样我可以单独升级其中任何一部分比如换一个更强大的本地模型或者优化检索算法而不会影响其他部分。这也保证了数据完全掌握在自己手中所有创作内容无需上传至云端满足了创作者对隐私和版权的基本要求。4. 核心实现构建“记忆”的三大关键技术环节理论架构清晰后真正的挑战在于实现。让AI记住前文涉及三个环环相扣的技术环节怎么存、怎么找、怎么用。4.1 记忆的存入文本分块与向量化策略存不是把整部小说扔进去那么简单。一股脑存入整本书检索时可能会带回大量无关信息干扰AI的判断。因此需要智能分块。我的策略是多级分块结合第一级章节分块。以自然章节为边界这是最粗的粒度适合检索宏观结构如“故事第三部分讲了什么”。第二级场景分块。利用空行、时间地点变化、POV视点人物转换等信号将一章切分为多个场景。这是最常用的粒度能精准定位到具体事件。第三级滑动窗口分块。对于特别长的描述性或论述性段落采用固定长度如500字重叠滑动窗口进行分块重叠部分如100字能保证上下文连贯避免在段落中间被切断语义。分块后的文本通过嵌入模型转化为向量。这里有一个关键选择使用专用嵌入模型还是大语言模型本身的嵌入能力早期我直接使用OpenAI的text-embedding-ada-002效果不错但依赖网络。后来转向本地部署的模型如BAAI/bge-small-zh-v1.5这个针对中文优化的模型在语义捕捉上表现非常出色且完全离线。在WorkBuddy的Skill里调用Hugging Face Transformers库或通过Ollama来运行这些嵌入模型流程非常顺畅。注意分块策略需要根据你的写作风格调整。如果你擅长写大段心理描写可能需要增大滑动窗口如果你的小说场景切换频繁那么场景分块会更有效。这是一个需要结合内容反复调试的过程。4.2 记忆的检索从关键词到语义搜索当用户提问“那个红头发的女巫后来怎么样了”传统的关键词搜索可能因为用户记不清“女巫”这个词而失效。而向量检索的核心是语义搜索。系统的工作流程如下问题向量化将用户的自然语言问题使用与存入时相同的嵌入模型转化为一个向量。相似度计算在向量数据库中计算问题向量与所有存储的记忆向量之间的余弦相似度。这个值在-1到1之间越接近1表示语义越相似。Top-K召回取出相似度最高的K个记忆片段例如Top-5。这K个片段就是AI回答问题的“参考依据”。为了提高检索精度我引入了混合检索策略语义检索为主如上所述保证能找到语义相关但关键词不匹配的内容。关键词元数据过滤为辅在存入向量时同时为每个记忆块提取关键实体人物、地点、组织作为元数据标签。检索时可以先通过“人物红发女巫”这类过滤器缩小范围再进行语义搜索大幅提升准确率。在WorkBuddy中这可以通过在Skill里组合调用向量数据库的查询接口和元数据过滤功能来实现。例如使用ChromaDB时它的query方法可以直接接受where条件进行过滤。4.3 记忆的使用设计精准的提示词工程检索到的记忆片段不会自动变成答案。如何将这些“记忆”有效地“喂”给大语言模型决定了最终回答的质量。这里就是提示词Prompt工程的用武之地。我设计的核心提示词模板如下你是一位专业的小说创作助手拥有关于以下故事片段的完整记忆。请严格根据提供的记忆来回答问题不要编造记忆中没有的信息。 【相关记忆上下文】 {在此插入检索到的Top-K个记忆片段用分隔符隔开} 【用户当前问题】 {用户的问题} 【回答要求】 1. 答案必须完全基于上述【相关记忆上下文】。 2. 如果上下文中有明确信息请直接引用并说明出处如出自第X章。 3. 如果上下文中信息不足或模糊请如实告知“根据现有记忆无法确定”并可以指出可能需要查阅的大致方向。 4. 语言风格保持与小说原文一致。这个提示词做了几件关键事设定角色明确AI的职责是“创作助手”而非万能知识库。划定边界强调“严格根据记忆”抑制其幻觉Hallucination倾向。提供结构化上下文清晰地将记忆与问题分开便于模型理解。给出具体指令规定了回答的格式和底线尤其是“无法确定”这一条这比胡编乱造有价值得多。在WorkBuddy Agent中我将这个提示词模板固化在一个专用的“问答技能”里。该技能的工作流是接收问题 - 触发检索技能获取记忆 - 组装提示词 - 调用大语言模型API - 将回答返回给编辑器界面。5. 实战演练在写作流程中与“记忆AI”协作光有技术不够必须融入真实的写作流程。我来分享几个日常使用中的典型场景看看这个系统如何具体工作。场景一连续性检查与细节补全我正在写第十五章主角需要回想起他七岁时父亲送他的一把匕首。我记不清具体描述了。我只需在编辑器侧边栏输入“查找主角父亲赠送匕首的详细描述”。 后台智能体迅速在记忆库中检索几秒后返回“根据记忆该情节出现在第三章第12段。原文描述为‘一柄镶着暗蓝色珐琅的短匕刀柄上刻着缠绕的藤蔓那是他七岁生日时父亲在边塞集市用三张上好的狐皮换来的。’” 我不仅得到了答案还知道了出处可以快速跳转回去查看上下文保证了细节的绝对连贯。场景二人物关系梳理故事线复杂配角众多。我可以直接命令“生成一份截至目前所有出场人物及其相互关系的图谱摘要。” 智能体会检索所有包含人物介绍和互动的记忆片段进行综合、去重、归纳最终生成一份清晰的人物关系清单甚至能以Markdown表格的形式返回让我对全局人物网络一目了然。场景三情节发展建议写到一个关键转折点我有些犹豫。我输入“基于主角目前‘身负重伤’且‘被朝廷通缉’的处境以及他‘性格倔强’、‘重视朋友’的特点请分析他接下来可能做出的三种选择并评估每种选择对故事走向的影响。” 这时AI不再是凭空想象。它会检索所有关于主角受伤程度、通缉令详情、性格刻画以及过往重要抉择的记忆在此基础上进行逻辑推演给出有上下文支撑的、符合人设的情节建议。这种建议的参考价值远高于天马行空的随机生成。场景四风格一致性维护我的小说是古典武侠风格但写着写着偶尔会冒出一些现代词汇。我可以定期让AI进行检查“扫描最近新增的5000字内容找出其中可能不符合古典武侠语言风格的词汇或句式并给出修改建议。” AI基于之前已被我认可的、风格纯正的章节作为“风格记忆”来比对和审视新内容充当了一位不知疲倦的“风格校对员”。6. 避坑指南那些我趟过的雷和收获的经验在开发和使用这个编辑器的过程中我踩过不少坑也总结出一些让系统更可靠、更高效的经验。坑一向量数据库的“遗忘”与“污染”最初我采用“追加式”存储每写一段就存一段。很快发现两个问题1. 当我修改了之前章节的某个段落数据库里存在的是旧版本的向量导致检索到过期信息。2. 同一内容被反复存储如稍作修改后保存造成冗余和检索结果重复。解决方案建立版本管理与去重机制。我为每个文档块设计唯一ID包含章节号和段落哈希。每次保存时先检查该ID是否已存在若存在则用新向量覆盖旧向量。同时定期运行简单的文本相似度去重脚本清理高度重复的记忆片段。坑二检索结果的相关性陷阱有时AI的回答看似引经据典实则答非所问。排查发现是语义检索找到了“语义相似”但“主题无关”的记忆。例如提问“A角色的武功招式”却检索到了描写“B角色练功场景”的段落因为两段都大量出现“内力”、“经脉”等词。解决方案优化检索查询的构造。不要简单地将原始问题直接向量化。而是先让一个小模型或通过规则对问题进行意图解析和关键词增强。例如将“A角色的武功招式”重写为“关于角色A使用的特定武功招式的名称、特点和描述”再将其向量化用于检索能显著提升主题相关性。坑三大模型的“过度发挥”即使提供了精确记忆某些大模型特别是早期版本仍会忍不住“炫技”添加一些记忆中不存在但看似合理的细节。解决方案强化提示词约束与后处理。除了在提示词中严厉警告我还在WorkBuddy的Skill里增加了一个“事实核对”步骤。AI生成初步答案后系统会自动提取答案中的关键事实断言如时间、地点、人物动作再次用这些断言作为查询去检索记忆库验证是否存在支持证据。如果某个断言找不到足够支撑则在最终答案里将其标记为“推测”或直接要求AI重新生成该部分。坑四系统性能与响应速度随着小说字数增长到几十万记忆向量可能达到数万个。每次检索都进行全量计算速度会变慢。解决方案引入分级索引与缓存。分级索引除了全量向量库我为“人物”、“地点”、“关键物品”建立了专门的索引。当问题明显属于某一类别时优先搜索子索引大幅缩小搜索范围。查询缓存对于频繁被问到的、或者近期问过的相似问题通过问题向量相似度判断将其答案缓存一段时间。例如“主角是谁”这种问题答案在很长一段时间内是不会变的。增量更新每次只对新写入或修改的文本进行向量化和索引避免全量重建。这些优化使得即便在处理长篇作品时大多数查询也能在1-3秒内得到响应保证了写作过程的流畅性。7. 超越编辑器WorkBuddy智能体的更多可能性将这个基于记忆的AI能力封装成一个小说编辑器只是第一个应用场景。WorkBuddy框架的灵活性使得这套“记忆中枢”可以演变为更通用的“创作大脑”。可能性一多作品世界管理我可以为不同的长篇系列、不同的世界观创建不同的WorkBuddy Agent实例和对应的向量数据库。一个Agent专门服务“东方玄幻世界A”记忆库里全是它的设定和文稿另一个Agent服务“科幻末世世界B”。在写作台上我可以轻松切换而不会发生世界观和设定的串扰。这相当于为每个宏大的创作项目配备了一个专属的、知识渊博的“世界管理员”。可能性二从辅助写作到辅助构思当前系统主要服务于“写作中”的查证和连贯性维护。下一步我可以为Agent添加“构思技能”。例如输入一个高概念“如果恐龙没有灭绝并且进化出了文明”Agent可以调用它的记忆库此时可能接入一个更通用的知识库如维基百科向量化数据结合我以往作品的风格记忆生成一份初步的世界观设定、种族分类、社会结构草图为我的新书提供灵感起点。可能性三个性化风格迁移与模仿通过大量学习某位作家特定作品集的记忆Agent可以深度理解其文风、句式偏好、修辞手法。当我创作新故事时可以要求Agent以“XX作家的风格”来润色某一段落或者对我写的段落进行风格符合度评估。这对于系列作品的续写或者进行特定风格的创作练习有极大的帮助。可能性四跨模态内容关联记忆库里不仅可以存储文本还可以存储与故事相关的图片概念图、地图、音频氛围音乐、角色语音参考、甚至视频片段。通过多模态模型将这些非文本内容也转化为向量与文本向量存在同一个空间。这样当我看到一张场景概念图时可以问Agent“根据这幅图的氛围匹配小说中哪个场景最合适” 或者写一段雨夜打斗戏时让Agent推荐几段存储在记忆库中的、情绪匹配的背景音乐。这将创作从纯文本扩展到了全方位的感官体验构建。实现这些扩展本质上都是在WorkBuddy框架下开发新的Skill。它的插件化架构让增加新功能变得模块化。例如开发一个“风格分析Skill”专门负责提取和比对文本风格特征开发一个“多模态存储Skill”负责处理图像和音频的嵌入与关联。这正是WorkBuddy作为智能体框架而非单一工具的价值所在——它提供了一个可持续进化、按需定制的能力平台。回看整个项目从被“失忆”的AI助手困扰到亲手打造一个“长情”的创作伙伴最大的收获不是技术本身而是对“人机协作”模式的重新思考。最好的工具不是替代你而是深刻理解你并在你需要的时刻提供恰到好处的支持。这个能记住前文的编辑器记住的不仅仅是文字更是你构建那个虚构世界的点点滴滴它让AI从“聪明的陌生人”变成了你创作之旅中一位可靠的“同行者”。