- example_planning_section(规划/细纲/设定,书级/章级双部分唯一索引,shadow→confirmed) + example_context_freeze(冻结清单,append-only,manifestSha256 幂等) - persist_context_freeze.py:assemble_context 之后由调用方落冻结(manifest/context哈希+纳入来源+省略项+预算), 组装器保持不碰库(合同如此);dry-run 已验证 - read-context SKILL.md 增冻结落库挂点说明
7.4 KiB
name, description, disable-model-invocation
| name | description | disable-model-invocation |
|---|---|---|
| read-context | 统一创作数据读取器的操作合同。按冻结点从 PostgreSQL 读取可信来源,组装完整审计上下文,再为各角色生成最小可见投影。 | 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 或预算任何一项无法验证时失败关闭,不靠重试或人工说明绕过。