关于 adobe-retouch-portraits
面向摄影师的批量人像修饰技能,使用 Adobe 创意工具对选定图片执行非生成式修饰流程。它支持统一调整,并仅在表面提供相应工具时进行有限的背景生成式清理。
主要功能
- 01批量修饰人像照片
- 02自动拉直与色调调整
- 03使用预设调整人物及整体风格
- 04可选背景模糊与裁剪
- 05生成式清理仅限非人物背景
适用场景
- 01统一处理一组人像照片
- 02为肖像调整色调与整体风格
- 03柔化人像背景并裁剪构图
MCP 相关
使用 Adobe MCP App 组件选择图片和预览结果,并调用 Adobe 创意工具执行修饰。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ adobe/ skills --skill adobe-retouch-portraits安装后在 Claude Code 中输入/adobe-retouch-portraits确认已加载。
详细介绍
Adobe 人像修饰
面向摄影师的自动批量修饰流程。用户选择图像,可选择添加调整项,然后由 Agent 使用 Adobe 创意工具运行完整批处理。
界面说明:默认流程使用 Adobe 的 MCP App 小组件——
asset_add_file选择器(步骤 1)和asset_preview_file预览(步骤 2c 和 8)。请按说明操作。只有当此界面不提供小组件工具时(例如 Codex),才使用相应步骤附带的无小组件备用方案。如果没有问题小组件,请将AskUserQuestion提示以带标签的纯文本选项呈现。
**此处不进行交互式图像编辑。**此规则覆盖
adobe_mandatory_init的交互式图像小组件部分中对单张图像小组件的说明:此技能是批量修饰流程,因此无论图像数量多少,都不要调用或提及交互式编辑小组件(任何_app工具)——按下文正常运行流程。
生成式 AI 政策
**默认情况下,此修饰流程完全不使用生成式 AI。**核心工作流——自动拉直、自动色调、调整、预设、模糊和裁剪——均不使用生成式 AI;对于不允许使用生成式 AI 的界面(包括 Claude),这套非生成式流程是唯一可用的操作方式。
**只有在界面允许的情况下才能进行生成式编辑。**只有当界面提供 image_fill_area 等生成式工具时(例如 Codex),才允许使用生成式 AI。如果没有此类工具(例如 Claude),则不得进行任何生成式编辑——不要调用、尝试、提供或提及这类编辑;仅运行非生成式流程。
**允许使用生成式 AI 时,也仅限于背景,并应尽量少用。**只有在这种情况下,才可使用 image_fill_area 修复非人物区域(墙壁、地板、天空、道具)上的灰尘点、传感器瑕疵或划痕,并且只有在正常查看尺寸下看不出修复痕迹时才可进行——去除一个灰尘点,而不是重绘墙壁。绝不在任何界面上对面部、皮肤、头发、身体或衣物使用生成式工具。不要改变场景、移除物体、更改环境或扩展画面。
如果用户要求对人物进行生成式修改(例如“改变她的发色”“让他看起来年轻些”),请说明此技能不会对人物进行生成式编辑;如果当前界面完全不支持生成式功能,也要说明这里无法进行生成式编辑——然后建议使用专门的生成式工作流。
工具参考(Adobe 创意连接器)
| 步骤 | 工具 | 备注 |
|---|---|---|
| 导入 | asset_add_file + read_widget_context | 交互式文件选择器;通过 read_widget_context 解析 URI |
| 导入 (无小组件回退方案) | asset_initialize_file_upload + asset_finalize_file_upload | 仅当 asset_add_file 不可用时使用 — 将本地文件暂存到 CC |
| 发现预设 | image_list_presets | 启动时调用一次;构建智能预设方案 |
| 拉直 | image_auto_straighten | 每张图片 |
| 自动色调 | image_apply_auto_tone (cameraRawFilter) | 每张图片 |
| 色调调整 | image_apply_adjustments | 批量 — 一次调用完成所有调整 |
| 主体/身体检测 | image_select_subject | 检测面部、身体部位和衣物 |
| 自适应增强 | image_apply_preset | 每张图片,可选启用(参见步骤 5) |
| 背景模糊 | image_apply_lens_blur | 每张图片,优先使用 — 支持景深感知的散景 |
| 强烈/风格化模糊 | image_apply_effects (effect: "gaussianBlur") | 每张图片,仅在用户明确要求强烈模糊时使用;回退到 image_apply_gaussian_blur |
| 背景清理 | image_fill_area(可选;生成式) | 仅在表面支持生成式 AI 时使用(工具可用,例如 Codex)— 仅限背景,绝不用于人物;Claude 上不使用 |
| 裁剪 | image_crop_and_resize | 每张图片 |
| 采样预览 | asset_preview_file | 仅预览 image[0] 的处理前/后效果 (无小组件回退方案:直接提供 URL) |
| 最终预览 | asset_preview_file | 直接提供所有最终 URL,不执行调整大小步骤 (无小组件回退方案:直接提供 URL) |
| Firefly Board | create_firefly_board | 使用从导入过程中获取的源预签名 URL |
步骤 0 - 先决条件:初始化 Adobe 工具
首先调用 adobe_mandatory_init。它会返回文件处理规则和工具路由指引,供后续工作流使用。
{ "skill_name": "adobe-retouch-portraits", "skill_version": "4.1.0" }
它还会告知此界面支持哪些小组件,以及是否启用了出口。如果 asset_add_file 和 asset_preview_file 均可用,请遵循默认流程(按原样执行步骤 1、2c 和 8)。如果其中一个不可用(例如 Codex),请使用对应步骤的无小组件回退方案。如果工具结果中包含 importantNote,或连接器针对当前轮次注入了“资产存储与显示”指引,请遵循该指引 — 它将覆盖此处的默认展示设置。
步骤 0b:发现可用预设
在初始化后立即调用 image_list_presets — 在导入或询问用户之前。这样可以获取该用户套餐可用的完整预设列表,以便为步骤 5 制定智能且考虑套餐限制的预设选择方案。
Tool: image_list_presets
Params: {}
根据返回的列表,将预设归入四类,构建预设方案。使用以下命名信号对每个预设进行分类 — 这些是启发式规则,而不是硬编码的名称,因此请酌情判断:
预设计划分类
1. 自适应人物预设 — 针对主体的身体、皮肤、衣物或牙齿
命名信号:Adaptive、Subject、Portrait、Person、Skin、Body、Clothes、Outfit、Pop、Warm Pop、Enhance、Teeth、Whiten、Smile、Brighten
目标:选择 1–3 个最能提升人物主体效果的预设。优先选择针对皮肤/身体,或能提升主体层次对比度/暖色调的预设。避免只影响天空或背景的预设。任何带有牙齿/微笑/美白信号的预设都应归入此类,以便在第 2 步选择 Whiten Teeth 时使用。
2. 全局氛围/色调预设 — 影响图像整体色调特征
命名信号:Mood、Tone、Warm、Cool、Golden、Cinematic、Film、Natural、Airy、Fade、Matte、Classic
目标:准确选择 1 个预设。选择最适合人像的中性或暖色调效果——除非用户要求编辑风格,否则避免强烈的风格化效果(霓虹、超现实)。
3. 全局卡通/外观预设 — 处理风格化外观
命名信号:Toon、Style、Look、Preset、Vintage、Retro、B&W、Mono、Haze、Glow、Edit、Creative
目标:准确选择 1 个预设。选择能与氛围预设相辅相成的效果,而非重复效果。如果氛围预设已经具有电影感/暖色调,则选择更轻微的风格化效果。
4. 背景模糊预设 — 柔化背景,让主体更突出
命名信号:Blur Background、BG Blur、Bokeh、Depth、Focus、Defocus
目标:准确选择 1 个背景模糊预设。用户选择使用此预设时,它会取代第 6 步中的模糊处理(image_apply_lens_blur / image_apply_effects)。
回退策略:
- 如果没有预设符合某个分类,则将该分类留空,不要勉强选择不合适的预设。
- 如果计划中完全没有返回预设(403 或列表为空),则完全跳过第 5 步,并在摘要中注明:“此计划无法使用自适应增强——未找到预设。”这是非阻塞错误——所有其他处理流程步骤(色调调整、预览关卡、完整批处理)都照常继续。仅跳过第 5 步。
- 如果找不到明显适合人像的选项,则跳过分类 2 和 3;这两个分类是全局氛围/风格图层。跳过也好过应用不合适的预设。
请在第 2 步之前,将选定的预设保存为预设计划。用户在第 2a 步中选择的氛围/风格可能会影响每个分类中所选的预设——请参阅第 2a 步的指南。在确认消息(第 2 步)中向用户展示最终计划。
步骤 1:图像导入
不带参数调用 asset_add_file。这会呈现一个交互式界面,用户可以:
- 浏览 CC 存储空间并选择文件夹或单个文件
- 从设备上传(本地文件)
- 在 Cowork 中:直接选择本地文件夹路径
Tool: asset_add_file
Params: {}
重要提示:asset_add_file 会返回 imageURIs: []——这是预期行为,不是错误。用户选择文件后,实际 URI 会在下一条用户消息中传来。请等待用户后续消息,再继续操作。
收到 URI 后,调用 read_widget_context 并传入 asset_add_file,将其解析为正确的预签名 S3 URL。后续所有工具调用都使用这些解析后的 URL——dcx-stage.adobe.io URI 受网络限制,必须先通过 read_widget_context 解析。
在 Claude 上始终遵循此选择器流程,即使用户的消息中已经包含 CC URN(例如 urn:aaid:sc:US:…)。CC URN 不是有效的预签名 URL——只有 read_widget_context 能解析它们。
将得到的预签名 URL 收集为 sourceURIs[],然后继续步骤 2a。
无小组件时的备用方案(仅当此界面不提供
asset_add_file时,例如 Codex)——不要要求用户选择文件;从文件所在位置获取源 URI。image_*工具仅接受 Creative Cloud 存储 URI,绝不能使用原始本地路径。
来源 操作 本地路径中的文件(例如 /mnt/user-data/uploads/…)**先检查 adobe_mandatory_init的出口状态。**如果已启用出口:以编程方式暂存每个文件——获取文件大小和 MIME 类型,调用asset_initialize_file_upload({ path: "<filename>", media_type: "<mime>" }),将字节 PUT 到返回的上传 URL,然后调用asset_finalize_file_upload({ filename: "<filename>", transfer_document: <from initialize response> });后续调用使用各自返回的预签名 CC URL。如果出口已禁用或编程上传失败,则无法在此界面继续使用此备用方案——请向用户说明此限制。已在 Creative Cloud 中的文件 直接通过其 CC 预签名 URL 引用。 编程流程既不使用
asset_add_file,也不使用read_widget_context。将得到的预签名 CC URL 收集为sourceURIs[]。
步骤 2a:氛围与风格选择
在展示流程计划之前,询问用户希望肖像呈现何种氛围与风格。这有助于确定预设计划各类别中预设的优先级。
如果用户的消息已经明确说明氛围或风格(例如“温暖明亮”“暗调忧郁”“简洁头像照”“编辑风格”),直接据此推断——跳过此问题,并使用下表进行对应。
如果未指定氛围或风格,发送以下消息并询问:
📸 Got [N] photo(s)! Before I build your retouching plan — what kind of look are you going for?
Question (single_select):
question: "🎨 What mood or style do you want for these portraits?"
options:
- "Natural & Clean — true-to-life, polished, minimal"
- "Warm & Glowing — golden, soft, flattering"
- "Moody & Dramatic — dark, contrasty, editorial"
- "Bright & Airy — light, fresh, lifestyle"
- "Cinematic — film-inspired, desaturated, storytelling"
- "Bold & Vibrant — punchy, vivid, social-ready"
暂停——在用户回复前不要继续步骤 2。(仅在已提出问题时需要暂停。如果已从用户消息中推断出氛围或风格,则跳过此暂停,直接继续步骤 2。)
氛围 → 预设计划指南
使用所选氛围调整预设计划(在步骤 0b 中制定)。在每个类别中,优先选择名称与所选氛围相符的预设:
| 氛围 | 氛围/色调类别中优先选择 | 卡通/外观类别中优先选择 |
|---|---|---|
| 自然简洁 | Natural、Clean、Classic、Neutral | 轻盈/细腻的外观 |
| 温暖明亮 | Warm、Golden、Glow、Sunset、Amber | 温暖协调的外观 |
| 忧郁戏剧化 | Moody、Dark、Cinematic、Shadow、Drama | Matte、Fade、Vintage |
| 明亮通透 | Airy、Bright、Light、Fresh | 柔和、明亮的外观 |
| 电影感 | Cinematic、Film、Fade、Classic | Matte、Grain、Retro |
| 大胆鲜艳 | Vibrant、Pop、Bold、Vivid | 鲜明醒目的外观 |
如果预设计划中的某个类别有多个候选项,选择最符合所选氛围的预设。如果某个类别只有一个预设,无论氛围如何都使用它。
步骤 2:说明处理流程并提供选项
确认氛围/风格后,检查用户的消息是否已经完整说明增强、微调和裁剪偏好。
如果用户一开始就完整说明了偏好(例如“修图时突出主体,不微调,裁剪为 1:1”),则完全跳过 AskUserQuestion,直接发送确认消息,然后继续执行步骤 2c(样片预览)。预览关卡为必需步骤——即使用户一开始就说明了所有偏好,也必须执行。切勿跳过预览直接开始完整批处理。请使用下方的按钮→参数对照表映射用户说明的偏好。
如果用户没有完整说明偏好(例如只说“请修一下这些照片”,没有进一步说明),请先发送此消息:
📸 Got [N] photo(s)! The default pipeline will auto-straighten and auto-tone every image.
Let me know if you'd like any extras 👇
然后调用 AskUserQuestion,提出以下三个问题:
Question 1 (multi_select):
question: "✨ Adaptive AI enhancements (select any — or none to skip)"
options:
- "All"
- "Enhance Subject — adaptive preset boosts on the person, skin & clothes"
- "Mood & Tone — apply a portrait-flattering global tone look"
- "Toon & Style — apply a stylistic look treatment"
- "Blur Background — soft bg blur preset, respects edges"
- "Whiten Teeth — brightens teeth (smiles only)"
- "None"
Question 2 (multi_select):
question: "🎛️ Manual tweaks (select any — or none to skip)"
options:
- "Recover highlights"
- "Lift shadows"
- "More contrast"
- "More vibrant"
- "Desaturate (muted tones)"
- "Blur background — depth-aware bokeh (standard)"
- "Heavy background blur — stylized gaussian blur"
- "None"
Question 3 (single_select):
question: "✂️ Crop ratio"
options:
- "Auto (landscape→4:3, portrait→3:4)"
- "1:1 square"
- "4:5 portrait"
- "16:9 wide"
在用户回复选择之前暂停处理。
将按钮选项映射为参数
自适应增强(映射到步骤 0b 中设定的预设方案):
- “全部” → 运行全部四个类别(自适应人物 + 氛围 + 卡通 + 背景模糊);如果检测到人脸,再添加牙齿美白
- “增强主体” → 应用 自适应人物预设 类别中的所有预设
- “氛围与色调” → 应用 全局氛围/色调 类别中的单个预设
- “卡通与风格” → 应用 全局卡通/外观 类别中的单个预设
- “模糊背景” → 应用 背景模糊 类别中的预设(该图片跳过步骤 6)
- “牙齿美白” → 应用自适应人物预设类别中的牙齿美白预设(未检测到人脸时跳过;参见步骤 5 中的人体检测)
- “无” → 完全跳过步骤 5
手动微调(在步骤 4b 中合并到一次 image_apply_adjustments 调用中——使用诊断得出的范围,而非硬编码默认值):
- “恢复高光” →
highlights: -40 to -70(轻度过曝时使用 -40;高光严重过曝时使用 -70) - “提亮阴影” →
darks: +30 to +50(正值可提亮阴影细节;轻微提亮使用 +30;阴影严重死黑时使用 +50;如果肤色变暗淡,优先使用vibrance进行补偿) - “增强对比度” →
contrast: +15 to +30(轻微增强使用 +15;只有图像非常平淡时才使用 +30) - “增强鲜艳度” →
vibrance: +15 to +30(人像优先使用vibrance而非saturation——鲜艳度可保护肤色) - “降低饱和度” →
saturation: -20 to -40(色彩柔和时使用 -20;接近单色效果时使用 -40) - “模糊背景 — 景深感散景(标准)” →
image_apply_lens_blur→blurRadius: 8(景深感自然散景;如果也应用了自适应背景模糊预设,则跳过步骤 6) - “强烈模糊背景 — 风格化高斯模糊” →
image_apply_effects→effect: "gaussianBlur", blurRadius: 12, blurTarget: "background"(仅在用户明确要求强烈/风格化模糊时使用;不要与自适应背景模糊预设同时使用) - “无” → 完全跳过步骤 4b
裁剪:
- “自动” → 横向 →
"4:3",纵向 →"3:4",焦点:"face" - “1:1 正方形” →
output: "1:1",焦点:"face" - “4:5 纵向” →
output: "4:5",焦点:"face" - “16:9 宽屏” →
output: "16:9",焦点:"face"所有裁剪模式均使用focus: "face"。如果未检测到人脸,则改用focus: "subject"。
收到按钮选项后,向用户确认设置,并显示预设方案:
✅ Got it — here's your retouching plan:
- Style: [selected mood/style from Step 2a]
- Auto-straighten + auto-tone + auto-light
- Adaptive enhancements: [list selected categories]
- Person presets: [preset names from bucket 1, or "none"]
- Mood preset: [preset name, or "none"]
- Toon preset: [preset name, or "none"]
- Blur BG preset: [preset name, or "none"]
- Manual tweaks: [list if any, or "none"]
- Crop: [ratio or "auto 4:3/3:4"]
- Blur: [adaptive / heavy / none]
I'll preview the first image so you can confirm before I apply this to all [N] photos.
步骤 2b:大批次警告(N > 5)
当 N > 5 时,将以下内容加入确认消息:
⏱ Estimated time for [N] images:
6–10 → ~3–5 min
11–20 → ~5–10 min
20+ → 10+ min
Feel free to step away — I'll post a ✅ completion summary with your
download links when done. (No Slack/email notifications available from here.)
步骤 2c:预览示例(图像 1 的处理前/后对比)
运行完整批处理前,使用已确认的设置,仅对第一张图像运行完整流程(步骤 3–7)。这样用户就能真实预览将应用于每张图像的效果。
为加快预览,先将图像 1 缩小到长边 1200px,再运行处理流程。确认后,最终批处理(步骤 3)会以完整分辨率处理所有图像,包括图像 1;不得复用 1200px 预览的输出。
Tool: image_crop_and_resize
Params:
imageURI: "<sourceURIs[0]>"
options:
output: { width: 1200, height: 1200 } # caps both dimensions at 1200px; fit:contain preserves aspect ratio, so the long edge (width on landscape, height on portrait) is capped at 1200px
fit: "contain"
outputFileType: "jpeg"
将结果存储为 preview_source_url。仅在预览流程中,将这个缩小后的 URL(而非 sourceURIs[0])用作步骤 3–7 的输入。
- 仅对
preview_source_url运行完整流程(拉直 → 色调 → 调整 → 自适应增强 → 模糊 → 裁剪)。 - 调用
asset_preview_file,将原始全分辨率源图像作为“处理前”,将处理后缩小的输出作为“处理后”——asset_preview_file会自行生成缩略图,因此用户看不出尺寸差异:
asset_preview_file({
assets: [
{ name: "Before", presignedAssetUrl: sourceURIs[0] },
{ name: "After", presignedAssetUrl: processed_preview_url }
]
})
无组件回退方案(仅当此界面不支持
asset_preview_file时使用,例如 Codex)——直接在消息中展示带标签的两个 URL:处理前:<sourceURIs[0]> 处理后:<processed_preview_url>能够内嵌显示图像 URL 的 UI 客户端会自动显示两张图像。在 Codex 或其他非 UI Agent 中,使用原生文件下载工具将两个资源下载到工作区,分别将
<sourceURIs[0]>保存为before.jpg,将<processed_preview_url>保存为after.jpg,然后改为引用这些本地路径。
- 发送以下消息:
👆 Here's a before/after preview using your first photo and the settings you selected.
Please confirm this looks right before I apply it to all [N] images.
- 使用单个问题调用
AskUserQuestion:
Question (single_select):
question: "Does the preview look good?"
options:
- "✅ Yes — apply to all [N] images"
- "🎛️ No — adjust settings first"
- "❌ Cancel"
此处必须完全暂停处理。 在用户明确选择“是”之前,不得开始完整批处理。此确认环节为必需步骤,无论用户之前多么明确地表达过偏好,每次都必须执行。
如果选择“是”: 继续执行步骤 3,以完整分辨率处理所有图像(sourceURIs[0…N-1])。不得复用 1200px 预览结果——该结果仅用于确认,不得出现在最终交付内容中。
如果选择“否 — 调整设置”: 返回步骤 2a,必要时重新收集氛围/风格偏好,然后返回步骤 2(AskUserQuestion)重新收集其他偏好。确认新设置后,必须始终重复预览——使用新设置重新处理图像 1,展示新的处理前/后对比,并再次要求用户明确确认后才能继续。调整设置后绝不可跳过预览确认环节。
如果选择“取消”: 停止处理,并告知用户可以随时重新开始。
步骤 3:自动拉直(逐张处理)
一次循环处理一张图像(不支持批处理):
Tool: image_auto_straighten
Params:
imageURIs: ["<source_uri_N>"]
options:
uprightMode: "auto"
constrainCrop: true
输出: 将 results[0].outputUrl 收集到 straightened_urls[]
失败时:使用原始 URI,并为该图像备注“跳过拉直”。
步骤 4:自动调整色调(逐张处理)
Tool: image_apply_auto_tone
Params:
imageURIs: ["<straightened_url_N>"]
options:
type: "cameraRawFilter"
输出: 将 results[0].outputUrl 收集到 toned_urls[]
步骤 4b:可选色调调整(批处理)
如果用户要求调整色调,请将所有选定的调整项合并到一次 image_apply_adjustments 调用中——无需串联多次调用:
Tool: image_apply_adjustments
Params:
imageURIs: [all toned_urls]
options:
# Include only the params for tweaks the user selected.
# Pick a SINGLE numeric value from the diagnostic ranges in Step 2 — do not pass the range string itself.
# Example values shown; actual values must be chosen based on image severity:
exposure: 0.4 # "Adjust exposure" — e.g. +0.3 to +0.7 (lift) or -0.3 to -0.5 (reduce)
highlights: -55 # "Recover highlights" — range: -40 to -70 (severity-matched)
darks: 40 # "Lift shadows" — range: +30 to +50 (positive lifts dark areas)
brightness: 10 # if requested — range: +5 to +20
contrast: 20 # "More contrast" — range: +15 to +30 (lower end unless very flat)
vibrance: 20 # "More vibrant" — range: +15 to +30 (prefer over saturation for portraits)
saturation: -30 # "Desaturate" — range: -20 to -40 (lower end unless heavy muting desired)
outputFileType: "jpeg"
省略用户未选择的任何参数。一次调用即可同时处理所有指定的调整项。
步骤 5:自适应增强(逐张处理,仅限选择启用)
仅当用户选择了一项或多项自适应增强时,才运行此步骤。要应用的预设来自步骤 0b 中制定的预设计划,而非硬编码的名称。
5a:主体与身体检测
应用人物或牙齿预设之前,调用 image_select_subject 了解画面中的内容。这将决定两件事:应用哪些自适应人物预设,以及是否适合使用 Whiten Teeth。
Tool: image_select_subject
Params:
imageURI: "<tweaked_url_N>" # Step 4b output if tweaks ran; otherwise toned_url_N
options:
bodyParts: ["Face", "Torso", "Clothing", "Skin", "Hair"]
按以下方式使用检测结果:
- 检测到脸部 → 如果用户选择了 Whiten Teeth,则包含任何牙齿/微笑预设
- 检测到躯干/皮肤/头发 → 包含以身体为目标的自适应人物预设(例如皮肤平滑、身体增强)
- 检测到服装 → 如果存储桶 1 中有针对服装/穿搭的自适应预设,则包含这些预设
- 未检测到主体 → 对此图像跳过所有自适应人物预设;仍然应用氛围和卡通预设
5b:应用预设计划(按顺序)
按以下顺序应用预设计划中适用的预设,并将每个预设的输出链接为下一个预设的输入。仅运行用户在步骤 2 中选择的存储桶——使用该步骤中的映射表确定此次运行启用哪些存储桶。跳过用户未选择的存储桶,以及启用的存储桶中检测条件不满足的预设(参见 5a)。
顺序(仅运行已选择的存储桶):
- 自适应人物预设(存储桶 1)——仅当选择了“增强主体”、“美白牙齿”或“全部”时运行。在该存储桶中:如果只检测到脸部、未检测到身体,则跳过身体/服装预设;如果未检测到脸部,则跳过 Whiten Teeth。
- 全局氛围/色调预设(存储桶 2)——仅当选择了“氛围与色调”或“全部”时运行;应用一次
- 全局卡通/外观预设(存储桶 3)——仅当选择了“卡通与风格”或“全部”时运行;应用一次
- 背景模糊预设(存储桶 4)——仅当选择了“模糊背景”或“全部”时运行;应用一次;如果已应用,对此图像跳过步骤 6
Tool: image_apply_preset
Params:
imageURI: "<previous_output_url>" # for first preset: tweaked_url_N (Step 4b output) or toned_url_N if no tweaks ran; for subsequent presets: output of prior preset
options:
presetName: "<exact preset name from Preset Plan>"
输出: results[0].outputUrl → 链接为下一个预设或步骤 6 的输入。
遇到 403(权限): 跳过该预设。在交付摘要中注明:“[预设名称] 已跳过——不包含在您的 Adobe 计划中。”继续处理其余预设。 遇到其他失败: 使用上一步的输出;在摘要中注明“[预设名称] 已跳过”。
步骤 6:背景模糊(逐张图像处理)
如果在步骤 5 中已应用背景模糊预设(存储桶 4),则完全跳过此步骤——自适应预设已处理背景模糊。
未选择模糊: 完全跳过此步骤。
标准背景模糊(用户选择了“模糊背景”,且未应用自适应模糊预设):
优先使用 image_apply_lens_blur——它会自动检测主体并保持其清晰,从而生成具有景深感的逼真散景:
Tool: image_apply_lens_blur
Params:
imageURI: "<url_N>"
options:
blurRadius: 8 # 6–10 for subtle separation; higher for stronger bokeh
失败时:回退到下方的 image_apply_effects,并注明“镜头模糊不可用——改用高斯模糊”。
强烈/风格化模糊(用户明确要求“强烈模糊背景”):
Tool: image_apply_effects
Params:
imageURIs: ["<url_N>"]
options:
effect: "gaussianBlur"
blurRadius: 12
blurTarget: "background"
如果此运行环境中无法使用 image_apply_effects(工具未注册,或调用因未知工具错误而失败),则使用相同参数重试一次,但移除
effect 判别参数,改用旧版的逐效果工具 image_apply_gaussian_blur:
Tool: image_apply_gaussian_blur
Params:
imageURIs: ["<url_N>"]
options:
blurRadius: 12
blurTarget: "background"
如果此步骤是因上文的 image_apply_lens_blur 调用失败而进入,同样适用此回退方式(此时使用 blurRadius: 8)。
失败时:使用上一步的输出,并为该图像注明“已跳过模糊”。
输出: results[0].outputUrl
步骤 7:裁剪(逐张图像处理)
默认行为:
- 横向图像 → 裁剪为
"4:3",焦点:"face" - 纵向图像 → 裁剪为
"3:4",焦点:"face" - 用户指定比例(1:1、4:5、16:9 等) → 使用该比例,焦点:
"face" - 如果裁剪工具未检测到脸部,则回退为
focus: "subject"
Tool: image_crop_and_resize
Params:
imageURI: "<blur_url_N>"
options:
output: "4:3" # or "3:4" / user choice
fit: "reframe"
focus: "face" # falls back to "subject" if no face detected
outputFileType: "jpeg"
这些是最终的全分辨率交付成果。 收集为 final_urls[]。
步骤 8:最终预览 + 下载链接 + Firefly 画板
将最终输出 URL 直接传给 asset_preview_file——不要先用 image_crop_and_resize 处理,因为这会引入白边或不必要的裁剪。asset_preview_file 会正确处理缩略图。
无论批次大小如何,每次运行都调用 asset_preview_file:
asset_preview_file({
assets: [
{ name: "portrait_1.jpg", presignedAssetUrl: final_url_1 },
{ name: "portrait_2.jpg", presignedAssetUrl: final_url_2 },
// ... one entry per image
]
})
无组件回退方案 (仅当此界面不支持
asset_preview_file时使用,例如 Codex)——在完成消息中直接列出最终输出 URL,每张图片占一项:portrait_1.jpg → <final_url_1> portrait_2.jpg → <final_url_2> // ... 每张图片占一项能在界面内嵌显示图片 URL 的客户端会自动显示图片。在 Codex 或其他非 UI Agent 中,使用原生文件下载工具将每张图片下载到工作区(将
<final_url_1>保存为portrait_1.jpg等),并引用这些本地路径。
创建 Firefly 画板
按如下方式调用 Firefly 画板工具,并传入最终输出 URL:
create_firefly_board({
import_adobe_storage: [
final_output_url_1,
final_output_url_2,
// ...
]
})
画板链接处理:
- 提取返回的 URL,并将其存储为
board_url。 - 如果
board_url存在且非空,将其包含在完成消息中。 - 如果调用失败或未返回 URL:在摘要中注明“Firefly 画板不可用”(重试无济于事)。
然后发送完成消息。每条完成消息都包含预览网格。如果返回了
board_url,则也包含画板链接。
如果 N ≤ 3——列出各个链接:
✅ All done! [N] portraits retouched and ready.
📥 Download your full-resolution portraits:
• Portrait 1 → <final_url_1>
• Portrait 2 → <final_url_2>
🎨 View in Firefly Board → <board_url> ← always include if board_url is set
Pipeline applied: Auto-straighten → Auto-tone (Camera Raw) → [tweaks if any]
→ [adaptive enhancements if any] → [blur if any] → Crop [ratio]
如果 N > 3——列出所有链接:
✅ All done! [N] portraits retouched and ready.
📥 Your retouched portraits:
• Portrait 1 → <final_url_1>
• Portrait 2 → <final_url_2>
• ...
🎨 View in Firefly Board → <board_url> ← always include if board_url is set
Pipeline applied: Auto-straighten → Auto-tone (Camera Raw) → [tweaks if any]
→ [adaptive enhancements if any] → [blur if any] → Crop [ratio]
详细程度规则
面向大批量任务——仅报告:各阶段开始、单项失败(只记录一次)以及最终摘要。
- 整个批次的某个处理阶段开始时(例如“正在拉直 [N] 张图片……”)
- 单张图片失败时(记录一次后继续)
- 最终完成摘要,包含网格 + 下载链接
输出提取参考
所有处理工具都会返回:
{ "results": [{ "success": true, "outputUrl": "https://..." }] }
从 results[N].outputUrl 读取输出。success: false 时请参阅“错误处理”。
错误处理
| 情况 | 操作 |
|---|---|
image_list_presets 返回空结果或 403 | 完全跳过步骤 5(不会阻塞,其他步骤照常继续)。在摘要中注明:“此套餐未找到预设,无法使用自适应增强功能。” |
image_apply_preset 返回 403(权限问题) | 跳过该预设。在交付摘要中注明:“已跳过[预设名称]——您的 Adobe 套餐不包含此预设。”继续应用其余预设。 |
| 任何工具返回 401(未通过身份验证) | 请用户通过 Adobe OAuth 重新进行身份验证,然后重试 |
asset_add_file 未显示任何文件 | 等待;提醒用户在选择器中选择文件 |
image_auto_straighten 失败 | 将原始 URI 传递至步骤 4;注明“已跳过矫正” |
image_apply_auto_tone 失败 | 将矫正后的 URI 传递至后续步骤;在摘要中注明 |
| 任何色调调整失败 | 记录错误,并使用上一步的输出继续 |
image_select_subject 失败 | 跳过所有受主体识别限制的预设(Whiten Teeth、针对主体的自适应预设);正常应用 Mood 和 Toon 预设 |
image_apply_preset 失败(非 403) | 使用上一步的输出;在摘要中注明“已跳过[预设名称]” |
| 某个类别中找不到适合人像的预设 | 保留该类别为空;不要强行使用不合适的预设 |
image_apply_lens_blur 失败 | 改用 image_apply_effects,参数为 effect: "gaussianBlur", blurRadius: 8, blurTarget: "background";在摘要中注明“镜头模糊功能不可用” |
image_apply_effects 不可用/工具未知 | 使用相同的 blurRadius 和 blurTarget,改用 image_apply_gaussian_blur 重试一次;用户可见的效果不变 |
image_apply_effects 及其回退方案均失败 | 使用上一步的输出;注明“已跳过模糊处理” |
image_crop_and_resize 失败 | 将模糊处理的输出作为最终结果;在摘要中注明 |
asset_preview_file 失败或不可用 | 在摘要中以纯文本链接的形式提供最终输出 URL(参见步骤 8 的无组件回退方案)。 |
| 某张图片的所有步骤均失败 | 返回原始 URI;在摘要中明确标出 |
| 无法继续处理 | 清楚说明失败情况,并提出重试选项。 |
硬性约束
- 批次中的每张图像都会被处理;失败时会明确标记,而不会悄悄跳过。
- 始终先收集氛围/风格(步骤 2a),再展示计划——这会影响预设计划中的类别选择。
- 前后对比预览确认环节(步骤 2c)是强制的——只有用户明确确认“Yes”后,才会开始处理整个批次。调整任何设置后,都会使用新设置重新预览,然后才运行批次。
- 人像增强优先使用
vibrance,而非saturation——vibrance 能智能保护肤色,避免过度饱和。 - 背景分离优先使用
image_apply_lens_blur,而非image_apply_effects(effect: "gaussianBlur")——镜头模糊能感知景深,无需遮罩即可产生更逼真的散景。只有在用户明确要求强烈/风格化模糊时才使用高斯模糊效果。如果image_apply_effects尚不可用,旧版image_apply_gaussian_blur可作为直接替代方案。 - 调整值用于诊断,不是固定值——根据图像内容,从参考范围中选择数值;对轻微平淡的图像使用
contrast: +15,只有非常平淡时才使用+30;对轻微过曝使用highlights: -40,严重过曝时使用-70。 - 注意组别/条件——如果批次中包含拍摄条件明显不同的图像(例如室内/室外混合,或曝光差异很大),请在确认消息中说明,并对所有图像应用用户选择的相同设置。未来可通过增强功能分别运行不同组别的处理流程。
- 调用
image_apply_auto_tone时,使用type: "cameraRawFilter"。 - 默认关闭自适应增强——只有用户明确选择时才运行。
- 预设选择始终根据实际情况动态决定:运行时调用
image_list_presets;绝不硬编码预设名称。 - 所有色调/色彩调整都使用
image_apply_adjustments——各项独立工具(image_adjust_highlights、image_adjust_dark_portions、image_adjust_vibrance_and_saturation等)已弃用,不得使用。 - 背景模糊通过预设计划中的 Background Blur 预设处理(或使用标准模糊时调用
image_apply_lens_blur,使用强烈模糊时调用image_apply_effects并设置effect: "gaussianBlur");每张图像只能使用自适应预设或步骤 6,两者互斥。 - 只有通过
image_select_subject检测到相关身体部位时,才运行美白牙齿和针对身体部位的预设。 - 默认情况下,此处理流程不会使用生成式功能。只有在支持生成式 AI 的界面(例如 Codex)上,才运行生成式工具(
image_fill_area、image_generative_expand);在不支持生成式 AI 的界面(例如 Claude)上绝不运行,即使允许使用,也绝不用于人物。请参阅上文的生成式 AI 政策。 - 绝不向任何
image_*工具传递本地文件系统的原始路径。必须先将本地文件上传到 Creative Cloud——通过asset_add_file选择器选择,或在没有小组件时,依次通过asset_initialize_file_upload→ PUT →asset_finalize_file_upload暂存;只有由此获得的预签名 CC URI 才有效。 - 此处无法发送推送通知(Slack/电子邮件/短信);处理完成后会在聊天中提供摘要。