80 lines
11 KiB
Markdown
80 lines
11 KiB
Markdown
---
|
||
name: read-context
|
||
description: 组装智能体上下文包——统一创作数据读取器(专题-06 §7)的阶段一实现。任何智能体要作品上下文,必须经这套流程;按 schema 的 aiContext 逐字段裁剪并落回显。
|
||
---
|
||
|
||
# 组装上下文(统一读取器)
|
||
|
||
SoT 对齐:包结构=专题-03 §4.2 **四层上下文**;字段级 aiContext 裁剪=专题-06 §7 统一读取器。
|
||
|
||
**输入**:作品名、功能(scenario,专题-03 §4.1:continuation/rewrite/expansion/polish/extraction/full_parse/planning/fine_outline/validation/consistency_check/quality_gate)、目标(如"写第7章")。**用途(purpose)由 scenario 映射**——生成类→`generation`,抽取类→`extraction`,规划类(`planning`/`fine_outline`)→`planning`,检测→`detection`,quality_gate→基线包即 writer 视图;purpose 定字段可见集(aiContext),scenario 定功能指令段(`meta/chains/`)与 L0 形态,两者不混。
|
||
|
||
## 步骤
|
||
|
||
正文 `continuation` 的 v1 流程在通用四层裁剪之前先执行以下可信读取链,禁止跳步:
|
||
|
||
1. **固定检索计划**:从已确认细纲的人物、关系、物品、地点、力量体系和硬事件生成 `RetrievalPlan`;计划身份排除 `runId`,查询范围在写手启动前冻结。
|
||
2. **卡索引**:生产只调用 search skill 的 `work` 授权面,只读 active Canonical entity 和有效 binding;参考作品回放只读预注册 `upgrade_book` 评测卡,固定 `productionRetrievalEligible=false`。
|
||
3. **原文回读**:抽取卡只保留 `sourceVersion/sourceRefs/stateAsOf` 索引。每条历史事实必须顺着块级来源指针,在 `REPEATABLE READ READ ONLY` 快照内读取 `chapter <= asOf` 的原文;缺少指针的卡只记 `unverifiedIndexHint`,不能单独进入事实证据。
|
||
4. **双证据组装**:连续前四章全文先进入 `proseEvidence` 基线,再按卡指针补充历史原文并去重;`factEvidence` 只接收冻结历史原文、正式设定、Canonical 状态和细纲声明的新事实。正式设定、Canonical 状态、细纲新事实必须保留各自不可变权威引用,不强造历史原文。
|
||
5. **冻结与回显**:按 `score DESC, sourceVersion ASC, sourceId ASC, sourceOffset ASC` 稳定排序,生成 JSON `WriterContext v1` 和 Markdown `RetrievalManifest`。清单与上下文身份排除运行 ID、时间戳和执行节点;预算裁剪必须回显来源与 `token_budget` 原因。
|
||
|
||
对应实现:`scripts/writer_contract.py`、`scripts/retrieve_writer_sources.py`、`scripts/assemble_writer_context.py`。写手只能接收最终冻结的 `WriterContext v1`,不得直接接收卡片全文,也不得自行搜索或回读文件。
|
||
|
||
1. 读 `works/<书>/装配.yaml`:拿槽位绑定与知识绑定。**未绑定的 `knowledge/` 内容一律不读**(=Layer 3 的授权门)。
|
||
2. 读 `meta/schemas/` 相关型的 `aiContext`,得出本用途的可见字段集:`true` 可见;`false` 不可见;`[用途…]` 仅列出的用途可见。
|
||
3. 按**四层**取数并逐字段裁剪——层是分组骨架,取数规则按**来源**逐条执行:
|
||
- **Layer 0 当前输入**(不可省略,每回合必变):
|
||
- 用户本回合意图:指令原文,不改写不转述;
|
||
- 操作对象:作品/章号/选区与 expectedRevision(改写场景必带);
|
||
- 本章细纲:出自大纲当前章条目;
|
||
- 输出合同:字数区间/frontmatter 要求/新设定申报块等(按 agent 的产出合同);
|
||
- L0 内部同按稳定度排:细纲在前(同章多轮重生成不变),本回合修改意见最后。
|
||
- **Layer 1 近邻正文**(正文 continuation v1 不可省略):
|
||
- 目标章之前连续四章**全文**作为已验证基线;作品不足四章时从第一章开始,不重复;
|
||
- 卡索引命中的来源原文作为补充,按不可变来源引用去重并稳定排序;
|
||
- `状态.md` **全文**(伏笔台账/时间线/角色最新状态)——"叙事现在时"快照,归近邻层。
|
||
- **Layer 2 作品事实**(一致性/规划不可省略;只读已确认):
|
||
- **设定**:`设定.md` 四节;`generation` 用途裁掉「谜底与真相」「结局方向」「弃案记录」等非 generation 字段;
|
||
- **大纲**:`generation` 只取主线一句话+当前卷细纲+近三章细纲;「未来卷粗纲」仅 `planning` 可见;
|
||
- **知识卡**:只取本章细纲出场清单涉及的人物/关系卡,及其**关联的地点/势力/功法/物品/事件卡**,**不整库倾倒**(planner/detector/extractor 按差异矩阵取全量索引);卡内字段同按 aiContext 裁——「创作备忘」永不进包,「成长弧线」续写不进(仅 planning/detection);**「演变历程」(各实体型完整历史层的里程碑数组)续写不进(仅 detection/extraction)**——对续写关闭不是防剧透(台阶都已发生),而是怕上万字明细撑爆上下文;续写只需当前态+「演变概括」一句梗概,一致性检查才读全历史查跳级穿帮。
|
||
- **Layer 3 授权资料**(按场景可省):
|
||
- **公共范式**:仅 `装配.yaml` 已绑定的库;按本章场景类型选卡(如打斗章带打斗卡),不整库带入;extractor/judge 此层关闭(见差异矩阵)。
|
||
4. 产出**上下文包**——两个顺序必须分开:
|
||
- **预算序**(谁不许被裁,对齐专题-03 §4.2):L0 必须完整保留;超长先摘要化 L3→L2,再截 L1,永不动 L0;
|
||
- **拼装序**(物理顺序,按稳定度递减,吃 prompt 前缀缓存):**通用系统位**(一句极简声明,全 agent 相同) → **章级基线包**(跨 agent 共享缓存段)=L2 作品事实+L1 近邻正文+L0 稳定部(本章细纲),**按 writer 的 generation 可见集组装**(最保守视图:底牌全闭) → **agent 身份段**(角色指令=agent prompt 正文,后置于基线包) → **功能指令段**(本次 scenario 的功能 skill,其余功能的指令不进上下文;同功能多回合稳定) → **agent 增量段**(差异矩阵的增量,**只加不减**:detector 补底牌+知识全集/extractor 补 schema 合同+既有知识/judge 补 rubric/planner 补底牌+未来粗纲;L3 授权资料/检索结果;待检待评对象) → **L0 易变部**=用户本回合意图/修改意见(每回合必变,**绝对尾置**,亦是遵循度最优位)。
|
||
- 跨 agent 复用机理:同章流水线(writer→detector→judge→extractor)基线包**字节一致**(本 skill 必须确定性渲染:同序、无时间戳),首跑写缓存(+25%),后续 agent 读缓存(1/10 价)。安全性两头锁死:基线=writer 视图保证**无人多看**(writer 基线 ⊆ 其余各 agent 可见面);增量只加不减保证**无人少看**。同一 agent 的重生成/复评环在此之上再吃更长前缀。
|
||
- 缓存注记:L3 检索查询尽量从本章细纲构造,意图只在用户点名新参考时追加——使 L3 章内趋稳,同章 n=5 重生成环吃到更长前缀。
|
||
- 归属判据(什么进身份段,什么进层):**换作品也不变**的进 agent 身份段(角色/方法论/agent 级输出合同/红线);**随作品变**的进 L2(文风画像/设定——身份段不得硬编任何作品专属内容,这是「换绑写手不动链」的前提);**随回合变**的进 L0 易变部。**种子=prompt 文本,位置=装配层决定**。
|
||
- 落地口径:阶段一 Claude Code 子代理机制把 agent `.md` 钉在系统位、各 agent tools 也不同,跨 agent 共享物理上不成立——实验量小,不为省缓存把五个角色并成通用执行器;**阶段二 muse Context Assembly 完全控制消息布局,按本条共享前缀设计落**。「预算序≠拼装序+章级基线包共享前缀」整体列为回填专题-03 候选。
|
||
包尾附**裁剪回显**两段:字段级=被 aiContext 挡掉的字段名与原因;来源级=omittedSources(未绑定跳过的库、出场无关未选的卡数,原因对齐 `not_authorized`/`not_relevant`/`token_budget` 枚举)。
|
||
5. 回显落盘:`works/<书>/评审/上下文-第NNN章-<用途>.md`(运行噪音,gitignore 已挡,不提交)。
|
||
|
||
## 按 agent 的差异矩阵(骨架四层不变;差异=字段可见集 × 每层取数范围 × 层必省性)
|
||
|
||
| agent(scenario) | L0 当前输入 | L1 近邻正文 | L2 作品事实 | L3 授权资料 |
|
||
|---|---|---|---|---|
|
||
| writer(generation) | 本章细纲+任务 | **必**:上章尾 1–2 场景原文+前章摘要+状态 | 必:设定(裁底牌)+近三章细纲+**仅出场卡** | 按本章场景类型选绑定范式卡 |
|
||
| planner(planning) | 规划任务+范围 | 可省:近章摘要即可 | **必**:可见度最高——底牌字段开+未来卷粗纲开+知识卡**全量索引** | trope/公式类范式优先 |
|
||
| planner(fine_outline) | 目标章细纲任务+未知项纪律 | 可省:只读冻结视图中的近章结构摘要 | **必**:当前大纲、叙事现在时、截至冻结点的安全设定/卡索引;回放时关闭目标章及未来来源 | 仅使用已授权且通过冻结审计的资料 |
|
||
| extractor(extraction) | 抽取任务+目标型清单 | 待处理章**全文**(是处理对象,不截尾) | schema 字段合同+既有知识**全集**(判重/判冲突) | **关**:防外部范式诱导脑补 |
|
||
| detector(detection) | 检测任务+待检候选全文 | 必:近邻正文(连续性比对) | **必**:知识全集+状态台账+**底牌开**(查提前泄底必须知道谜底) | 范式卡「失效风险」字段可选 |
|
||
| judge(quality_gate) | 待评候选+rubric | 随基线包 | **=writer 基线**(共享前缀;评设定一致性需同一基准,不另加底牌) | **关**:不拿范式当标准答案 |
|
||
|
||
方向性规律(统合策略的魂):
|
||
- **生成向防剧透**(writer):底牌闭——知道结局的作者写不出"不知道结局"的叙述;
|
||
- **规划向看全局**(planner):底牌全开——规划正是管理底牌的地方;
|
||
- **抽取向忠于原文**(extractor):参考关闭——给参考就会把参考抄进抽取结果;
|
||
- **检测向持有基准**(detector):比对基准要全,与 writer 互补——writer 看不见的它必须看见;
|
||
- **评审向同证独立**(judge):**可见面=writer 基线,不多不少**——多于 writer,会拿写手看不见的信息"合理化脑补";少于 writer,评不了设定一致性。
|
||
|
||
落地与演进:阶段一矩阵写死在本 skill;PG 版随功能链节点配置入库(矩阵本身是元数据,不散进各 agent prompt)。此矩阵是实验设计稿——SoT(专题-03 §4.2)只给到 scenario 级可省略性,逐 agent 策略由这里试出来,验证后回填;「四层序=预算序、物理拼装序=稳定度递减(L2→L1→L0稳→L3→L0变,易变尾置吃缓存)」这一区分 SoT 亦未言明,同为回填候选。
|
||
|
||
PG 版(闭环 C4)只换 L2/L3 取数方式(search skill 召回+授权过滤),层结构与回显合同不变。
|
||
|
||
## 红线
|
||
|
||
- 不得绕过裁剪把整文件塞给智能体;
|
||
- 裁剪清单必须如实——它是场景 A3/A7 的验收证据;
|
||
- 本 skill 是唯一取数通道:智能体缺什么上下文,改这里或改 schema,不许智能体自己翻仓库。
|