---
name: live2d-expressions
description: 执行 SVG 边界关键形 agent 工作流：模型设计12轴基本面部参数极值与二维/三维组合形，程序保持原路径拓扑并连续插值，独立审查真实边界和中间态，不制作表情预设。
---

# SVG 参数边界工作流

执行入口为 [workflow.yaml](workflow.yaml)，调度语义见 [DSL 文档](docs/workflow-dsl.md)。只有显式 `tasks`、`needs` 和产物引用决定执行；编号目录标明步骤归属，不靠扫描目录调度。角色形变使用 0.3 `boundary_recipe` / `boundary_rig`，不再用 0.2 自动闭眼/张嘴公式作为主创作方式。

标准工作流固定采用 [basic-face-v1](docs/basic-face-v1.md)：双眼开合/弧形、双眉高度/角度/弧形和嘴开合/形状，共12轴，不能由规格作者省略后仍宣称完成。通用0.3格式仍可加载未声明profile的旧局部试验，它们不满足本工作流。

本阶段目标是让每个公开参数拥有合理、足够宽、可验证的可达范围。模型先像 rig 作者一样调整有限的极值关键形，程序计算它们之间的连续变化。**不生成情绪预设、离散五官替换、附件或语义表情组合。** 修改工作流的任务不自动启动角色生产。

本技能遵守上游工具归属：跨步骤共用工具放在 [tools](tools/readme.md)，盘点、编译、扫描工具分别放在对应编号步骤的 `tools/`；提示词与步骤同目录。所有资源从本技能根目录解析，不引用技能外或另一技能的工具。交接使用解析后的绝对路径，输入与技能只读，输出写入本轮工作根目录。

## 本地工具依赖

在本技能目录执行一次 `npm ci --prefix tools`，并在所用 Python 环境安装 `tools/requirements.txt`。扫描需要 Chrome/Chromium：可执行 `npx --prefix tools playwright install chromium`，也可用 `ASTRA_BROWSER` 指定已有浏览器；`ASTRA_PYTHON` 可指定已安装 jsonschema 的 Python。便携预览直接打开 `tools/preview/boundary-preview.html`，无需安装依赖。

## 开始与调度

绑定用户给定的只读 `base_svg`、新的绝对输出目录及可选参考、需求。用户不需要填写最大张口、闭眼接触线或控制点；这些都是作者职责。先执行公共 [workflow_plan.py](tools/workflow_plan.py) 的 `validate` 和 `plan`。

计划器只解析 DAG、路径、签名和状态，不调用模型或执行命令。调度 agent 使用真实任务 prompt、模型配置和解析后的 `argv`；不得用脚本填入成功状态模拟完整 agent 工作流。工具的实现、schema 和 runtime 都参与输入签名。

输入原稿与公共工具只读；每个任务只写自己声明的输出。控制器独占 `run-state.json`。互不依赖且输出隔离的 ready 任务可以并行；reviewer 必须与作者使用独立会话。同一作者的定向返修续用原会话，保留实际问题和轮数。

`models` 声明作者/reviewer 的配置。使用执行环境可用的对应模型；若不可用，记录实际模型与差异，按已有授权选择可用替代，不能伪称用了原配置，也不能为工具不存在而虚构运行结果。每次交接给出任务 id、模型、prompt、完整输入/输出路径、用户约束和本轮失败证据。

## 模型与程序的分工

1. `inspect` / `scope` 从真实渲染和节点建立眼、口、眉的完整运动区域。除了主要轮廓，还要明确邻近眼皮、眼眶阴影、唇周阴影、高光、眼白/口腔裁剪、虹膜/牙舌的归属。每个未跟随的邻层必须有固定理由，不能自动忽略。
2. `prepare` 恒等复制原稿并核对 SHA-256。不得改 SVG 字节、层级、id、颜色、路径命令拓扑或补隐藏素材。
3. `author_boundaries` 由模型在 JSON 中手工设计控制点/路径关键形。先保留原中性，再为每轴设计最小/最大边界；眼睛必须联合设计每侧 `open × curve`（默认2×3），真实闭合时curve仍可改变眼睑弧形，并保持原睫毛尖。每侧眉毛联合设计 `height × angle × curve`（默认3×3×3），三轴分别控制抬降、两端倾斜和曲率。嘴必须联合设计 `open × form` 的完整组合。嘴部模型默认只创作 open=[0,1] × form=[-1,0,1] 的六个边界组合；程序插值半开，审查闭口/半开/全开 × 负/中/正九宫格，不能把两个独立一维位移简单相加。
4. 关键形可以同时改同一区域的原路径坐标以及既有裁剪/显隐；原设计的睫毛束数、尖端、唇峰、器官结构保持。周边部件共享同一关键形坐标或明确的邻域跟随/固定外边界。在一次程序规范化后，各关键形拓扑保持相同；原中性到极值的中间值由程序计算，禁止让模型逐帧重画、增删路径或开新洞。
5. `build_rig` 编译成固定拓扑的数值关键形；`scan_boundaries` 自动生成端点、组合角点、原中性与内插中间值的真实 PNG。运行时只求插值，不调用模型、不重新创作几何。
6. `review_boundaries` 逐一看扫描列出的 `visual_cases`，并在共用预览中连续拖动参数。数值连续、路径有限、源文件不变均不能证明视觉可用。审查报告必须记录实际图像和逐项观察；不允许用总览图或工具报告代替所有边界审查。

用户拿到的是连续参数和清楚的 min/default/max 范围。张嘴上限、嘴型宽度、闭眼接触与邻域权重由作者完成校准，不把修 rig 的工作留给用户。不得缩小到几乎看不见的变化来“通过”。如现有结构确实不足，应报告具体路径与可达限制。

## 记录、审查与有限返修

工具真实成功退出后才 `record --status succeeded`；失败保存错误并记录 failed。agent 输出同样经过 schema/哈希校验。review 的 succeeded 只表示提交报告，记录器按 verdict 转为成功、revise 或 blocked。

每个 gate 的返修目标是 `author_boundaries`，最多两轮。issue 必须含参数组合、SVG id、实际图像、明确缺陷与建议。调用 `repair` 仅使该作者及后继失效；原稿盘点与恒等准备继续复用，不重跑整个角色。reviewer 的所有 target 必须覆盖，不可改任务 id 或清空 state 绕过上限。工具/内核缺陷交给实际所有者修复，不指使角色作者重画素材掩盖它。

续跑用 `plan --state`，校验输入签名、产物哈希与上游成功状态。真正恢复环境或修正输出后，才按显式 retry 策略重开失败节点；不能用 retry 绕过视觉 revise。超限如实说明尚未通过的部位和参数范围，不能宣称完成。

## 交付

scope、recipe、compiled和final controls均通过basic-face-v1门禁；扫描必须有12轴实际几何变化及双眼闭合curve变化的计算证据，逐一审查实际联合网格与中间态。未完成基础轴不能以limitations替代通过。

只从通过独立审查的那一份编译结果复制交付，不再增加预设，不重新运行无变化的第二遍构建。保留原 SVG、模型作者配方、数值 controls、共用离线预览、逐 case PNG、审查和真实哈希。交付副本只检查加载、边界调节和复位未被打包破坏。

最终说明区分工作流夹具测试、真实角色工具检查、独立视觉审查与实际预览体验。没有跑过角色、没有看过图片、没有实际拖过滑条，都不能写为通过。工作台本地试调数据不随游戏存档导出或同步。
