长篇写作辅助工具的核心问题在于上下文管理。单次生成文本并不困难,困难的是让章节、事实、角色设定、修改意见和历史版本能够互相参照,又能保持可追溯。
项目概览
结构上,main.py 接入 AstrBot,novel_writer/entry/commands 承担命令分发,services 承载项目、续写、改写、审校、导入导出等业务能力,storage 保存稿件、版本和项目状态,rag 与 extraction 处理检索资料和事实抽取。
用途是把长篇创作拆成项目、卷、章节、事实和版本。应用场景包括连载写作、设定维护、章节续写审校、草稿版本管理和多人协作前的材料整理。
本地优先
插件将项目资料放在本地目录中,章节、版本、事实记录、审阅报告分别保存。LLM 只参与生成、抽取和建议,项目状态由插件本身维护。这样可以让创作材料、修改历史和检索资料保持清晰边界。
章节版本采用追加保存方式,每次生成和修订都形成一个版本节点。事实抽取模块从章节中提取人物、地点、事件和约束,用于后续冲突检查。审阅模块负责给出节奏、设定一致性和语言问题建议。
命令面与 WebUI
聊天命令适合轻量操作,例如创建章节、生成草稿、查看版本。WebUI 适合处理项目列表、章节结构和长文本审阅。两者共用服务层,避免同一能力在两个入口重复实现。
实现原理是项目级状态驱动生成任务。章节生成前组装设定、历史摘要、事实库和检索证据;生成后写入版本;审校模块再产生冲突报告、修订建议和记忆补丁。这样可以把“生成文本”和“维护世界状态”分离。