7.7 KiB
7.7 KiB
name, description, disable-model-invocation
| name | description | disable-model-invocation |
|---|---|---|
| 写下一章 | 通过“白名单探索→确定性回放→无工具生成”两阶段写手,按已确认细纲、冻结事实和动态篇幅合同生成下一整章候选。作品需要续写下一章且输入合同完整时使用;不改规划、不把候选直接写入 Canonical。 | true |
续写(scenario: continuation | purpose: generation | 槽位: 写作→writer)
何时用:按大纲细纲产出下一整章候选。
元数据驱动(schema 怎么控制本功能)
- 章结构=字段合同:
candidateBody只承载正文,不包含 frontmatter;Canonical 写入层依据meta/schemas/chapter.yaml与scene.yaml组装章结构。 - 行为约束=字段值:文风(style 实例逐条)、人物言行(character.行事逻辑/说话方式/知情范围)、能力边界(power_system.代价限制)、地点规则(location.规则特例)——全部从上下文包字段读,不硬编。
输入(冻结合同与两阶段投影)
可信 adapter 先校验完整的 WriterContext v1。生产入口不会把完整上下文直接交给生成阶段,而是分两步投影:
- 探索阶段只收到作品、目标章、候选版本、本轮人指令和只读工具白名单;当前登记工具可按需读取细纲、前文、实体事实、文风与已绑定范式,输出
writer-exploration-manifest-v1。 - 确定性回放按 manifest 重放只读工具,无模型参与;生成阶段收到
two-phase-generation-v1:explorationMaterials、lengthContract、styleConstraints、humanInstruction,以及仅供参考的探索笔记。正文事实只能来自explorationMaterials。
生成阶段不接收 runId、权限信息、manifest、hash、候选版本、验收状态、实验臂、oracle 或目标章之后的内容,也不再调用工具。探索阶段没有读到的设定不得被当作已确认事实。
功能约束
- 每次生成前必须经过
预防机器味合同组装;缺失时不伪造通用真人文风,保留规则为空的诚实合同并由章后诊断兜底。 - 一次一整章;写手输入的
generationLengthContract与可信 adapter 的outputContract分层:生产写手看到 4000–7000 汉字、目标 7000;机械接受要求汉字数严格大于 3000,并保留 10000 汉字系统上限。生成区间必须完整落在接受区间内,由 WriterContext 合同失败关闭。 - 伏笔只按细纲动作执行:说埋就埋、说推就推、说收就收;不擅自提前回收,不新开大坑。
- 前情衔接与上一章末场景无缝;章末钩子按文风画像的钩子风格。
- 缺少细纲字段、
factConstraints字段或篇幅合同属于 adapter 输入错误,必须在模型调用前失败。factConstraints=[]在冻结检索确实没有可确认事实时是合法输入,不等于“事实已验证”。写手可以在正文里设计新设定,但不得把新设定冒充已确认事实。 - detector 只把「对已有正典/前文章节的主张检索不够」标成
evidenceGaps,触发授权终态(补证/重写由人授权后以新运行继续)。写手新写出的设定进newSettingCandidates,不因此重写或禁写;与既有正典冲突才失败关闭。新设定是否进入正典由人决定。Writer 输出不承载补证请求或审查结论。
生产入口
Dashboard 与人工生产入口统一调用 scripts/produce_next_chapter.py。该入口只负责编排本 Skill 已登记的冻结、检索、writer、detector、CAS、候选落库和人闸步骤;不提供自动 accept。运行 artifacts 仍由只读看板按 run_id 读取。
- 写作节点的唯一执行形态是两阶段写手(写手合同不变,产出为
candidateBody信封):produce_next_chapter.py <章> --provider P --model M [--work-id W] [--thinking T] [--instruction ...]。探索阶段写作智能体带只读工具自主取材并产出探索清单;确定性回放按清单重放只读工具(无模型参与)得到写手实际依赖资料;生成阶段写作智能体无工具、单条成稿,生成输入只含回放资料与篇幅/文风合同,不含预组装上下文(scripts/two_phase_writer.py)。探索与生成各记独立派发运行,探索摘要落artifacts/<run_id>-exploration-summary.json;2026-08-23 候选 164 以该形态双门通过并经人采纳入正典。provider/model必须显式传入(模型策略归角色合同与调用方,不从环境变量推断);直调链已按 2026-08-23 对照裁决退出创作生成,对照实验走独立入口scripts/run_contrast_writer.py(产run_type=eval候选,四层机械不可接受)。
- 派发链的模型证据记在派发运行下,生产候选账本以显式
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>发起新运行,编排方按缺口补证重组上下文后继续。 - 当前只读工具层已经机械限制工具名、只读连接、查询表与返回规模,但尚未把任务包的
workId/targetChapter/asOf绑定到每次工具调用参数。这个范围绑定门建成前,两阶段写手只算样本链验证完成,不得宣称任意作品已满足严格时间冻结。
生产落库
- 生产编排走
run_writer_pipeline(机械门→语义 detector→单次收敛;证据缺口收敛为 AUTHORIZATION_REQUIRED 授权终态,补证/重写经人授权后以新运行继续),状态链用scripts/candidate_cas.py的PostgresCasStateStore持久化到example_candidate_cas(一次运行一条链,revision 单调,DB 触发器锁方向闭集);内存InMemoryCasStateStore仅供离线测试。 run_writer_with_receipt()只负责可信 writer adapter;生产编排在组装后调用准备任务上下文/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 仍只能由决定正文候选去留/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、版本、验收或审查结论。
复利合同
- 消费:已确认细纲、冻结上下文、文风/角色合同。
- 回写:
persist_writer_execution提交后经propose_lesson_dedup登记机械门通过/未通过(绑run_id、候选哈希);用户接受/丢弃效果信号归决定正文候选去留。