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

7.4 KiB
Raw Blame History

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 可信读取链

  1. 冻结检索计划:从已确认细纲的实体、关系和硬事件生成 RetrievalPlan。查询、过滤器、索引版本、预算和稳定排序在模型调用前固定。
  2. 卡只作索引:生产只读 active Canonical 卡和有效 binding。卡提供实体身份、当前状态和原文指针;卡摘要本身不能替代历史正文,也不能直接成为 supported/pass 证据。
  3. 按指针回读原文:在 REPEATABLE READ READ ONLY 事务中按 sourceVersion/sourceRefs/stateAsOf 回读 Canonical block。缺少可验证指针的内容只能作为未验证索引提示,不能进入事实证据。
  4. 双证据组装:连续前四章全文构成近期基线;卡指针召回的历史正文作为补充并按不可变来源去重。factEvidence 只接受冻结历史原文、正式设定、Canonical 状态或细纲明确声明的新事实,并保留各自权威引用。
  5. 确定性冻结:按 score DESC, sourceVersion ASC, sourceId ASC, sourceOffset ASC 排序,生成完整 WriterContext v1、RetrievalManifest、来源省略原因和上下文 hash。预算裁剪必须可审计,不能静默丢失硬约束或连续正文基线。
  6. 冻结落库(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 或预算任何一项无法验证时失败关闭,不靠重试或人工说明绕过。