一、技能重组(动作-对象命名) - 旧目录 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)按"框架与创作分开"未入本提交。
7.4 KiB
name, description, disable-model-invocation
| name | description | disable-model-invocation |
|---|---|---|
| assemble-context | 按冻结点从 PostgreSQL 读取可信来源,组装可审计上下文,并为 writer、detector、judge、planner 或 extractor 生成最小投影。创作或评测调用模型前需要受控上下文时使用。 | true |
统一读取器
本 skill 只落实读取与投影,不另行定义产品设计。四层语义、WriterContext 和评测边界以专题-03为 SoT;字段授权与统一读取规则以专题-06为 SoT。
输入
workId、targetChapter、asOf、scenario、purpose。- 已确认细纲、叙事状态、来源授权快照、卡索引版本、原文索引版本和上下文预算。
asOf必须早于目标章;所有历史来源必须能证明chapter <= asOf。
scenario 映射功能链分类:生成类为 generation,抽取类为 extraction,规划类为 planning,检测类为 detection,质量评审使用对应 writer 或 evaluator 的专用投影。此分类只标 scenario 走哪条功能合同,不是 WriterContext 的 purpose 字段——写手正文生成投影的 purpose 固定为 production(评测用 evaluation、诊断用 diagnostic),与 writer_contract.py 的枚举一致,传其它值会被安全拒绝。purpose 决定字段授权,scenario 决定功能合同,两者不得互相替代。
PostgreSQL 可信读取链
- 冻结检索计划:从已确认细纲的实体、关系和硬事件生成 RetrievalPlan。查询、过滤器、索引版本、预算和稳定排序在模型调用前固定。
- 卡只作索引:生产只读 active Canonical 卡和有效 binding。卡提供实体身份、当前状态和原文指针;卡摘要本身不能替代历史正文,也不能直接成为
supported/pass证据。 - 按指针回读原文:在
REPEATABLE READ READ ONLY事务中按sourceVersion/sourceRefs/stateAsOf回读 Canonical block。缺少可验证指针的内容只能作为未验证索引提示,不能进入事实证据。 - 双证据组装:连续前四章全文构成近期基线;卡指针召回的历史正文作为补充并按不可变来源去重。
factEvidence只接受冻结历史原文、正式设定、Canonical 状态或细纲明确声明的新事实,并保留各自权威引用。 - 确定性冻结:按
score DESC, sourceVersion ASC, sourceId ASC, sourceOffset ASC排序,生成完整WriterContext v1、RetrievalManifest、来源省略原因和上下文 hash。预算裁剪必须可审计,不能静默丢失硬约束或连续正文基线。 - 冻结落库(assemble 之后,调用方负责):
assemble_context()算出冻结后,调用方(生产编排 / 回放编排)调scripts/persist_context_freeze.py,把冻结清单(manifestSha256/contextSha256/纳入来源/省略项/预算)落一行example_context_freeze(append-only,manifestSha256 幂等)。组装器本身不碰库(合同如此),落库是调用方的事;回执表的context_sha256连本表context_sha256列。
对应机械实现:scripts/writer_contract.py、scripts/retrieve_writer_sources.py、scripts/assemble_writer_context.py、scripts/persist_context_freeze.py(冻结落库)。其中 retrieve_writer_sources.py 的冻结来源校验、内容泄漏审计与冻结原文只读装载复用 snapshot skill(build_snapshot.py/check_snapshot.py/audit_leakage.py/load_reference_work.py),单向向下依赖,不复制 SQL 或第二套权限语义。
四层稳定语义
| 层 | 稳定含义 | 主要内容 | 裁剪纪律 |
|---|---|---|---|
| L0 当前任务 | 本次目标与输出合同 | 目标章、细纲、叙事状态、篇幅合同、用户本次约束 | 不得裁掉硬约束;易变指令尾置 |
| L1 历史正文 | 叙事连续性证据 | 连续前四章全文、按卡指针回读的补充原文 | 先保连续基线;补充证据按预算稳定裁剪 |
| L2 作品事实 | 冻结事实与状态 | Canonical 卡索引、正式设定、叙事状态、已声明新事实 | 逐字段授权,不倾倒整库,不把未来状态降格为当前事实 |
| L3 授权参考 | 非作品事实的授权资料 | 范式、样张、外部参考及其授权快照 | 只在 scenario 明确需要时加入,不得反向污染抽取事实 |
四层是编排器的审计结构,不等于把四层完整对象都交给模型。完整 WriterContext 留在可信边界,模型只收到角色专用投影。
角色可见性
| 角色 | 模型输入 | 明确不可见 |
|---|---|---|
| writer | WriterCreativeInput v2:fineOutline、narrativeState、factConstraints、proseExcerpts、patternReferences、lengthContract、styleConstraints |
runId、权限、manifest、hash、候选版本、实验臂、oracle、评审结论、检索工具 |
| semantic detector | semantic-detector-input-v3 的模型投影:当前候选、细纲/硬约束、事实证据、历史原文证据、asOf |
真实实验臂、raw 路径、oracle、其他候选/评委、输入与候选 hash、receipt |
| blind judge | writer-blind-input-v4 的模型投影:匿名候选正文、共同细纲、oracle 断言、通用指标与当前场景评分策略 |
真实 A/B/C、卡注入、证据策略、候选 hash、reviewer 身份、raw、其他评委结果 |
| planner | 冻结规划视图;只在 planning 授权下读取全局方向和未来规划 | 未授权原文、目标章之后的参考事实、评测答案 |
| extractor | 待处理原文、schema 合同和判重所需的既有知识 | 范式参考、未来内容、无来源推断 |
writer 的 factConstraints=[] 在冻结读取确实没有可确认事实时合法,但不代表事实已验证。候选中无法由现有证据判断的主张由 semantic detector 返回 unknown/evidenceGaps,由编排器补证、冻结新上下文并启动 fresh writer 调用。
可信绑定
- writer 只返回
WriterDraft v2的candidateBody;adapter 生成 CandidateEnvelope v2,并绑定运行身份、候选版本、正文 hash 与上下文 hash。 - semantic detector 和 blind judge 只返回各自模型草稿;字符 offset、输入/报告 hash、模型回执和最终状态均由 adapter 计算。
- A/C 单变量回执比较
build_writer_creative_input()的结果,只允许预注册卡处理与证据策略导致factConstraints、proseExcerpts与patternReferences差异;A 的patternReferences恒空,B/C 使用同一组冻结公共范式卡,细纲、叙事状态、篇幅和风格必须一致。
回显与存储
- 安全回显只包含来源 ID/版本、章号、字符数、裁剪原因、状态和 hash,不包含原文、完整 prompt/response 或供应商原始响应。
- 需要保留的 raw 输入、prompt、response、候选和 evaluator-only oracle 只能进入仓库外受控 raw vault,受显式授权、租约、保留期和清理回执约束。
- 不生成或读取旧文件式上下文;PostgreSQL Canonical 数据与冻结回执才是运行事实。
红线
- 模型不得自行访问数据库、搜索卡、回读文件或扩张检索计划。
- 不得把卡摘要当正文替代品,不得因为有卡减少历史原文检索。
- 不得把完整 WriterContext、raw 路径、授权密钥、真实实验臂或未来信息塞给模型。
- 来源、字段授权、冻结点、hash 或预算任何一项无法验证时失败关闭,不靠重试或人工说明绕过。