一、技能重组(动作-对象命名) - 旧目录 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)按"框架与创作分开"未入本提交。
5.6 KiB
候选生成合同(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 个编号;空号允许,越界、倒序和重复不允许。
一项设定可以写多段,但必须围绕同一规则。正文自然交代以下内容,不使用整齐划一的表单腔:
- 规则是什么,在什么条件下生效。
- 谁因此获利,谁承担成本,失控时会发生什么。
- 它会在哪个阶段进入故事,通过什么事件让读者看见。
- 它怎样连接角色关系、资源压力、冲突或下一阶段入口。
达到篇幅门槛靠机制、差异、案例、后果和边界,不靠同义改写、套话、总结段或重复背景。
三、节奏与披露
候选先完成追读链,再扩写设定。三个早期里程碑都要同时具备“当期问题、行动目标、实际兑现、付出代价、章末新问题”。
- 前三章让读者看见异常和价值,不解释最终来源,不把终局阵营拉到台前。
- 前十章让优势经过对手或任务验证,同时暴露限制,完成第一个局部闭环。
- 前五十章完成初期主冲突和一次身份或能力抬升,再打开更大舞台。
- 后续阶段继续扩大问题尺度;早期劳动、训练、资源或关系线要换规模延续,不能用完即丢。
总设定写作者掌握的真相;阶段设定写读者当时能确认的事实。一个谜底可以在作者侧确定,但它的征兆、误判、局部解释和正式揭示必须分开放置。
四、独立性
候选子代理只能读取任务包、共同参考证据和自己的文件。不得搜索候选目录,不得读取其他候选,不得询问主会话“前一份怎么写”。主会话也不能把某份候选的优点转述给尚未完成的代理。
长文需要多轮时,在同一候选内部维护简短设计账本:已经确定的因果、数值、人物关系、阶段披露点和未完成章节。账本只属于该候选,续跑时与任务包一起提供。
五、表达复核
完成内容复核后再处理语言。表达层重点清理:
- 空泛评价代替具体事件,例如只说“极具张力”“层层递进”。
- 每段都用“不是……而是……”或三项排比制造伪力度。
- 所有设定项使用相同句式、相同结尾或固定总结句。
- 频繁使用“同时、此外、值得注意的是、总而言之”等连接词。
- 用旁白宣布人物多强、世界多危险,却没有任务、损失和对比支撑。
- 为了显得完整,提前解释终局真相或最终敌人的全貌。
复核可以改句子长短、用词和段落节奏,不能改事实、编号、目录、量级、代价或披露节点。
六、交付报告
所有候选过门后才生成比较报告。报告逐案回答:
- 前三章靠什么让读者继续。
- 前十章兑现了什么,暴露了什么限制。
- 前五十章在哪个事件形成初期高潮。
- 初期机制如何换规模进入中期和后期。
- 这套方案最大的收益、代价和失速风险是什么。
报告只供用户选择,不宣告胜者。用户没有拍板前,不合并、不落库、不写正文。
七、用户授权后的逐章统合
用户明确要求综合多份候选时,独立生成阶段结束,进入串行统合阶段。统合不再要求来源隔离,但每个代理仍只处理一个当前章节,不能提前读取后续来源章节。详细输入、权威顺序、输出格式与失败边界见 串行统合合同。
串行链的每个节点都要生成 fresh 会话。当前章只有经主会话审定并写入统合候选后,才可作为下一节点的权威前文。未审定的代理输出、分析摘要和舍弃方案不能进入下一节点上下文。