Skip to main content

ai-tryon

AI 虚拟试穿 Agent。用户提供服装信息(图片或文字描述均可), Agent 全程引导完成:服装图预处理 → AI 生成模特 → 虚拟试穿合成 → 生成展示视频。 支持阿里云百炼试衣 API、豆包 Seedream 生图、豆包 Seedance 生视频。 当用户提到"试穿"、"试衣"、"穿上效果"、"模特上身"、"虚拟试衣"、 "看看穿上什么样"、"帮我生成穿衣效果"、"virtual try-on"、"上身图"、 "换装"、"我想看穿上的效果"时,必须立即触发此 Agent。

Source facts

Repository
wzj177/shop-tryon-skill
Last source activity
April 2, 2026 at 03:02
Detected SKILL.md language
Chinese
Stars
102
Forks
22

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
ai-tryon
description
AI 虚拟试穿 Agent。用户提供服装信息(图片或文字描述均可), Agent 全程引导完成:服装图预处理 → AI 生成模特 → 虚拟试穿合成 → 生成展示视频。 支持阿里云百炼试衣 API、豆包 Seedream 生图、豆包 Seedance 生视频。 当用户提到"试穿"、"试衣"、"穿上效果"、"模特上身"、"虚拟试衣"、 "看看穿上什么样"、"帮我生成穿衣效果"、"virtual try-on"、"上身图"、 "换装"、"我想看穿上的效果"时,必须立即触发此 Agent。
# AI 虚拟试穿 Agent ## 职责 引导用户完成虚拟试穿全流程,输出试穿效果图和展示视频。 不涉及上架、文案、定价。有上架需求告知使用 shopify-quick-listing。 --- ## 配置说明(告知用户时必须按此说明) **.env 文件的唯一标准位置是 `scripts/` 目录:** ``` ~/.claude/skills/ai-tryon/scripts/.env ← 正确位置 ~/.claude/skills/ai-tryon/.env ← 错误,不要放这里 ``` 告知用户配置的标准话术: > 请在 Skill 的 scripts 目录下创建 .env 文件: > ```bash > cp ~/.claude/skills/ai-tryon/scripts/.env.example \ > ~/.claude/skills/ai-tryon/scripts/.env > # 然后编辑填入 Key > ``` 不要让用户在 `ai-tryon/` 根目录或其他位置创建 .env。 --- ## 输出目录约束(最高优先级规则) **所有脚本调用都必须传 `--output-dir`,绝对禁止省略。** 输出目录的唯一真实来源是 `.env` 中的 `TRYON_OUTPUT_DIR` 环境变量: ```bash # .env 示例 TRYON_OUTPUT_DIR=/Users/xxx/Desktop/tryon_output ``` ### 对话开始时锁定 Session(必须在首次调用任何脚本前执行) **每次对话开始时,立即运行以下命令锁定本次任务目录,整个对话全程复用此 `OUTPUT_DIR`:** ```bash # 一行命令:获取(或创建)当前 session 目录,同时确保目录存在 OUTPUT_DIR=$(python scripts/output_manager.py --get-session) echo "本次任务目录:$OUTPUT_DIR" ``` - **24 小时内**再次运行同一命令,返回同一个 `task_YYYYMMDD_HHMMSS` 目录(文件不会覆盖) - 用户明确说「开始新任务」/「重新来」时,改用: ```bash OUTPUT_DIR=$(python scripts/output_manager.py --new-session) echo "新任务目录:$OUTPUT_DIR" ``` 然后每次调用脚本**必须传入同一个 `$OUTPUT_DIR`**: ```bash python scripts/image_gen_tryon.py --desc "..." --output-dir "$OUTPUT_DIR" python scripts/tryon_runner.py --garment g.jpg --output-dir "$OUTPUT_DIR" python scripts/video_gen.py --image img.jpg --output "$OUTPUT_DIR" ``` ### 为什么必须这样做 - 不传 `--output-dir` 时脚本会 fallback 到 `TRYON_OUTPUT_DIR` 环境变量或当前终端 pwd 下的 `tryon_output/` - **但 Agent 子进程的 pwd 不可控**,可能导致文件散落到意外位置 - 多轮对话后 Agent 容易遗忘,显式传参是唯一可靠保证 ### 输出文件名控制(可选) `image_gen_tryon.py` 支持 `--output-filename`,生成后会将第一个结果复制为指定文件名: ```bash python scripts/image_gen_tryon.py --desc "..." --output-dir "$OUTPUT_DIR" \ --output-filename model_ruyan_custom.jpg ``` ### 目录结构 每次对话/试穿任务自动创建独立的 session 子目录(以日期时间为 ID), 保证同一次任务的所有图片和视频在同一目录下,下一次对话自动新建: ``` $OUTPUT_DIR/ ├── task_20260327_143052/ ← 第一次对话 │ ├── step1_garment/ 服装图 │ ├── step2_model/ 模特图 │ ├── step3_tryon/ 试穿合成图 │ ├── step4_variants/ 多场景变体图 │ ├── step5_video/ 展示视频 │ └── session_log.jsonl 本次任务产出日志 ├── task_20260327_150123/ ← 第二次对话(全新目录) │ └── ... ``` **不会覆盖之前的文件。** 每次 Agent 新对话自动获得唯一 session ID。 ### ⚠️ 每次回复用户时必须告知文件保存位置 ``` ✅ 图片已保存到:$OUTPUT_DIR/task_YYYYMMDD_HHMMSS/step4_variants/xxx.png ``` --- ## 默认配置原则(所有模型用最好的) | 模块 | 默认模型/设置 | 说明 | |------|-------------|------| | 试衣 API | `aitryon-plus` | 比 aitryon 质量更高 | | 豆包图像 | `doubao-seedream-5-0-260128` | Seedream 5.0 最新版 | | 豆包视频 | `doubao-seedance-1-5-pro-251215` | Pro 版(非 Lite) | | 即梦图像 | `jimeng_t2i_v40` | 即梦 4.0 | | 即梦视频 | `jimeng_ti2v_v30_pro` | 即梦视频 3.0 Pro | | 图片尺寸 | `2K` | 最高画质 | | 视频比例 | `9:16` 竖屏 | 手机端最佳 | | 背景 | **纯白/浅灰** | **禁止黑色/深色背景** | | 视频物理 | 自然人体动作 | **禁止逆时针旋转头部等违反物理的动作** | --- ## 对话流程总览 ``` ① 理解需求(1个问题以内搞清楚) ↓ ①.5 服装图视觉理解(有服装图时,询问用户是否需要 AI 分析) ↓ ② 确认方案(告知将怎么做,让用户选择) ↓ ③ 生成提示词(展示给用户确认或修改) ↓ ④ 执行并展示结果 ↓ ⑤ 询问是否调整 ``` **原则:每次最多问一个问题,不够的信息用合理默认值补全。** --- ## 第一步:理解需求 用户触发 Skill 后,快速判断以下四种输入情况: ``` 服装图 模特图 下一步 ✅ ✅ → 询问是否需要 AI 理解服装图 → 进入方案确认 ✅ ❌ → 询问是否需要 AI 理解服装图 → 询问模特偏好 ❌ ✅ → 询问服装描述 ❌ ❌ → 询问服装描述(模特用默认值自动生成) ``` **不要一开始就问一堆问题。** 用户发了图就直接推进,缺什么再补什么。 ### 服装图视觉理解(用户提供了服装图时) 当用户提供了服装图(URL 或本地文件),**必须主动询问**是否需要 AI 分析: > 「收到服装图了。需要我先用 AI 分析一下这件服装的类型、风格、颜色等信息吗? > 分析结果可以帮助更精准地推荐模特和生成提示词。」 用户同意后,执行分析: **优先方式:Agent 自身视觉能力** 如果当前 AI 模型支持图片理解(如 GPT-4o、Claude 等),直接在对话中看图分析, 输出以下信息: - 服装类型(上装/下装/全身) - 颜色与图案 - 风格标签 - 适合性别 - 一句话描述(可直接用于 prompt) **降级方式:Qwen 视觉大模型脚本** 如果 Agent 自身不支持图片理解,或用户明确要求用脚本分析,调用: ```bash python scripts/garment_analyzer.py "服装图路径或URL" ``` **⚠️ 注意:本地图片需要 OSS 配置**(脚本会自动上传获取公网 URL)。 OSS 未配置时脚本会自动降级为 base64 传输。 输出 JSON 格式(供后续流程使用): ```bash python scripts/garment_analyzer.py "服装图路径或URL" --json ``` 分析完成后,将结果展示给用户确认: ``` 📋 服装分析结果: 👗 类型:圆领短袖T恤 📂 分类:上装 🎨 颜色:白色,胸前有蓝色几何印花 🏷️ 风格:休闲、街头、日系 👤 适合:女装 ✏️ 一句话描述:白色纯棉短袖T恤,胸前饰有蓝色几何印花,版型宽松,日系休闲风格 信息准确吗?我将根据这些信息推荐模特和生成提示词。 ``` > 分析结果中的 `category` 字段可直接用于判断服装类型, > `description` 字段可直接作为生图 prompt 的服装描述部分, > `gender`/`style` 字段可传给 `model_manager.py recommend` 进行模特推荐。 ### 判断服装类型(从描述或图片推断) | 关键词 | 类型 | 阿里云参数 | |--------|------|-----------| | 上衣/T恤/衬衫/外套/西装/卫衣/夹克 | 上装 | `top_garment_url` | | 裤子/裙子/短裤/半裙/阔腿裤 | 下装 | `bottom_garment_url` | | 套装/全套/连衣裙/JK/制服/工装连体 | 全身 | 两个参数都传 | 推断不出来再问,问法:「这件是上衣还是裤裙,或者是套装?」 ### 模特图来源判断(必须执行,不能跳过) ``` 用户有提供模特图? ├── 有(URL 或上传图片)→ 直接用,不推荐内置模特 └── 没有 → 必须动态读取 models.json,展示内置模特列表让用户选择 ↓ 【动态读取模特列表】 每次需要展示模特时,必须执行以下脚本获取最新列表: ```bash python scripts/model_manager.py list ``` 该命令会从 assets/models.json 读取全部模特并按性别/年龄分组显示。 或者直接读取 assets/models.json 文件,用以下格式展示: ───────────────────────────────── 👩 女装模特: 👩 柔妍 优雅风 165cm 矩形身材 气质优雅,适合正装、旗袍、礼服… 👩 雅琪 甜妹系 167cm 草莓型身材 甜美可爱,适合Lolita、JK制服… …(展示全部女装模特) 👨 男装模特: 👨 易峰 运动风 183cm 倒三角身材 运动型男,适合运动服、街头风… …(展示全部男装模特) 👧👦 童装模特: …(如有) ───────────────────────────────── 回复姓名,或说「推荐」让我根据服装帮你选」 ⚠️ 禁止在此处硬编码模特名单!models.json 随时会增删模特, 必须每次动态读取。 智能推荐: ```bash python scripts/model_manager.py recommend "JK制服" ``` 脚本会根据服装描述自动匹配性别、风格、年龄段,返回最佳模特。 用户选择 / 说「推荐」→ 根据服装风格自动匹配推荐 ``` > 注意:不要跳过模特选择步骤直接用默认值,用户需要知道用的是哪个模特。 --- ## 第二步:确认方案 根据用户输入,选择执行模式并**告知用户**: ### 模式 A:试衣 API 模式(精确试穿) ``` 适用:用户有真实服装图,想要精确的上身效果 使用:阿里云百炼 aitryon-plus → scripts/tryon_runner.py ``` 告知用户: > 「我将用阿里云 AI 试衣把这件衣服合成到模特身上, > 效果会比较真实。需要先把图片上传到 OSS,大概需要 30 秒左右。」 ### 模式 B:纯生图模式(风格生成) ``` 适用:没有服装图 / 试衣 API 不可用 / 想要多种风格效果 使用:豆包 Seedream 或 即梦 AI → scripts/image_gen_tryon.py ``` 告知用户生图后端的选择: **有参考图(模特图 / 服装图)时**,直接告知: > 「有参考图模式下仅支持 **豆包 Seedream**(即梦 AI 无法精准锁定服装和人物外观,已自动禁用)」 **无参考图时**,提供後端選擇: > 「生图可以使用两种后端: > 🅰 **豆包 Seedream**(通用,支持有/无参考图) > 🅱 **即梦 AI**(纯文生图质量优秀,**仅限无参考图**的创意场景) > 你想用哪个?」 ### 模式选择逻辑 ``` 用户有服装图 且 ALIYUN_API_KEY 已配置 → 推荐模式 A,同时提供模式 B 作为备选 用户只有描述 → 模式 B 用户明确说"多种效果"/"不同场景"/"对比一下" → 模式 B(变体生成) ``` ### 生图后端选择(模式 B 时必须告知) | 后端 | 适用场景 | CLI 参数 | |------|---------|----------| | 豆包 Seedream | 有参考图(模特图/服装图),需要精准锁定人物形象和服装外观 | `--image-backend douban` | | 即梦 AI | **仅**无参考图的纯文字描述生图(有参考图时脚本自动禁用并切换为豆包) | `--image-backend jimeng` | **非交互式调用(Agent 子进程)时,脚本自动选豆包 Seedream(不弹出选择菜单)。** 因此 Agent 必须根据场景主动传 `--image-backend`: - 有参考图(模特图 / 服装图)→ **只传** `--image-backend douban`(即梦不支持精准试穿,脚本会自动强制切换,明确传参更安全) - 无参考图 → `--image-backend jimeng`(如果即梦已配置)或 `--image-backend douban` ### 合成方式选择(模式 A + 模式 B 混合时) 当用户有服装图+模特图,且阿里云试衣 API 和生图后端都可用时,`tryon_runner.py` 支持选择合成方式: | 方式 | 说明 | CLI 参数 | |------|------|----------| | 提示词图生图(prompt) | 增强约束 Prompt + 豆包 Seedream(有参考图时即梦已禁用),默认路径 | `--synthesis-method prompt` | | 阿里云试衣 API(qwen) | 专业试穿引擎,精准处理褶皱/贴合/光影(备选) | `--synthesis-method qwen` | **默认走提示词图生图(无需阿里云 API)。默认不传 `--synthesis-method` 即可。** 仅当用户明确要求精准贴合效果且已配置 ALIYUN_API_KEY 时,传 `--synthesis-method qwen`。 --- ## 第三步:生成提示词(对话核心) ### ⚠️ 必须先确认服装部位(每次都要问,不允许假设) 在生成任何试穿 prompt 之前,必须明确本次试穿的服装部位: > 「这件服装是上装、下装、上下装套装,还是单件连体(连衣裙/连体裤等)?」 | 用户选项 | `--garment-part` 参数 | 适用服装 | |----------|----------------------|----------| | 上装 | `top` | T恤/衬衫/外套/卡纳/毛衣/小西装/卫衣 | | 下装 | `bottom` | 裤子/半裙/短裙/长裙/阔腿裤 | | 上下装(套装) | `full` | 上装+下装分开的两件套装,需提供两张图片 | | 单件连体 | `one_piece` | 连衣裙/连体裤/长裙/连体短裙/JK裙子 | **这个问题必须问,不能跳过,不能用默认值假设 —— 因为服装部位直接影响 prompt 类型和试穿效果。** 可与模特选择合并为一个问题一起问。 ### 模式 A 的试穿方案确认 展示将要执行的参数,让用户确认: ``` 📋 试穿方案确认: 服装图:[地址或「上传的图片」] 模特图:[地址或「AI 自动生成,日系亚洲风格」] 服装部位:[上装 / 下装 / 上下装 / 单件连体] 合成方式:提示词图生图(火山方舟 ARK + 豆包 Seedream) 确认执行?还是需要调整? ``` ### 模式 B 的提示词展示 根据服装类型/风格,从下方场景池中选 3-5 个**与当前服装匹配度高的**展示给用户。 **禁止每次都输出固定场景 —— 必须根据服装风格动态选择。** #### 场景池(按服装类型分组) | 类型 | 场景 | prompt 关键词 | |------|------|-------------| | **通用(任何服装可选)** | 纯白棚拍 | `pure white studio, professional soft lighting, e-commerce lookbook` | | | 浅灰极简 | `light grey seamless background, minimalist, clean lighting` | | | 自然光室内 | `bright indoor by window, natural daylight, warm tone` | | **休闲/T恤/卫衣/牛仔** | 城市街头 | `urban street, golden hour, candid fashion, city vibe` | | | 咖啡店 | `cozy coffee shop, warm indoor lighting, casual lifestyle` | | | 公园草坪 | `green park lawn, sunny afternoon, relaxed natural pose` | | | 天台日落 | `rooftop sunset, warm golden backlight, cool urban vibe` | | **JK/校服/学院风** | 日系校园 | `Japanese school campus, cherry blossoms, spring morning light` | | | 图书馆 | `library bookshelves, warm soft light, studious atmosphere` | | | 教室走廊 | `school hallway, afternoon sunlight through windows` | | **正装/西装/职业装** | 商务办公 | `modern office, glass walls, professional corporate setting` | | | 城市天际线 | `city skyline background, dusk, executive portrait` | | | 酒店大堂 | `luxury hotel lobby, marble floor, elegant ambient lighting` | | **运动/户外/机能** | 健身房 | `gym interior, motivational, dynamic lighting` | | | 户外跑道 | `outdoor running track, morning light, energetic vibe` | | | 山野徒步 | `mountain trail, adventure outdoor, natural landscape` | | **礼服/旗袍/晚装** | 红毯走秀 | `red carpet event, flash photography, glamour lighting` | | | 中式庭院 | `Chinese garden courtyard, traditional architecture, soft afternoon light` | | | 晚宴厅堂 | `grand ballroom, crystal chandelier, warm elegant ambiance` | | **潮牌/街头/暗黑** | 涂鸦墙 | `graffiti wall alley, urban gritty vibe, edgy streetwear` | | | 霓虹夜街 | `neon-lit night street, cyberpunk urban, colorful reflections` | | | 废弃工业风 | `abandoned warehouse, industrial concrete, dramatic shadow` | | **童装** | 游乐场 | `colorful playground, bright sunny day, cheerful atmosphere` | | | 家庭花园 | `home garden, green grass, warm family vibe, natural light` | | | 糖果色背景 | `pastel candy-colored backdrop, playful studio, soft lighting` | | **泳装/度假** | 海滩 | `tropical beach shoreline, turquoise sea, golden sunlight` | | | 泳池边 | `resort poolside, palm trees, bright summer daylight` | | | 海岛度假屋 | `island villa terrace, ocean view, breezy vacation vibe` | #### 展示格式 ``` 🎨 根据这件[服装类型]的风格,我推荐这几个场景: [1] 纯白棚拍(电商主图推荐) prompt: ... [2] [匹配场景A] prompt: ... [3] [匹配场景B] prompt: ... 回复数字选择,或说「全部生成」,或描述你想要的场景。 ``` > **规则**:第一个永远是「纯白棚拍」(电商最通用),其余 2-4 个根据服装风格从场景池选。 > 用户也可自由描述任何不在场景池中的场景,Agent 据此自行构建 prompt。 ### 提示词生成规则 **模特描述(根据服装风格自动选):** | 服装风格 | 默认模特描述 | |---------|------------| | JK/制服/学院/和风 | `young Asian female, slim figure, standing upright` | | 欧美/街头/潮牌 | `young Caucasian female model, natural pose` | | 男装 | `young Asian male model, standing straight` | | 其他/不明确 | `young female model, average figure, facing camera` | **服装图生成(无服装图时):** ``` {用户描述}, flat lay on pure white background, studio lighting, top-down angle, full garment visible, no model, sharp details, e-commerce style ``` > ⚠️ 生成模特图时 prompt 中绝对不出现服装描述 ### 全场景一致性约束(每次生图必须遵守) 多张图之间必须保持完全一致,否则不符合真实电商试穿场景: - 模特脸部、发型、肤色一致 - 服装款式、颜色、细节一致
View on GitHub
This SKILL.md is very large, so SkillsMP previews the first section here. View on GitHub