4.7 KiB
4.7 KiB
name, description, disable-model-invocation
| name | description | disable-model-invocation |
|---|---|---|
| write-next-chapter | 按已确认细纲、冻结事实和动态篇幅合同生成下一整章候选。作品需要续写下一章且输入合同完整时使用;不自行检索、不改规划、不把候选直接写入 Canonical。 | true |
续写(scenario: continuation | purpose: generation | 槽位: 写作→writer)
何时用:按大纲细纲产出下一整章候选。
元数据驱动(schema 怎么控制本功能)
- 章结构=字段合同:
candidateBody只承载正文,不包含 frontmatter;Canonical 写入层依据meta/schemas/chapter.yaml与scene.yaml组装章结构。 - 行为约束=字段值:文风(style 实例逐条)、人物言行(character.行事逻辑/说话方式/知情范围)、能力边界(power_system.代价限制)、地点规则(location.规则特例)——全部从上下文包字段读,不硬编。
输入(WriterCreativeInput v2)
可信 adapter 先校验完整的 WriterContext v1,再只通过 stdin 传入创作所需投影 WriterCreativeInput v2:
fineOutline:本章细纲硬骨架。narrativeState:目标章前的叙事状态。factConstraints:由卡索引和原文证据归纳出的事实约束。proseExcerpts:用于连续性与叙事声音的历史正文摘录。patternReferences:可参考的写作范式——每条给名字(name)、一句话摘要(summary)与写法要点(writingPoints);只供借鉴写法,不是事实约束。lengthContract:本章动态篇幅合同。styleConstraints:文风约束;生产组装时还包含prevent-ai-flavor生成的有限人感前置约束(规则/声音账指纹只留在完整 WriterContext,不投影给 writer)。
Writer 不接收 runId、权限信息、manifest、hash、候选版本、验收状态、实验臂、oracle 或目标章之后的内容,也不得自行检索;投影里没有的设定不应被当作已确认事实。
功能约束
- 每次生成前必须经过
prevent-ai-flavor合同组装;缺失时不伪造通用真人文风,保留规则为空的诚实合同并由章后诊断兜底。 - 一次一整章;篇幅以
lengthContract.targetChars/minChars/maxChars为唯一口径,由目标章之前有效 Canonical 章长中位数和细纲密度确定性计算,并受 2000–10000 汉字硬边界约束;不得再使用固定字数范围。 - 伏笔只按细纲动作执行:说埋就埋、说推就推、说收就收;不擅自提前回收,不新开大坑。
- 前情衔接与上一章末场景无缝;章末钩子按文风画像的钩子风格。
- 缺少细纲字段、
factConstraints字段或篇幅合同属于 adapter 输入错误,必须在模型调用前失败。factConstraints=[]在冻结检索确实没有可确认事实时是合法输入,不等于“事实已验证”或“可以自由补造”;候选中的未知事实仍由 semantic detector 标记为unknown/evidenceGaps。 - detector 发现事实或证据缺口后,由编排层补证并冻结新的上下文快照,再启动无会话继承的 Writer 调用;Writer 输出不承载补证请求或审查结论。
生产落库
- 生产编排走
run_writer_pipeline(机械门→语义 detector→补证/重写有限环),状态链用scripts/candidate_cas.py的PostgresCasStateStore持久化到example_candidate_cas(一次运行一条链,revision 单调,DB 触发器锁方向闭集);内存InMemoryCasStateStore仅供离线测试。 run_writer_with_receipt()只负责可信 writer adapter;生产编排在组装后调用assemble-context/scripts/persist_context_freeze.py,审查落库调用scripts/persist_writer_run.py。persist_writer_run.py要求本次run_id已有成功 writer 调用的 raw 指针,随后登记example_candidate(传入semantic_report时校验绑定并把semantic_status/semantic_report_sha256固化到候选行)、追加example_run_receipt和机械/语义两行example_quality_result;它不接受正文,Shadow→Canonical 仍只能由decide-candidate/scripts/write_canonical.py完成(接受通道 DB 级兜底复检state=passed且semantic_status=passed)。
输出合同
只返回严格 WriterDraft v2 JSON,不写文件:
{"candidateBody":"..."}
缺字段、多字段、非字符串或空正文都必须失败。可信 adapter 负责正文 NFC/LF 规范化、计算 hash、绑定运行元数据和篇幅校验,并生成 CandidateEnvelope v2;该信封只是待检测候选,不是 Candidate Decision Envelope。机械门与独立语义 detector 通过后才允许进入 Shadow。
红线
不调用工具,不读写文件,不持久化会话;细纲硬骨架不得删除、反转或提前回收;不得把新设定冒充已确认事实,不得自行给候选生成 hash、版本、验收或审查结论。