phase1-skeleton.md 5.9 KB

阶段一 · 骨架提取 (Phase 1)

整体三阶段流程 + 文件清单见 README 的"加载指南 · 总览";字段定义 + 推断补全标记见 fields.md。本文只讲阶段一执行。

主 Agent 不切换的理由: 切片决策、抽取的逻辑补全、跨步引用闭合三件事认知耦合, 同一份"工序心智模型"贯穿三步; 换 Agent 要重读源材料 + 重建模型, 浪费 context, 且易在切片/补全决策上不一致。

子步 任务 关键产物
1.1 思考分析 + 多工序判断 — 通读原文 (含图片) 建立心智模型: (a) 判断本 case 含几个独立工序 (单/多), 多工序时列出每个 procedure 名字 + 终态产物 + 大致步骤数 + 工艺类型; (b) 识别终态产物、外部工具依赖、隐含的工艺规约/预准备需求 understanding.md (按 procedure 分章节)
1.2 步骤切片 + 单步骨架 — 一次 Write workflow.json 骨架. 顶层 {procedures: [...]}, 每个 procedure 含 {id (e.g. p1-simple/p1), name, purpose, category, platform, author, declarations, steps}. 每个 step 抽: id / kind / action (自然语言) / via / inputs[] / outputs[] (含 type/name/value, anchor 暂留空) / instruction / feature / control / intent / focus. 推断隐含 IO 标 inferred: True, inferred_reason: "...". effect/类型归一/substance/form 留到 Phase 2, 不要在 Phase 1.2 就填. workflow.json (Write 骨架版, 不含 anchor/effect/type/sub/form)
1.3 跨步引用闭合 (quality gate) — 给每个 IO.anchor 字段加引用: input.anchor=← sN.var / ← 工序输入 / ← 容器[i]; output.anchor=→ sN.var / → 容器.追加. 命名归一, 失败回 1.2 改 step. 几十处 anchor 用 wf-patch.py --patch 一次过 (见下), 不要写 Python 脚本批量塞. workflow.json (wf-patch 加 anchor)

1.1 多工序的判断标准

⚠️ 判断与原文段落角色无关:不论原文把它定位为"案例示范"、"方法论说明"、"案例欣赏"还是"进阶玩法",只要满足下列三条,即为一个独立工序。工序的识别单元是一条完整的输入→终态产出链,不是原文的章节结构。

扫描单元:以原文中每一张出现的成品图(或明确描述的终态产物)为起点,逐一检查它是否有对应的独立输入→做法链条。有则记为一个候选工序,再用下列三条标准过滤。不要以章节/段落为扫描单元。

  1. 有明确产出物:该步骤能产出一个可见结果(图片、素材、成品等)
  2. 有具体做法:该输入→输出链条中存在可操作的方法(Prompt、框架、流程步骤等)
  3. 产出物或做法有差异:与其他工序相比,产出物不同,或做法(框架/方法论)不同,两者满足其一即可;即便产出物类型相同(同为场景图、同为宣传图),只要 Prompt 文本不同,即视为不同工序,不得合并。

判断边界:

  • 同一输入→输出链条内部的中间步骤,归入该工序,不单独拆分(如:同一张海报的生成过程中,背景图生成是中间步骤而非终态产物)
  • 有终态产物但完全没有输入描述或做法描述(仅展示结果图)不算工序
  • 同类产出物但方法不同,算两个工序
  • 相似产出物 ≠ 同一工序:两张同类型的图(如都是冲锋衣场景图),只要生成它们的 Prompt 或方法有任何实质差异,必须拆为两个独立工序。不得以"产出物类型相同"或"方法论相似"为由合并。

1.2 的逻辑补全: 原文常省略隐含输入/输出, 抽取者要主动补:

  • 工具领域知识 (生成模型必带 model checkpoint + LoRA + 采样参数; 召回必带索引依据; 视频生成必带主角图/分镜图作 reference)
  • 跨步 contract 推理 (下游用 X 但上游没产 → 漏抽?; 当前输出后续没消费 → 是否漏抽 inferred consumer?)
  • 工艺范式知识 (短剧 = 分镜图 → 视频片段 → 拼接; 建库 = 收集 + 入库 + 索引)

补全的 IO item 标 inferred: True, inferred_reason: "原文方法 3 只说..., 但工艺需要...", 让 review 阶段确认; 不要默默插入. 标记方式详见 fields.md "推断补全标记"。

1.2 控制流建模: 源里有循环 / 并行 / 分支 / 抽样时, 切片要展开成 block + nested 结构 (不要拍平成单个标记步), 容器流走 anchor [i] / .追加。详见 control-flow.md

1.3 闭合检查项:

  • 每个 input 能 trace 到上游 output / declare / 字面量
  • 同名变量在不同 step 的 type 一致
  • 容器索引在合理范围 ([i] 在循环内, [-1] 指最近一项)
  • 锚/链关系正确

1.3 怎么批量加 anchor (重要): workflow.json 由你直接演化, 绝不写 Python 脚本生成 / 批改它 (脚本拼 JSON 易踩转义坑把文件搞坏). 几十个 anchor 用 wf-patch.py 一次过:

  1. 写一份 patch 清单到 _scratch/anchors.json —— [{"path":"p1.s1.inputs[0].anchor","value":"← s0.x"}, ...], 每条都是你的显式决策 (anchor 指向谁是语义判断, 不是机械映射);
  2. python spec/tools/wf-patch.py --workflow workflow.json --patch _scratch/anchors.json

工具负责安全写 JSON + 校验 anchor 格式 (非法整批不写), 你从不碰 JSON 序列化。零星单处改用 Edit 即可。完整路径语法见 tools.md §2

1.3 透传 value 自动回填: anchor 闭合后, 跑 python spec/tools/wf-patch.py --workflow workflow.json --resolve-passthrough。原样透传的输入/directive (anchor ← sN.x) 你不用手抄上游 prompt 全文 —— 只在源头 step 的 output 填一次真值, 工具顺 anchor 把它逐字抄到所有透传位置 (value 留空或先写引用占位都行, 工具会替换)。禁止把「(同 sN 输出)」这类引用占位当最终 value 留着 (lint 会报, 见 fields.md value 行)。