| name | image-outfit-swap |
| description | AI 换装,保留人物面部和体型只替换衣物,支持文字描述或服装参考图。仅在用户明确要求对已有单人人物图片换装、试穿、换衣服或替换服饰,并已提供人物图片时触发。 |
| version | 1.0.0 |
| metadata | {"openclaw":{"requires":{"bins":["meitu"],"env":["MEITU_OPENAPI_ACCESS_KEY","MEITU_OPENAPI_SECRET_KEY","MEITU_OPENAPI_TOOL_TASK_MODE"],"paths":{"read":["~/.meitu/credentials.json","~/.meitu/tool-registry.json","~/.openclaw/workspace/visual/","./openclaw.yaml"],"write":["~/.openclaw/workspace/visual/","./output/"]}},"primaryEnv":"MEITU_OPENAPI_ACCESS_KEY"}} |
| security | {"credential_use":"Uses Meitu OpenAPI credentials from env or ~/.meitu/credentials.json for CLI calls; credentials must not be echoed, logged, or embedded in prompts.","remote_processing":"User-provided person images, optional clothing reference images, and generated outfit prompts are sent to Meitu OpenAPI.","biometric_notice":"Portrait photos are sensitive biometric-like personal data. Confirm the depicted person has agreed to this processing before running the workflow.","persistence":"Generated try-on or outfit-swap results are written to the resolved local output directory."} |
| requirements | {"credentials":[{"name":"MEITU_OPENAPI_ACCESS_KEY","source":"env | ~/.meitu/credentials.json"},{"name":"MEITU_OPENAPI_SECRET_KEY","source":"env | ~/.meitu/credentials.json"}],"env":{"MEITU_OPENAPI_TOOL_TASK_MODE":"command"},"permissions":[{"type":"file_read","paths":["~/.meitu/credentials.json","~/.meitu/tool-registry.json","~/.openclaw/workspace/visual/","./openclaw.yaml"]},{"type":"file_write","paths":["~/.openclaw/workspace/visual/","./output/"]},{"type":"exec","commands":["meitu"]}]} |
Image Outfit Swap
Overview
对已有人物图片做 AI 换装,保留人物面部 / 体型 / 形象只替换衣物,支持文字描述目标服装或上传服装参考图(人物图+服装图通过 image_list 传入)。简单颜色修改(如"把裙子改成红色")也属于本工具。
执行前应让用户清楚知道:本 Skill 会读取 Meitu 凭证、调用本地 meitu CLI、将用户提供的人物图片、可选服装参考图与换装描述发送到 Meitu OpenAPI 处理,并把结果写入 ./output/ 或 $VISUAL/output/image-outfit-swap/。涉及人像照片时,应确认对照片中人物具备处理授权。
API Mapping
- 换装主路径:
image_praline_edit_v2
- 换装降级:
image_praline_edit_2
- 工具内兜底:
image_mint_edit
- model 映射:
auto(默认)/praline_pro→v2 / praline_lite→edit_2 / mint_edit→mint
Dependencies
- meitu-cli:
>=2.0.6
- 凭证:CONFIG AKSK →
meitu tools update;EXEC AKSK → 实际执行(见根 CONFIG.md)
- 环境变量:
MEITU_OPENAPI_TOOL_TASK_MODE=command
路径别名:$VISUAL = {OPENCLAW_HOME}/workspace/visual/
Core Workflow
Preflight → Execute → Deliver
Preflight
meitu --version ≥ 2.0.6
- 已用 CONFIG AKSK 跑过
meitu tools update
- 当前 AKSK = EXEC,
MEITU_OPENAPI_TOOL_TASK_MODE=command
- output_dir:openclaw.yaml →
./output/ |else → $VISUAL/output/image-outfit-swap/;mkdir -p {output_dir}
Execute
触发信号 / 路由规则
| 场景 | 判定条件 | 路由 |
|---|
| 换装 / 换衣服 | 换装、换衣服、试穿、穿上、改成 xxx 服装 | image_praline_edit_v2 → image_praline_edit_2 → image_mint_edit |
| 虚拟试穿(有服装图) | 用户上传了 clothes_image_url | image_praline_edit_v2(image_list=[人物图, 服装图]) |
| 简单颜色修改(衣服) | 把裙子改成红色 | image_praline_edit_v2 |
参数定义
| 参数 | 类型 | 必填 | 说明 |
|---|
image_url | STRING | 是 | 人物图片地址。缺失 → 提示"请提供需要换装的人物图片" |
prompt | STRING | 是 | 目标服装描述。缺失 → 提示"请描述目标服装款式" |
clothes_image_url | STRING | 否 | 服装参考图地址。提供时与 image_url 一起通过 image_list 传入 image_praline_edit_v2 |
API 映射说明:
image_praline_edit_v2(主路径):prompt 自动扩写为英文换装指令(如 "Change the person's outfit to a white linen shirt, keep face and body unchanged")
image_praline_edit_2(降级):prompt 直传
image_mint_edit(兜底):prompt 直传
工具调用
meitu image-outfit-swap --image_url <person> --prompt "<target outfit>" --json --download-dir {output_dir} --skill_name skill_image-outfit-swap
meitu image-outfit-swap --image_url <person> --clothes_image_url <clothes> --prompt "<target outfit>" --json --download-dir {output_dir} --skill_name skill_image-outfit-swap
错误降级
| 场景 | 处理方式 |
|---|
image_url 缺失 | 提示"请提供需要换装的人物图片",不调用 API |
image_url 不可访问 | 直接返回图片链接无效错误,不重试 |
prompt 缺失 | 提示"请描述目标服装款式" |
prompt 过于模糊 | 提示细化描述(款式 / 颜色 / 材质 / 风格) |
| 图片无明显人物 | 返回错误,提示需包含清晰人物 |
image_praline_edit_v2 调用失败 | 自动降级至 image_praline_edit_2 |
image_praline_edit_2 调用失败 | 自动降级至 image_mint_edit |
image_mint_edit 调用失败 | 返回错误 |
| 内容合规拦截 | 直接返回合规提示,不重试、不降级 |
Deliver
- 使用 Preflight 解析的 output_dir
- 从
downloaded_files[0].saved_path 读取已下载文件路径
mv {downloaded_files[0].saved_path} {output_dir}/{YYYY-MM-DD}_{descriptive}_image-outfit-swap.{ext}
Output
- 格式:image(PNG/JPG 由 API 决定)
- 位置:项目 →
./output/,一次性 → $VISUAL/output/image-outfit-swap/
基线 Task ID
见 references/task-id-baseline.md 中对应行。