live2d-layering · git:20261019.7a3a2ce · 2026-10-19 · sha256 2f91edcd0cd37bea

live2d-layering git:20261019.7a3a2ceA

Immutable. This exact content never changes and is served at /api/v1/blob/2f91edcd0cd37bea.

---
name: live2d-layering
description: 根据角色参考图制作或续跑可编辑、具备隐藏补全的分层 SVG 素体;按节点配置调度参考准备、部件制作和声明的独立审查。用于角色分层、指定部件细化或已有案例续跑。
---

# 人物分层工作流调度规则

本文件只规定通用执行与交接方式;任务顺序由编号目录决定,输入、选项和产物由各级 `流程.yaml` 声明,具体制作要求写在对应节点提示词中。

任务资料以本 `SKILL.md` 所在目录为根。通用工具放在本技能的 [tools](tools/readme.md),仅供单个步骤使用的工具放在该编号步骤的 `tools/`;不引用技能目录之外或另一技能内的资源。所有 `流程.yaml` 中的 `run`、`asset`、`prompt` 都从本技能根目录解析,路径不得越过 `SKILL.md` 所在目录。总控解析为绝对路径后交接,用户产物仍写入工作根目录。

## 调用与输入

读取[根配置](流程.yaml),绑定用户提供的必要素材和绝对输出目录;仅集中询问必需项中的缺项,可选素材按实际提供情况绑定。输入文件与技能资料只读,产物和临时文件写入本轮工作根目录;用户仅要求规划或修改流程时,不启动制作任务。

已有选项从工作根目录的平级 `options.json` 读取,按根配置核对类型;用户本轮明确选择优先,由负责判断的 worker 写入。旧运行仅有 `options.yaml` 时,由该 worker 按[选项工具说明](tools/readme.md)迁移已有值。用户可以指定起止节点;默认执行实际建立的编号节点。

## 读取与绑定

- 按目录编号逐级展开、按数字排序,例如 `1.2` 在 `1.10` 前;同编号且带 `.parallel.` 的节点并行,全部完成后继续下一编号。容器只组织子任务,不额外执行父任务。
- 每个节点先读取自己的 `流程.yaml`;实际任务显式写 `run`,其值是从技能根目录到执行目录的路径,再读取该目录提示词与 `.model`。条件任务把 `run` 放在执行分支;单任务循环写 `foreach.run` 指向执行目录,逐项执行任务及其 review,不重新进入自身循环。无 `run` 的纯容器仅展开编号子步骤,输出别名分支仅发布路径;不能按目录里的模型文件隐式派发。
- 普通 `inputs.<名称>` 引用根输入;循环内部引用当前循环已绑定的输入。`nodes.<id>.<名称>` 引用已完成节点产物,`asset` 从技能根目录解析,普通产物路径相对工作根目录;`required: false` 缺项标为“未提供”。
- `if / then / else` 按声明条件选择分支,分支继承节点输入并加入自身输入。条件读取已绑定输入或 `options.<名称>`;字段缺失或类型错误时交原负责 worker 补正,不自行猜测。
- 输出中的 `inputs.*`、`nodes.*` 发布已绑定的路径;其他输出相对工作根目录。分支另行声明保存路径和格式时,按声明保存复用输入。
- `writes_options` 由该 worker 核对选项名与类型,确认可用的 Python 3 后使用绑定的公共 `options_tool` 写入选项;总控读取结果继续。
- 派发资料限节点声明的本轮素材、上游产物、静态参考和工具;教程知识由编写者落实在对应提示词,不在运行时追加教程原文、其他技能或整套规划文档。

遇到具体语法时查阅 [Workflow DSL](docs/workflow-dsl.md) 的对应规则;示例只解释格式,实际任务以节点配置为准。

## worker 与交接

从语言 `.model` 文件名最右侧拆出推理强度;新 worker 用 `spawn_agent` 显式指定模型、强度与 `fork_turns: "none"`。相同 `worker` 的串行任务用 `followup_task` 续做,不同名称分别建会话;省略时以节点 `id` 为身份。

并行分支共用已有 worker 时,从该会话在分支前已完成的上下文分别 fork:由原 worker 发起子分支并返回 agent ID,总控跟进,汇合后交回原 worker 继续。分支的续做和返修交各自会话,共用 worker 的模型与强度保持一致;没有已有会话时按新 worker 建立,详见 [会话与 fork](docs/workflow-dsl.md#会话与-fork)。

记录实际 agent ID,等待依赖完成再推进;提示词通过路径读取,最小交接为:

```text
工作根目录:<绝对输出目录>
提示词:<节点提示词绝对路径>
输入:<用途或图号=实际绝对路径;可选缺项写“未提供”>
循环上下文:<仅循环任务:当前项、序号/总数、is_last>
输出:<本次声明的产物路径>
读取指定提示词并执行,命令工作目录设为工作根目录。
```

`writes_options` 任务将“输出”替换为“写入选项:<字段名>”;用户本轮对该任务的明确要求一并交接。worker 依据此交接与节点提示词执行,Skill 和规划文档由总控使用。

## 循环与版本传递

- 按 `foreach` 声明绑定来源、分组、排序和模板;省略 `group_by` 时按列表逐项执行。内层 `as` 保留外层上下文,先绑定当前项再展开占位符输入。
- 串行 `carry` 从节点初始输入开始,每项使用上一成功项的最新产物;任务及其声明的 review 都通过才推进。没有对应输出的任务保持已有 carry,不回退到某个 worker 自己记得的旧稿。
- 循环内的 `nodes.*` 与进度按当前项隔离;完成全部项才发布循环最终输出。`when: last_item` 的输出仅交给末项,不把中间稿当成最终交付。
- 同一 worker 恢复工作时仍须显式接收最新 carry,尤其经过其他 worker 后;返修在当前完整稿修具体问题,不用早期整图覆盖后续成果。
- 节点声明冻结决定或版本基准时,记录并按该节点规则传递;不能在下游悄悄更换决定或自动重置基准。

分组与循环的具体语法见 [动态派发](docs/workflow-dsl.md#8-按产物动态派发)。

## 生图与审查

- `imagegen.model` 由总控直接调用生图工具。读取 `imagegen.prompt`,按声明图号传图片,声明的文本资料读取后附在提示词后;存在 `imagegen.inputs` 时只传其列出的输入,其他输入仅用于条件与调度。
- 生图要求使用节点声明的自然语言,不混入结构计划、SVG、路径或运行变量;按 `imagegen.when` 决定是否生成,保存声明产物并确认可读。额外重绘由用户提出,工具失败如实报告。
- 只执行节点明确声明的独立 review,使用独立于绘制者的会话;`pass` 后发布通过的输出,`revise` 交原绘制者修具体问题,再由同一 reviewer 复验问题项,`blocked` 报告实际缺项。
- 总控核对声明交付和必要审查状态;视觉自查由对应 worker 完成,复用已有证据,不另加截图、哈希链、重复组装或成稿审查。

## 完成与续跑

在工作根目录的 `运行记录.md` 简记输入绑定、选项与分支、节点/循环状态、实际 worker 及子会话 ID、产物路径和必要审查结论。续跑核对实际文件与当前配置,按已成功交付恢复最新产物;历史编号变化时按内容重新绑定,不按旧编号自动认定完成。

会话失效时交接当前稿和未完成范围;输入改变只重新处理受影响节点。最终汇报实际产物、完成范围与未解决项,不把静态素材交付表述为动画绑定已完成。