AI 驱动的智能故事创作平台:长篇一致性、角色记忆与可视化叙事

这是我从 0 到 1 参与搭建的 AI 故事创作平台(2025.10–2026.05),目标是把小说创作、结构化拆解、角色管理、分镜生产和素材生成放进同一条工作流:作者在工作台里维护角色、场景和时间线,AI 负责长篇生成、一致性检查和视觉资产生产。
前端是 React + Vite + TypeScript,工作流画布基于 reactflow,知识图谱用 d3 + dagre 渲染,编辑器基于 slate,状态管理 zustand,接口契约用 zod 严格校验;后端 API 覆盖故事生成、角色、记忆和日程,接入 Gemini、DeepSeek、豆包等多个模型 Provider。
核心难题一:长篇生成的”设定漂移”
让 LLM 写长篇小说,最大的问题不是写不出来,而是写着写着就忘了自己写过什么——人物性格漂移、伏笔丢失、时间线冲突。
我们的解法是把”一次生成”拆成架构 → 目录 → 章节 → 状态更新四级 API 链路:
- 每章生成后,把剧情要点、角色状态变化回写到结构化的故事状态里
- 下一章生成时注入的不是全文,而是摘要 + 当前状态,从根上控制上下文规模
- 支持断点恢复和分块续写——生成中断后从任意章节继续,状态不丢
配合故事一致性检查器和支持倒叙的时间线系统,长篇的设定稳定性有了工程保障。
核心难题二:角色要”记得住、演得像”
角色对话的真实感来自记忆和生活状态。平台的角色系统做了两层设计:
分层记忆:对话和事件先做 embedding,余弦相似度 ≥ 0.92 的记忆自动去重;再按重要性阈值分成短期/长期/核心三层(6/8/9 分级),检索时分层召回——角色既不会忘记关键设定,也不会被琐碎记忆淹没。
24 小时日程驱动:每个角色有自动生成的 24 小时作息表,对话系统根据日程实时给出 busy / away / available 状态——凌晨三点去找铁匠,他是不会理你的。NPC 因此有了”自己的生活”。
可视化叙事:把故事画出来
这是平台最直观的部分。故事的时间线、人物动线和事件触发点,可以自动生成为手绘风格的故事地图:

地图上有完整的图例系统:路线站点、NPC 住所、守卫巡逻点、任务触发点、场景出口,主角按时间线的行动路线用白色连线标出,NPC 和事件路线用虚线区分——一张图就能看清一段剧情的全部空间调度。

人物立绘的自动化生产管线
角色的视觉资产生产做成了8 步流水线:形象设定总结 → 立绘关键词 → 全身立绘 → 三视图 → 服装细节拆解 → 面部表情 → 姿势 → 发音口型,底层对接 ComfyUI 生图服务,每步产出多套方案供选择,整套跑完一个角色的全部美术资产就绪:

关键设计是版本化的任务记录:每次生图提交都保存 taskId、Prompt、状态和产出地址,Prompt-图片-资产一一对应,可追溯可回滚——这让美术资产生产从”抽卡”变成了可管理的工程。
工程上的其他积累
- 浏览器端记忆管线:用 @xenova/transformers 在纯前端做 embedding,配合 kuzu-wasm 图数据库,轻量场景不依赖后端
- 健壮的模型输出解析:Zod schema 校验 + jsonrepair 容错,LLM 返回的脏 JSON 不再炸掉流程
- 知识图谱与图谱查询:角色关系、事件关联的可视化与检索
- 日程导出与工业化制作中台:故事数据可导出对接下游的游戏引擎管线
小结
这个项目最大的收获是想清楚了一件事:LLM 应用的壁垒不在调用模型,而在状态管理。长篇一致性靠状态回写、角色真实感靠分层记忆、资产可控性靠版本化任务——把这些”确定性的骨架”搭好,模型的生成能力才能被稳定地放大。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!

