按这个目录写, 顺序固定, 便于后续 dedup / 跨 case 比较。
workflow.json 是 procedures: [P1, P2, ...] 模型。多工序时按 procedure 分节; 单工序时省略 P 层级 (见末尾兼容说明)。
# Case N: <主题>
**Source / URL / 主题**
## 工序梗概 (人话)
### P1 · <工序名>
### P2 · <工序名>
## 引用的类型 (stdlib + 自定义)
### stdlib 类型 (直接引用)
### case-specific 类型 (type_registry)
## L1 外部函数库
## L2 抽象动作 + impl 关系
## L3 工序模板
### 模板 A:<名> (对应 P1)
### 模板 B:<名> (对应 P2)
## L4 工序实例
### P1 实例 — <名>
- inputs (本次实际值)
- bindings (本次工具选择, `sN.via = ...`)
- extracted_values (本次中间产物 — prompt 原文回填)
- trace (timing / cost / retry_log, 可空)
### P2 实例 — <名>
- (同上四子块: inputs / bindings / extracted_values / trace)
## 这个 case 对 DSL 设计的关键启发
分节规则 (多工序时):
L1 外部函数库 / L2 抽象动作): 外部函数、抽象动作跨工序复用, 整 case 一份, 不按 procedure 切分。工序梗概 / L3 工序模板 / L4 工序实例): 每个 procedure 一个子节。L3 模板与 L4 实例一一对应 (模板 A ↔ P1, 模板 B ↔ P2)。stdlib 类型 (命中 §A.3 字典叶子的, 直接引用) + case-specific 类型 (type_registry) (走 procedure.type_registry 的 extends / desc)。单工序兼容: 只有一个 procedure 时, 省略 ### P1 这层 —— ## 工序梗概 / ## L3 工序模板 直接写正文, ## L4 工序实例 底下直接写 inputs / bindings / extracted_values / trace 四子块。
extracted_values 是核心 — 把图里读到的 prompt 原文、工具配置、Shot 拆解、视频参数等逐字回填, 不要凭印象写。图里截断不全就标 note: "图中文本截断, ...", 不要自补。