返回博客

构建实录 / 2026-07-25

505 章长篇怎么用 AI 写完:把小说生产做成有证据的门禁流水线

Novel Factory 系统架构示意图

2026-07-20,《开局一只百变怪,诸天改命》第 505 章合卷,全书完结。库内代号 hundun-jiyuan,分八卷加终章,最大的卷八 75 章,终章 496-505 共 10 章。

这篇不讲剧情,讲工程。因为真正难的地方不是"让模型写一章",而是让它连续写五百章还不崩

一、长篇的真正敌人是漂移,不是文笔

写一章,随便哪个模型都能写。问题出在第 300 章:模型不记得第 47 章埋的伏笔,把一个死掉的角色写活,或者悄悄改了世界观设定。人类作者靠记忆和大纲,模型靠上下文——而上下文装不下这一百七十多万字。

所以这套系统的核心不是"写作提示词",是一套让事实不能被随便改动的机制

正史(canon)和讨论稿物理隔离。立项、候选方案、市场定位这些都放在 preflight/,产物不能直接进入章节生产。要成为正史,必须过 Canon Gate:decision=pass 之后才 canonize 同步到 canon/。章节生产唯一可读的来源就是 canon/ 加上动态记忆。

改设定不能顺手改。改大纲、人设、世界观、伏笔、时间线、章树,都要先走 Change Request 做变更等级判断。这条规则的意义是:模型没有权限悄悄改设定,人也不能顺手改——所有改动留痕。

二、我修掉了一个"假装通过"的实现

这是整个项目里我最想讲的一件事。

早期版本的 finalize_chapter.mjs 里,Kimi、DeepSeek 和 Memory Gate 的通过状态是可以被伪造的——代码在某些路径下会直接标记为通过,而不是真的等到审核结果。这意味着一章可能在"三道门禁全绿"的记录下进入正式目录,而实际上一道都没跑。

发现之后的修法不是加个警告,是从结构上让它不可能:

final_candidates/chapters/ 物理隔离,Final Gate 通过前绝不覆盖正式章。Final Gate 使用正文、合同和辅助审核的 SHA-256 绑定的 evidence JSON——证据里记的是内容哈希,对不上就是没过。apply_projections.mjs 成为 Memory Gate 的唯一通过路径,别的地方写不进去。

这件事的教训对任何 AI 流水线都通用:当"通过"只是一个可以被写入的状态字段时,它迟早会被写入。 让通过必须绑定到内容哈希上,伪造的成本才会高于老实跑一遍。

三、质量投入必须分层,全量审是浪费

五百章,每章都跑全量审核,token 成本和时间都不可接受。所以按章分层:

普通章(normal)默认不跑 Kimi 和 DeepSeek,只走基础检查加 Codex 终审。important 和 critical 都要求 DeepSeek 过一遍,但档位不同:critical 走 deep_review 深审,important 走 quick_review 快审。Kimi 是显式可选的补丁层,不是默认环节。

这个策略的前提是章树里预先标好了哪些章是关键章——情绪高点、真相回流、终局这些。终章 10 章全部是 important/critical 档,所以全部过了 DeepSeek 这一道:其中 7 章深审、3 章快审。

字数也有硬约束:统一 4000 字策略,正常区间 3800-4200,硬范围 3600-4800。终章 10 章均值约 3860 字,全部落在正常区间下限之上,零 hard_fail。

四、三道审,以及它们真实的通过率

终章这 10 章的质量线是完整记录的,我把真实数据放出来,因为它比"AI 写作很强"这种话有用:

doctor 结构检查:505/505 pass,active issues = 0。这里要补一句限定,否则容易被读成「全书都有哈希证据」:第 1-318 章是在 V3.1 流水线之前完成的,那时还没有哈希绑定的终审证据,这笔债被我签字确认为 acknowledged debt、单独计数,Dashboard 里归为 legacy_adopted。SHA-256 证据链实际覆盖的是第 319 章之后。

DeepSeek 深审:10 章全部 pass、零 issues。有一次第 496 章首跑 fetch failed,重试即过——这是网络瞬断,不是质量问题,但记录里如实留着。

gpt-5.5 final_review 终审:一次过 6 章(496/497/499/500/502/504);REVISE 一轮后过 3 章REVISE 两轮 1 章(501)。

也就是说,即便前两道都过了,终审仍然打回了 4 章。打回的理由很具体:498 是钩子句字面对不上;503 是钩子句后面多写了一句(钉死的钩子句后面不允许再追加任何句子);505 是终句前缺一个具体的开放问题;501 是三句抗命宣言必须落在一个连续引块里,而不是拆开。

这就是为什么单个模型的自我评估不能当门禁。 三道审各有各的盲区,DeepSeek 说没问题的章,终审能挑出四处结构性问题。

五、工艺经验是沉淀下来的,不是记在脑子里

每次 REVISE 都会产出一条工艺记录,写进报告:钉死的钩子句后不得追加任何句子;多句钉死宣言必须一个连续引块落地;全书末章也要在终句前形成具体开放问题再落终句(终审通例不豁免完结章)。

这些规则一开始没人知道,是被打回四次之后才写下来的。下一本书开写时,它们是章树阶段就要满足的约束,而不是终审时才发现的问题。

六、现在的真实状态

全书 505 章正文、合同、审稿、终审、story commit、memory 投影全链闭环,doctor 505/505 pass——其中哈希绑定证据覆盖 319 章之后,前 318 章是已确认豁免的历史债。

发布这块我如实说:截至 2026-07-20,1-129 章已在番茄发布(后台按日三更排期,实际发布数还在往前走);139-318 章已入草稿箱待排期,2026-07-17 做过一次登录态全量核验,180 篇连续零缺号零重复;319 之后待录入。排期和发布节奏还没定,这是产品决策不是工程问题。所以这不是一个"写完即爆款"的故事——它只是一条跑通了的生产线,产出物的市场表现是另一回事。

写在最后

回头看,这个项目真正的产出不是那 505 章,是那套让 505 章能被生产出来的约束:正史与草稿隔离、改动走变更请求、通过状态绑定内容哈希、质量投入按重要性分层、每次返工都沉淀成下次的前置规则。

把这套东西换个领域——代码、视频、报告——大部分约束仍然成立。AI 能不能做长期、大规模的产出,瓶颈从来不在单次生成质量,在你有没有一套让它不能作弊、也不会漂移的流程。