Webnovel Writer 章节事实提取实现:accepted_events、state_deltas 与 entity_deltas 数据流
Webnovel Writer 章节事实提取实现accepted_events、state_deltas 与 entity_deltas 数据流【免费下载链接】webnovel-writer基于 Claude Code 的长篇网文辅助创作系统解决 AI 写作中的「遗忘」和「幻觉」问题支持 200 万字量级 连载创作。项目地址: https://gitcode.com/GitHub_Trending/we/webnovel-writerWebnovel Writer 是一个基于 Claude Code 的长篇网文辅助创作系统专门解决 AI 写作中的「遗忘」和「幻觉」问题。它的核心机制之一就是章节事实提取每写完一章系统通过accepted_events、state_deltas与entity_deltas三条数据流把本章发生的新事实结构化地沉淀进状态系统支撑 200 万字量级的连载创作。这篇文章面向新手带你完整看懂这三份数据的字段含义、生成流程和下游去向——不贴大段代码只用一张数据流图 几个最小 JSON 示例。为什么章节事实提取是长篇网文的命门长篇连载最怕的不是文笔而是写到第 80 章、200 章后 AI「失忆」角色战力悄悄漂移前后战力体系打架伏笔埋了不收、收了忘了埋新出场人物没有登记后续章节张冠李戴Webnovel Writer 的思路是每一章的事实必须「入账」而不是只存在于正文里。入账的入口就是事实提取产物extraction_result.json它由三个核心数组组成数据流一句话理解回答的问题accepted_events事件流水账这一章发生了什么state_deltas状态变化单谁的哪个属性从什么变成了什么entity_deltas实体登记卡谁新出场/变更了三者分工清晰事件是「流水」状态是「余额」实体是「账本上的账户」。accepted_events本章事实的「事件流水」accepted_events是提取结果里信息密度最高的部分。每条事件必须包含 5 个字段event_id章内稳定 ID如evt-ch100-001缺失时系统会按内容哈希自动生成见 chapter_commit_schema.pychapter当前章号event_type事件类型枚举见下subject主体实体的entity_id注意是 ID不是中文名payload该类型事件的必备字段event_type 共 10 种枚举定义在>{event_id: evt-ch100-001, chapter: 100, event_type: open_loop_created, subject: three_year_promise, payload: {content: 三年之约提及}}新手最容易踩的坑在这里别名自动归一写promise、breakthrough、mystery_introduced这类口语化类型系统会通过 EVENT_TYPE_ALIASES 自动映射成规范枚举不用死记硬背。subject 必须是 entity_id投影器按 ID 记账写「萧炎」而不是xiaoyan会导致事实记不到正确实体上。摘要里的伏笔必须同步入账每条埋设的伏笔都要对应一条open_loop_created事件否则伏笔管理形同虚设。state_deltas角色状态的「前后变化单」state_deltas记录属性级的变化每条子项固定 4 个字段entity_idfieldoldnew。{entity_id: xiaoyan, field: realm, old: 斗者, new: 斗师}两个新手友好细节来自>{entity_id: hongyi_girl, action: upsert, entity_type: 角色, payload: {name: 红衣女子}}entity_type枚举角色 | 组织 | 地点 | 物品 | 势力默认按「角色」处理payload里可带is_protagonist: true标记主角系统会同步主角状态配合entities_appeared本章出现的实体 置信度消歧规则很明确置信度 0.8 自动采用0.5–0.8 采用并告警 0.5 标记待人工——保证低置信猜测不会污染账本。数据流全链路从正文到五路投影理解单个字段后来看它们如何流动。整条链路分三步第 1 步 · 提取。由>CHAPTER_COMMIT.story-system/commits/唯一事实源头 ├── state → .webnovel/state.json角色状态、进度、伏笔 ├── index → index.db实体、关系、别名检索 ├── summary → summaries/章节摘要 ├── memory → memory_scratchpad.json长期记忆 └── vector → vectors.db向量检索值得新手注意的是事件路由表EventProjectionRouter不同事件类型流向不同投影而不是无脑全量广播——open_loop_created/open_loop_closed→ state memory伏笔既要看当前状态也要进长期记忆relationship_changed/artifact_obtained→ index vector重点是实体关系可检索world_rule_revealed→ memory vector世界观规则沉淀为知识也就是说accepted_events是「路由信号源」state_deltas走 state 投影entity_deltas触发 index 投影——三份数据在投影阶段各司其职。所有投影执行结果会追加到.webnovel/projection_log.jsonl哪一路没同步一眼可查。新手自检3 个快速验证方法看提交文件.story-system/commits/chapter_xxx.commit.json里meta.status是accepted且projection_status各路由不是pending/failed跑体检/webnovel-doctor会直接摆出主链与运行状态某路投影失败可用projections retry补跑data-agent 不负责修投影看面板/webnovel-dashboard只读展示 state、实体图谱与追读力数据如果新写章节的角色状态没更新基本可定位到 state 投影常见误区清单 ❌ 把accepted_events等字段包在extraction外层对象里 → schema 直接校验失败❌subject写角色中文名 → 事实记错实体❌ 伏笔只写进摘要不写事件 → 伏笔台账缺失后续无法回收❌ 让 contenteditable="false">【免费下载链接】webnovel-writer基于 Claude Code 的长篇网文辅助创作系统解决 AI 写作中的「遗忘」和「幻觉」问题支持 200 万字量级 连载创作。项目地址: https://gitcode.com/GitHub_Trending/we/webnovel-writer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考