md-structure.md 2.2 KB

§11 .md 输出结构 (固定章节)

按这个目录写, 顺序固定, 便于后续 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)。
  • L4 实例的四子块 (inputs / bindings / extracted_values / trace) 落在各 procedure 子节内部, 不要跨工序拍扁挤在一起 — 拍扁会丢掉"哪个值属于哪个工序", 破坏跨 case 比较。
  • 引用的类型分两子节: stdlib 类型 (命中 §A.3 字典叶子的, 直接引用) + case-specific 类型 (type_registry) (走 procedure.type_registryextends / desc)。

单工序兼容: 只有一个 procedure 时, 省略 ### P1 这层 —— ## 工序梗概 / ## L3 工序模板 直接写正文, ## L4 工序实例 底下直接写 inputs / bindings / extracted_values / trace 四子块。

extracted_values 是核心 — 把图里读到的 prompt 原文、工具配置、Shot 拆解、视频参数等逐字回填, 不要凭印象写。图里截断不全就标 note: "图中文本截断, ...", 不要自补。