# AI 图片制作能力 / 工序抽取 Schema v5 本文档定义 capability / strategy 抽取结果的核心结构。目标是把 `method` 做成稳定、可聚类的 HOW 骨架,同时让 `inputs` / `outputs` 承载更细的接口语义。 --- ## 1. 核心原则 `method` 只表达抽象流程接口,不写具体内容 what。 固定语法: ```text (流程角色)[模态]->主动作:动作方式->(流程角色)[模态] ``` 多输入 / 多输出用 `+` 连接: ```text (流程角色)[模态]+(流程角色)[模态]->主动作:动作方式->(流程角色)[模态] ``` strategy 若包含多个步骤,顶层 `method` 是动作链: ```text 第一步输入接口->步骤1主动作:动作方式->步骤2主动作:动作方式->...->最后一步输出接口 ``` 不同维度使用不同标记: | 维度 | 标记 | 示例 | |---|---|---| | 流程角色 | `(...)` | `(生成指令)`、`(参考素材)`、`(成品)` | | 模态 | `[...]` | `[文本]`、`[图片]`、`[特征点]` | | 动作 | `主动作:动作方式` | `生成:局部重绘`、`编辑:亮度调整` | --- ## 2. 维度定义 ### 2.1 流程角色 role 流程角色回答:这个输入 / 输出在当前工序接口里“被怎么使用”。 它不回答: - 内容是什么:人物、浴室、雨天、白月光等不写进 role。 - 文件类型是什么:文本、图片、模型等属于 modality。 - 具体物件是什么:正向提示词、负面提示词、蒙版、LoRA 等属于 artifact_type。 - 想达到什么效果:真实感、手机感、氛围感等放到 effects / apply_to / description。 建议词库: 输入侧: ```text 生成指令 编辑指令 约束条件 参考素材 控制信号 区域控制 参数配置 模型资源 源素材 中间产物 ``` 输出侧: ```text 成品 中间产物 模板 控制信号 区域控制 模型资源 评估结果 ``` ### 2.2 模态 modality 模态回答:这个对象以什么媒介 / 数据形态存在。 建议词库: ```text 文本 图片 视频 音频 参数 模型 特征点 向量 表格 ``` 注意: - 蒙版、深度图、骨骼图通常是 `artifact_type`,模态可写 `图片` 或 `特征点`。 - 蒙版更常对应 role=`区域控制`;深度图、骨骼图、姿势关键点更常对应 role=`控制信号`。 - LoRA、checkpoint、embedding 通常是 `artifact_type`,模态写 `模型` 或 `向量`。 ### 2.3 动作 action 动作由两层组成: ```text 主动作:动作方式 ``` 主动作回答:发生了哪一类操作。 建议词库: ```text 生成 编辑 合成 提取 改写 模板化 排版 剪辑 转写 配音 匹配 增强 修复 扩展 训练 评估 导出 ``` 动作方式回答:这个动作内部采用的抽象机制是什么。它仍然是 HOW,不写具体内容 what,也不要复述输入 / 输出接口里的维度。 动作方式不要写: - 输入 / 输出模态:如 `文本驱动`、`图片驱动`、`视频驱动`。 - 输入 / 输出流程角色:如 `提示词驱动`、`参考素材驱动`、`约束条件驱动`。 - 具体内容 what:如 `浴室自拍`、`雨天少女`、`白月光风格`。 常见动作方式: ```text 直接生成 一致性保持 结构约束 质量收束 变体生成 动画化 镜头延展 局部重绘 扩图 换背景 换主体 换装 擦除 调色 提示词反推 模板化 多图融合 前后景融合 图文合成 音画合成 分层叠加 特征提取 蒙版提取 关键帧提取 字幕提取 风格提取 片段拼接 节奏压缩 转场编排 字幕对齐 音画同步 清晰化 降噪 补帧 超分 稳定化 质感增强 风格迁移 结构抽象 变量抽象 版式套用 格式转换 压缩导出 ``` 示例: ```text (生成指令)[文本]->生成:直接生成->(成品)[图片] (参考素材)[图片]+(生成指令)[文本]->生成:一致性保持->(成品)[图片] (控制信号)[特征点]+(生成指令)[文本]->生成:结构约束->(成品)[图片] (区域控制)[图片]+(编辑指令)[文本]->编辑:局部重绘->(成品)[图片] (源素材)[图片]+(编辑指令)[文本]->编辑:局部重绘->(成品)[图片] ``` --- ## 3. inputs / outputs 结构 `method` 负责稳定聚类,`inputs` / `outputs` 负责解释接口细节。 ```ts type IOItem = { role: string; // 流程角色,如 "生成指令" modality: string; // 模态,如 "文本" artifact_type?: string | null; // 具体工件类型,如 "正向提示词"、"负面提示词"、"蒙版" control_target?: string[]; // 控制目标,如 ["主体", "场景", "镜头"] target_scope?: string[]; // 作用范围,如 ["整图", "人物", "脸部", "背景", "局部区域"] constraint_strength?: string | null; // 硬约束 / 软约束 / 参考倾向 / 排除项 source?: string | null; // 来源,如 原帖文本 / 用户上传 / 上一步产物 / 外部资源 lifecycle?: string | null; // 原始输入 / 中间产物 / 最终成品 / 可复用模板 description: string; // 功能性描述,不堆具体 what }; ``` ### artifact_type 与 role / modality 的边界 `artifact_type` 容易和 `role`、`modality` 重叠,因此定义要窄一些: - `role`:它在流程里承担什么职责。 - `modality`:它是什么数据形态。 - `artifact_type`:在该模态下,它是哪一种具体工件。 例子: | role | modality | artifact_type | 说明 | |---|---|---|---| | 生成指令 | 文本 | 正向提示词 | 文本作为生成指令使用,具体工件是提示词的一种 | | 约束条件 | 文本 | 负面提示词 | 负面提示词也是提示词,但在流程里承担排除 / 约束职责 | | 参考素材 | 图片 | 角色参考图 | 图片作为参考素材使用,具体工件是角色参考图 | | 区域控制 | 图片 | 蒙版 | 图片作为区域控制使用,具体工件是蒙版 | | 控制信号 | 图片 | 深度图 | 图片作为控制信号使用,具体工件是深度图 | | 控制信号 | 特征点 | 姿势关键点 | 特征点作为控制信号使用 | | 模型资源 | 模型 | LoRA | 模型作为资源参与生成或编辑 | 规则: - `artifact_type` 可选;如果只是重复 role 或 modality,可以省略。 - `artifact_type` 不写内容 what。例如写 `角色参考图`,不要写 `浴室御姐参考图`。 - 具体内容对象、风格、题材、场景进入 `apply_to` 或 `control_target`,不进入 method。 补充边界: - `正向提示词`、`负面提示词`、`编辑提示词`、`结构化提示词` 都属于提示词类工件;不要把 `prompt` 和 `负面提示词` 当成平级概念。 - 这些工件名原则上不直接进入 method 的 `(流程角色)`。method 中优先写它们承担的流程职责:`(生成指令)`、`(编辑指令)`、`(约束条件)`、`(区域控制)`、`(模型资源)`。 - 只有当一个词本身描述的是流程职责,而不是具体工件时,才适合作为 role。例如 `区域控制` 可以是 role,`蒙版` 更适合作为 artifact_type。 --- ## 4. 顶层 schema ### capability ```ts type Capability = { method: string; inputs: IOItem[]; outputs: IOItem[]; body: string | null; effects: string[]; stage: ("preprocess" | "generate" | "refine")[]; tools: string[]; criterion: string | null; apply_to_draft?: { "实质": string[]; "形式": string[]; }; apply_to?: ApplyTo; unstructured_what: string[]; }; ``` ### strategy ```ts type Strategy = { method: string; inputs: IOItem[]; // 取第一步 inputs outputs: IOItem[]; // 取最后一步 outputs steps: StrategyStep[]; effects: string[]; stage: ("preprocess" | "generate" | "refine")[]; tools: string[]; criterion: string | null; apply_to_draft?: { "实质": string[]; "形式": string[]; }; apply_to?: ApplyTo; unstructured_what: string[]; }; type StrategyStep = { order: number; method: string; // 同样使用 "(流程角色)[模态]->主动作:动作方式->(流程角色)[模态]" body: string | null; inputs: IOItem[]; outputs: IOItem[]; tools: string[]; }; ``` --- ## 5. 示例 ### 5.1 文本直接生成图片 ```json { "method": "(生成指令)[文本]->生成:直接生成->(成品)[图片]", "inputs": [ { "role": "生成指令", "modality": "文本", "artifact_type": "正向提示词", "control_target": ["主体", "场景", "镜头", "风格"], "target_scope": ["整图"], "constraint_strength": "硬约束", "source": "原帖文本", "lifecycle": "原始输入", "description": "用于触发图片生成的完整提示词" } ], "outputs": [ { "role": "成品", "modality": "图片", "artifact_type": "静态图", "control_target": [], "target_scope": ["整图"], "constraint_strength": null, "source": "模型生成", "lifecycle": "最终成品", "description": "最终生成的静态图片" } ] } ``` ### 5.2 生成指令 + 约束条件 ```json { "method": "(生成指令)[文本]+(约束条件)[文本]->生成:质量收束->(成品)[图片]", "inputs": [ { "role": "生成指令", "modality": "文本", "artifact_type": "正向提示词", "control_target": ["主体", "场景", "动作"], "target_scope": ["整图"], "constraint_strength": "硬约束", "source": "原帖文本", "lifecycle": "原始输入", "description": "描述主体、场景和动作的生成指令" }, { "role": "约束条件", "modality": "文本", "artifact_type": "负面提示词", "control_target": ["画质", "质感", "瑕疵排除"], "target_scope": ["整图"], "constraint_strength": "排除项", "source": "原帖文本", "lifecycle": "原始输入", "description": "用于约束生成结果质量和排除不希望出现的问题" } ], "outputs": [ { "role": "成品", "modality": "图片", "artifact_type": "静态图", "control_target": [], "target_scope": ["整图"], "constraint_strength": null, "source": "模型生成", "lifecycle": "最终成品", "description": "满足指令和约束条件的生成图片" } ] } ``` ### 5.3 参考图驱动生成 ```json { "method": "(参考素材)[图片]+(生成指令)[文本]->生成:一致性保持->(成品)[图片]", "inputs": [ { "role": "参考素材", "modality": "图片", "artifact_type": "角色参考图", "control_target": ["身份一致性", "脸部特征"], "target_scope": ["人物", "脸部"], "constraint_strength": "参考倾向", "source": "用户上传", "lifecycle": "原始输入", "description": "用于保持主体外观一致性的参考图片" }, { "role": "生成指令", "modality": "文本", "artifact_type": "正向提示词", "control_target": ["场景", "姿态", "光线"], "target_scope": ["整图"], "constraint_strength": "硬约束", "source": "原帖文本", "lifecycle": "原始输入", "description": "用于描述生成目标和画面要求的文本指令" } ], "outputs": [ { "role": "成品", "modality": "图片", "artifact_type": "静态图", "control_target": [], "target_scope": ["整图"], "constraint_strength": null, "source": "模型生成", "lifecycle": "最终成品", "description": "依据参考素材和生成指令得到的图片" } ] } ``` ### 5.4 多步骤 strategy ```json { "method": "(源素材)[图片]+(编辑指令)[文本]->编辑:局部重绘->增强:清晰化->(成品)[图片]", "inputs": [ { "role": "源素材", "modality": "图片", "artifact_type": "原始图片", "control_target": ["主体"], "target_scope": ["整图"], "constraint_strength": "硬约束", "source": "用户上传", "lifecycle": "原始输入", "description": "作为编辑起点的原始图片" }, { "role": "编辑指令", "modality": "文本", "artifact_type": "编辑提示词", "control_target": ["局部区域"], "target_scope": ["局部区域"], "constraint_strength": "硬约束", "source": "原帖文本", "lifecycle": "原始输入", "description": "说明需要重绘或修改的区域和目标" } ], "outputs": [ { "role": "成品", "modality": "图片", "artifact_type": "静态图", "control_target": [], "target_scope": ["整图"], "constraint_strength": null, "source": "模型生成", "lifecycle": "最终成品", "description": "经过局部编辑和清晰化增强后的最终图片" } ], "steps": [ { "order": 1, "method": "(源素材)[图片]+(编辑指令)[文本]->编辑:局部重绘->(中间产物)[图片]", "body": "对原始图片的局部区域执行重绘。", "inputs": [], "outputs": [], "tools": [] }, { "order": 2, "method": "(中间产物)[图片]->增强:清晰化->(成品)[图片]", "body": "对重绘后的图片进行清晰化和细节增强。", "inputs": [], "outputs": [], "tools": [] } ] } ``` --- ## 6. 抽取约束 - method 中禁止出现具体 what:人物、服装、场景、风格、情绪、品牌、具体参数。 - method 中的流程角色必须用 `(...)`,模态必须用 `[...]`。 - 动作必须写成 `主动作:动作方式`;若动作方式无法从原文判断,可写较粗的 `生成:直接生成` / `编辑:常规编辑`,不要编造细节。 - 动作方式不得复述输入 / 输出模态或流程角色;例如不要写 `生成:文本驱动`、`生成:图片驱动`、`生成:提示词驱动`。 - `artifact_type` 可具体到工件种类,但不要写内容对象。 - `control_target` 可以写受控维度,如主体、身份、姿势、构图、光线、色彩、质感、质量、局部区域。 - `apply_to` 负责映射内容树,表达“关于什么”和“如何呈现”;不要把内容树语义塞回 method。