zizi b0bc7a8745 框架: 技能按动作-对象重组 + 先审后入创作闭环
一、技能重组(动作-对象命名)
- 旧目录 clean/confirm/continuation/db/detect/embed/… 重组为
  clean-book-text/decide-candidate/write-next-chapter/access-database/
  check-content-consistency/embed-knowledge/…(git 识别为 rename,内容保持)
- agents/*.md、AGENTS.md/CLAUDE.md 收编、example_skill 登记表同步新名

二、先审后入创作闭环(本次核心)
正文接受从"机械门一过就写正典"改为"机械门+语义审查双通过+用户批准+单事务原子提交",
DB 级兜底,编排层跳步即被硬拒。
- candidate_cas.py + example_candidate_cas(109):持久化 CAS 状态链
- fact_delta.py + example_fact_delta/example_fact_ledger(106):结构化事实增量,
  模型只提六型闭集增量+正文证据引文,仅用户批准的增量随正文同事务入账本
- projection_registry.py + example_projection_run(107):投影登记与恢复
- acceptance_state.py:接受前置实时状态重读
- lesson_registry.py + example_lesson(108):经验升格链,禁止自动升格
- DDL 105:example_candidate 增 semantic_status/semantic_report_sha256
- write_canonical.accept:语义兜底+同事务合并增量+登记投影;
  run_writer_pipeline/persist_writer_run/run_writer_semantic_detector/step2 接入全链
- claude_runtime:兼容新 CLI modelUsage 信息字段

三、审查修复(独立子代理四维审查后)
- 事实增量 propose→approve 翻态正道,不撞唯一键
- 冻结配置探针重刷(CLI 2.1.211→2.1.231 漂移),profileSha256/adapterVersion 再登记
- 可视化合同悬空路径/五六空间矛盾、 SoT 旧技能名漂移、行尾空白清理

测试:离线 65 套 + 真实库集成 5 套(CAS/接受故障注入/事实增量/投影/经验升格)+ 回放 79 项全绿。
创作内容(docs/design、生成正文 artifacts)按"框架与创作分开"未入本提交。
2026-08-14 10:24:08 +08:00

5.6 KiB
Raw Blame History

候选生成合同(design-story-foundation/v1)

本合同在派发作品设定候选前读取。它定义共同输入、候选结构和复核口径,不保存任何具体作品设定。

一、冻结任务包

主会话先组装任务包,再复制给全部候选子代理。只有 candidateId 和 outputPath 可以因候选不同而变化。

字段 内容
contractVersion 固定为 design-story-foundation/v1
workTitle 当前作品名
sotPath 唯一前期设计文档路径
rootSetting 根设定全文,不用摘要替代
conversationRecord 与作品有关的用户原话,按时间排序
decisionLedger 每项标为已接受、已否决、待定或被新要求覆盖
unresolvedQuestions 会实质改变故事方向、仍需用户拍板的问题
retentionMilestones 前三章、前十章、前五十章及后续阶段落点
disclosureRules 作者总设定与读者阶段认知的分界
referenceEvidence 大纲直证、正文归纳、可借鉴、不可照搬四栏
sectionContract 统一二级标题、顺序、预留编号号段
quantityContract 每章 10—50 项、全文至少 100 项、有效字符下限
candidateId 当前子代理唯一编号
outputPath 当前子代理唯一输出文件

对话不能只给总结。原话用于防止整理时改义,decisionLedger 用来阻断已经否决的旧方案复活。出现矛盾时,子代理不得自行选择;它只按任务包里已写明的优先级执行,并把真正未决项留给用户。

二、统一文档形状

每份候选只允许一个一级标题。正文使用任务包冻结的二级标题,不增设三级标题。每个内容章紧跟一个号段标记:

## 一、示例章节

<!-- S001-S050 -->

- **S001|设定名称:** 设定正文。

目录名称、顺序、号段必须逐字一致。候选序号可以出现在一级标题,不能进入共同目录。每章实际使用 10—50 个编号;空号允许,越界、倒序和重复不允许。

一项设定可以写多段,但必须围绕同一规则。正文自然交代以下内容,不使用整齐划一的表单腔:

  • 规则是什么,在什么条件下生效。
  • 谁因此获利,谁承担成本,失控时会发生什么。
  • 它会在哪个阶段进入故事,通过什么事件让读者看见。
  • 它怎样连接角色关系、资源压力、冲突或下一阶段入口。

达到篇幅门槛靠机制、差异、案例、后果和边界,不靠同义改写、套话、总结段或重复背景。

三、节奏与披露

候选先完成追读链,再扩写设定。三个早期里程碑都要同时具备“当期问题、行动目标、实际兑现、付出代价、章末新问题”。

  • 前三章让读者看见异常和价值,不解释最终来源,不把终局阵营拉到台前。
  • 前十章让优势经过对手或任务验证,同时暴露限制,完成第一个局部闭环。
  • 前五十章完成初期主冲突和一次身份或能力抬升,再打开更大舞台。
  • 后续阶段继续扩大问题尺度;早期劳动、训练、资源或关系线要换规模延续,不能用完即丢。

总设定写作者掌握的真相;阶段设定写读者当时能确认的事实。一个谜底可以在作者侧确定,但它的征兆、误判、局部解释和正式揭示必须分开放置。

四、独立性

候选子代理只能读取任务包、共同参考证据和自己的文件。不得搜索候选目录,不得读取其他候选,不得询问主会话“前一份怎么写”。主会话也不能把某份候选的优点转述给尚未完成的代理。

长文需要多轮时,在同一候选内部维护简短设计账本:已经确定的因果、数值、人物关系、阶段披露点和未完成章节。账本只属于该候选,续跑时与任务包一起提供。

五、表达复核

完成内容复核后再处理语言。表达层重点清理:

  • 空泛评价代替具体事件,例如只说“极具张力”“层层递进”。
  • 每段都用“不是……而是……”或三项排比制造伪力度。
  • 所有设定项使用相同句式、相同结尾或固定总结句。
  • 频繁使用“同时、此外、值得注意的是、总而言之”等连接词。
  • 用旁白宣布人物多强、世界多危险,却没有任务、损失和对比支撑。
  • 为了显得完整,提前解释终局真相或最终敌人的全貌。

复核可以改句子长短、用词和段落节奏,不能改事实、编号、目录、量级、代价或披露节点。

六、交付报告

所有候选过门后才生成比较报告。报告逐案回答:

  1. 前三章靠什么让读者继续。
  2. 前十章兑现了什么,暴露了什么限制。
  3. 前五十章在哪个事件形成初期高潮。
  4. 初期机制如何换规模进入中期和后期。
  5. 这套方案最大的收益、代价和失速风险是什么。

报告只供用户选择,不宣告胜者。用户没有拍板前,不合并、不落库、不写正文。

七、用户授权后的逐章统合

用户明确要求综合多份候选时,独立生成阶段结束,进入串行统合阶段。统合不再要求来源隔离,但每个代理仍只处理一个当前章节,不能提前读取后续来源章节。详细输入、权威顺序、输出格式与失败边界见 串行统合合同。

串行链的每个节点都要生成 fresh 会话。当前章只有经主会话审定并写入统合候选后,才可作为下一节点的权威前文。未审定的代理输出、分析摘要和舍弃方案不能进入下一节点上下文。