# DSSTweb-dialogue 项目概述
## 一、立项背景与目标
现有 AI 角色扮演工具在结构化叙事管理方面存在明显短板:缺乏世界感知,AI 仅对当前轮对话做反应;记忆管理粗放,全量记忆线性增长导致输出文风僵硬;没有任务系统,无法提供多分支多结局的主线体验;缓存利用不足,推理成本偏高。SillyTavern 等工具被设计为通用聊天前端,架构上难以承载大世界模拟、结构化记忆、动态任务线等深层游戏化需求。
DSSTweb-dialogue 旨在构建独立的 AI 角色扮演叙事引擎,将 LLM 从对话机器人升级为叙事协同创作者。核心目标包括:设计三层 LLM 管线,将每轮回复拆解为世界分析、正文生成、任务更新三个阶段,各司其职层层服务;通过稳定的前缀消息结构充分利用 DeepSeek 前缀缓存,实现约百分之九十八的缓存命中率;引入世界线概念,主线是世界客观运行的剧本而非玩家任务清单,系统预测事件走向,玩家作为变数介入,形成自然叙事驱动的多分支多结局体验;构建大世界模拟内核,NPC 由位置、目标、情绪、认知和日程驱动自主行动,不等待主控命令;实现基于事件驱动的结构化记忆提取与关系网络增量更新;兼容 SillyTavern 角色卡、世界书和正则脚本等生态格式;提供轻量对话与全量刷新双模式,兼顾自然对话体验和上下文深度。
## 二、核心模块
前端为 Vite 加 TypeScript 加 Vue 3 单页应用,涵盖角色管理、世界书编辑、对话游玩、记忆关系面板、任务面板、Token 用量展示等功能。后端为 Express 5 加 SQLite 服务,包含路由层、三层 LLM 管线编排、提示词构造、协议解析、回合后处理、SQLite 持久化、OpenAI 兼容及 DeepSeek 网页 API 双客户端、世界书关键词激活引擎、世界状态报告六段式提取合并、SillyTavern 格式角色卡解析、正则脚本后处理引擎等模块。
## 三、业务流程
每次玩家输入触发完整的回合处理管线。服务端首先递增轮次计数并检查阶段截止时间。第一阶段调用 LLM 进行世界分析,判断世界书角色出场、随机事件是否发生、主线事件触发条件,输出结构化分析报告。第二阶段将分析结果注入消息头部,调用 LLM 进行正文生成,利用前缀缓存机制实现与第一阶段共享缓存命中。第三阶段从对话中提取任务进展,输出目标进度、事件触发、分支选择、结局倾向等结构化更新。服务端随后执行后果操作,包括事件触发后果、阶段完成后果、分支选择后果,并求值所有结局条件,满足即触发结局。最后合并记忆条目、关系增量与世界状态报告,回写 Token 用量。
对话发送分为两种模式。普通发送构建轻量提示词,仅含角色基本信息和对话历史,LLM 回复纯叙事正文,不产生协议块。发送全量构建完整提示词,注入记忆表格、关系网、世界状态和模
# 架构设计与工作总结
## 一、整体架构与设计思路
本项目是一个独立的 AI 角色扮演叙事引擎,采用前后端分离架构。前端为 Vite 加 TypeScript 加 Vue 3 单页应用,负责角色管理、世界书编辑、对话消息渲染、记忆关系面板、Token 用量展示等 UI 交互,使用 jQuery 辅助 DOM 操作,通过 SSE 协议实现 AI 回复的流式接收。后端为 Express 5 加 SQLite 服务,使用 Zod 做请求校验,通过 OpenAI 兼容 API 和 DeepSeek 网页 API 双路径对接大语言模型。
设计思路的核心是三层 LLM 管线。每轮玩家输入触发三次结构化的 LLM 调用,第一阶段进行世界分析,判断出场角色和事件触发条件;第二阶段基于分析结果生成叙事正文,支持流式输出;第三阶段从对话中提取任务进展和状态变更。三个阶段共享相同的消息前缀,充分利用 DeepSeek 的前缀缓存机制,实测缓存命中率达百分之九十八。
主线程务系统采用世界线设计,主线是世界客观运行的剧本而非任务清单。系统预测事件走向形成有向无环图,阶段间存在依赖关系,结局通过条件表达式自动求值。大世界模拟模块采用服务端调度加 LLM 叙事的混合方式,服务端每轮生成 NPC 候选推进项和主动权事件,LLM 将其转化为自然剧情。记忆系统采用事件驱动提取加自动合并压缩的策略,关系网络支持自定义字段增量更新。
## 二、负责模块与成果
本人独立完成了整个项目的设计与开发,涵盖前端 SPA、后端服务、数据库设计、LLM 提示词工程、主线任务系统、大世界模拟内核等全部模块。
核心成果包括:设计并实现了三层 LLM 管线架构,每轮三次调用实现结构化叙事,通过前缀缓存策略将综合推理成本降低至约百分之五。构建了完整的主线任务系统,支持多阶段多分支多结局,任务状态每轮自动更新,结局通过条件表达式自动触发。实现了大世界模拟内核,支持 NPC 自主行动与世界主动权机制,包含六类主动权事件和可见性投影系统。构建了结构化记忆系统,支持每轮自动提取和自动合并压缩。构建了关系网络系统,支持自定义字段和增量更新。实现了轻量和全量双模式对话,用户可每轮独立选择。兼容了 SillyTavern 生态的角色卡、世界书和正则脚本格式,降低了用户的迁移成本。
项目代码总量约一万五千行,其中前端 TypeScript 约五千行,服务端 JavaScript 约八千行,提示词模板约两千行。数据库采用 SQLite,包含角色、游玩轮次、消息、记忆、关系网等核心表结构。
## 三、难点与解决方案
第一个难点是 LLM 输出不稳定。LLM 在长上下文场景下容易遗漏指令或输出格式错误。解决方案是采用三层管线设计,每层职责单一、提示词精简;对关键输出做协议块解析和自动修补,解析失败时自动触发重试或修补