74 lines
7.3 KiB
Markdown
74 lines
7.3 KiB
Markdown
---
|
||
name: write-next-chapter
|
||
description: 按已确认细纲、冻结事实和动态篇幅合同生成下一整章候选。作品需要续写下一章且输入合同完整时使用;不自行检索、不改规划、不把候选直接写入 Canonical。
|
||
disable-model-invocation: 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`:给写手看的生成篇幅合同;生产续写为 4000–7000 汉字,目标 7000。
|
||
- `styleConstraints`:文风约束;生产组装时还包含 `prevent-ai-flavor` 生成的有限人感前置约束(规则/声音账指纹只留在完整 WriterContext,不投影给 writer)。
|
||
|
||
Writer 不接收 `runId`、权限信息、manifest、hash、候选版本、验收状态、实验臂、oracle 或目标章之后的内容,也不得自行检索;投影里没有的设定不应被当作已确认事实。
|
||
|
||
## 功能约束
|
||
|
||
0. 每次生成前必须经过 `prevent-ai-flavor` 合同组装;缺失时不伪造通用真人文风,保留规则为空的诚实合同并由章后诊断兜底。
|
||
1. 一次一整章;写手输入的 `generationLengthContract` 与可信 adapter 的 `outputContract` 分层:生产写手看到 4000–7000 汉字、目标 7000;机械接受要求汉字数严格大于 3000,并保留 10000 汉字系统上限。生成区间必须完整落在接受区间内,由 WriterContext 合同失败关闭。
|
||
2. 伏笔只按细纲动作执行:说埋就埋、说推就推、说收就收;不擅自提前回收,不新开大坑。
|
||
3. 前情衔接与上一章末场景无缝;章末钩子按文风画像的钩子风格。
|
||
4. 缺少细纲字段、`factConstraints` 字段或篇幅合同属于 adapter 输入错误,必须在模型调用前失败。`factConstraints=[]` 在冻结检索确实没有可确认事实时是合法输入,不等于“事实已验证”。写手可以在正文里设计新设定,但不得把新设定冒充已确认事实。
|
||
5. detector 只把「对已有正典/前文章节的主张检索不够」标成 `evidenceGaps`,触发授权终态(补证/重写由人授权后以新运行继续)。写手新写出的设定进 `newSettingCandidates`,不因此重写或禁写;与既有正典冲突才失败关闭。新设定是否进入正典由人决定。Writer 输出不承载补证请求或审查结论。
|
||
|
||
## 生产入口
|
||
|
||
Dashboard 与人工生产入口统一调用 `scripts/produce_next_chapter.py`。该入口只负责编排本 Skill 已登记的冻结、检索、writer、detector、CAS、候选落库和人闸步骤;不提供自动 accept。运行 artifacts 仍由只读看板按 run_id 读取。
|
||
|
||
- 写作节点有三种执行模式(写手合同相同,产出同为 `candidateBody` 信封):
|
||
- `--two-phase --provider P --model M [--thinking T]`:**已验证的生产形态**(2026-08-23 候选 164 双门通过并经人采纳入正典)。两阶段写手(`scripts/two_phase_writer.py`):探索阶段写作智能体带只读工具自主取材并产出探索清单;确定性回放按清单重放只读工具(无模型参与)得到写手实际依赖资料;生成阶段写作智能体无工具、单条成稿,生成输入只含回放资料与篇幅/文风合同,不含预组装上下文。探索与生成各记独立派发运行,探索摘要落 `artifacts/<run_id>-exploration-summary.json`。
|
||
- `--dispatch-writer`:单阶段派发(探索与生成同会话的过渡形态,已被两阶段取代,属链路清理对象)。
|
||
- 缺省:直调链 `run_writer_with_receipt`(对照裁决后只用于对照实验与回放评测,不再是创作生成的生产形态)。
|
||
- 派发链的模型证据记在派发运行下,生产候选账本以显式 `writer_raw_ref` 关联,不双套记账;一章一组稳定会话(`writer-explore-work<W>-ch<C>` / `writer-gen-work<W>-ch<C>`,复用=继续原写作智能体)。
|
||
- 授权继续:管线停在 `AUTHORIZATION_REQUIRED` 时留痕 `artifacts/<run_id>-authorization-request.json`;人授权后以 `--continue-from <前序 run_id>` 发起新运行,编排方按缺口补证重组上下文后继续。
|
||
|
||
## 生产落库
|
||
|
||
- 生产编排走 `run_writer_pipeline`(机械门→语义 detector→单次收敛;证据缺口收敛为 AUTHORIZATION_REQUIRED 授权终态,补证/重写经人授权后以新运行继续),状态链用 `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` 要求成功 writer 调用的 raw 指针(直调链查本运行调用账;派发链由编排显式传 `writer_raw_ref`),随后登记 `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,不写文件:
|
||
|
||
```json
|
||
{"candidateBody":"..."}
|
||
```
|
||
|
||
缺字段、多字段、非字符串或空正文都必须失败。可信 adapter 负责正文 NFC/LF 规范化、计算 hash、绑定运行元数据和篇幅校验,并生成 `CandidateEnvelope v2`;该信封只是待检测候选,不是 Candidate Decision Envelope。机械门与独立语义 detector 通过后才允许进入 Shadow。
|
||
|
||
## 红线
|
||
|
||
不调用工具,不读写文件,不持久化会话;细纲硬骨架不得删除、反转或提前回收;可以设计新设定但不得冒充已确认事实,不得自行给候选生成 hash、版本、验收或审查结论。
|
||
|
||
## 复利合同
|
||
|
||
- **消费**:已确认细纲、冻结上下文、文风/角色合同。
|
||
- **回写**:`persist_writer_execution` 提交后经 `propose_lesson_dedup` 登记机械门通过/未通过(绑 `run_id`、候选哈希);用户接受/丢弃效果信号归 `decide-candidate`。
|