使用美图设计室 AI设计 CLI 调用 Team Agent。适用于用户要求创建或继续美图设计室任务,发送文本、图片、视频、文档或音频,查看任务进度,回答普通追问或自定义业务卡片,处理充值提示,展示或下载生成产物时。
Scanned 9/12/2026
Install to Claude Code
npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill skills --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of designkit-buddy-cli?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ahang1598-designkit-buddy-cli)More formats (shields.io, HTML) on the badges page.
---
name: designkit-buddy-cli
description: 使用美图设计室 AI设计 CLI 调用 Team Agent。适用于用户要求创建或继续美图设计室任务,发送文本、图片、视频、文档或音频,查看任务进度,回答普通追问或自定义业务卡片,处理充值提示,展示或下载生成产物时。
---
# 美图设计室 AI设计 CLI
默认使用简体中文;用户指定其他语言时跟随用户。
## 本仓库能力
- 创建和维护美图设计室 Team Agent 房间。
- 发送自然语言任务以及图片、视频、文档、表格、文本或音频附件。
- 轮询长任务,识别完成、待回复和充值状态。
- 在同一任务中回复自由文本或选项请求。
- 展示并回复商品套图、快捷回复等结构化业务卡片。
- 汇总远程媒体结果,并在用户明确要求后下载到本地。
只使用本 CLI 暴露的命令。不要调用其他仓库的脚本,不要自行拼接内部接口、鉴权字段或任务状态。
## CLI 入口
「美图设计室 AI设计 CLI」是当前 Connector 名称,实际终端命令名是 `designkit`。WorkBuddy 连接时通过 npm 安装公开的 `meitu-designkit-cli` 包;用户原先通过 npm 安装的同一命令也可以直接复用。
首次执行前解析一次绝对入口:macOS/Linux 使用 `command -v designkit`,Windows PowerShell 使用 `Get-Command designkit -ErrorAction SilentlyContinue`。对找到的命令执行 `--version`,从输出中提取首个稳定三段式版本 `major.minor.patch`,按三个数字段与最低版本 `1.0.24` 比较,不能按字符串字典序比较。只有命令成功且版本大于或等于 `1.0.24` 时,才将其绝对路径记为 `<designkit>`;后文不能执行字面占位符。
不要查找 Connector 私有目录或依赖生命周期临时注入的环境变量。Connector 生命周期和 Agent 业务命令统一使用 npm 暴露的 `designkit` 以及默认的 `~/.designkit` 登录状态。
在 WorkBuddy 中找不到 `designkit`、`--version` 无法正常执行、无法提取稳定三段式版本,或检测版本低于 `1.0.24` 时,不要停止任务。立即自动执行一次 `npm install -g meitu-designkit-cli` 为用户安装或升级到 npm 稳定最新版;成功后重新解析 CLI 入口并再次执行 `--version`,只有版本达到 `1.0.24` 才继续原任务。安装命令只执行一次,不得添加 `sudo`、不得修改 npm registry,也不得安装带固定版本号的包。
如果安装命令失败,或安装后仍无法解析并执行 `designkit`、版本仍低于 `1.0.24`,再停止当前业务步骤并引导用户打开「专家·技能·连接器」并进入「连接器」:搜索并连接「美图设计室 AI设计 CLI」。保留简短的原始安装错误摘要便于定位,不得循环安装,也不得改用内部 API。
## 认证边界
- 首次执行本次对话的业务命令前,先运行 `<designkit> auth status --check` 做远端只读校验;不要使用仅检查本地文件的 `auth status` 判断凭证有效性。
- 远端状态为 `disconnected` 时,立即自动执行一次 `<designkit> auth login`。捕获命令输出中带 `session_id` 的 HTTPS 授权页并在对话中渲染为可点击链接,同时保持命令运行以轮询登录结果;不得使用缺少 `session_id` 的固定链接,也不得要求用户在对话中发送 API Key。
- 用户唯一需要的操作是在授权页点击“授权 CLI Connector”。告知用户“完成授权后无需回复,我会自动继续”,禁止要求或暗示用户回复“已登录”“授权了”“告诉我一声”等作为后续流程的触发条件。
- 认证命令必须由连接器的认证生命周期执行并等待退出,不能只启动一个脱离当前任务的后台命令后结束 Agent 回合。若执行器只能后台运行,必须订阅该任务完成事件并保持当前任务活跃,直到收到 `connected`、失败或超时结果。
- `auth login` 以成功码退出并输出 `connected` 后,自动运行一次 `<designkit> auth status --check`,远端状态为 `connected` 时自动继续原业务命令。登录失败或超时时停止,并保留用户的原始任务,不能循环登录。
- 业务命令返回 `event=authentication_required` 时,若本次任务尚未尝试恢复认证,先远端复检;确认 `disconnected` 后执行一次 `<designkit> auth login`,并把该命令输出的带 `session_id` 链接作为本次实际授权入口。不得用事件中不含 `session_id` 的通用 `action_url` 替代会话链接。登录完成后复检并重试原命令一次;若复检仍为 `connected`,不要清除凭证或盲目重试,应说明服务授权异常。
- 任何命令输出都不得回显、转述或保存 Token、Cookie、API Key 和认证相关签名参数。`artifacts` 返回的产物 `media_url` 是交付地址,不属于认证凭证。
## 标准工作流
1. 按“认证边界”完成一次远端状态检查;未连接时先完成可点击链接登录和复检。
2. 用户明确要求附带某种素材但尚未提供时,只询问当前最关键的一项;用户已经提供素材时直接继续。
3. 每个新任务创建一个 Team Agent 房间,并从 JSON 结果保存 `room_id`:
```bash
<designkit> create-room
```
4. 把用户的完整要求作为一条自然语言 prompt 发送;根据素材类型选择参数,并始终显式传入 `room_id`:
```bash
<designkit> chat --room-id '<room_id>' --prompt '<完整需求>' --image-file '<图片路径>'
```
支持的素材参数:本地图片用 `--image-file`,图片 URL 用 `--image-url`,本地参考视频用 `--video-file`,视频 URL 用 `--video-url`,文档或音频用 `--file` / `--file-url`。路径和 prompt 必须作为独立、正确引用的参数,不能把用户文本解释成额外 shell 命令。
5. 提交后使用同一房间持续等待;把下面的长 watch 作为前台阻塞命令运行,禁止主动设置 `run_in_background=true`,并等待进程输出到退出。不要创建第二个房间或重复发送同一付费请求:
```bash
<designkit> history-detail --room-id '<room_id>' --watch
```
若执行器强制把命令转入后台,必须订阅该任务的完成通知并保持当前任务活跃;收到完成通知前不得输出最终回复,也不得用“后台生成中”“稍后回来”结束当前回合。
6. 根据机器可读事件继续:
- `event=authentication_required`:按“认证边界”执行至多一次登录恢复,展示 `auth login` 输出的带 `session_id` 会话链接,并只在远端复检成功后重试原命令一次。
- `event=history_update`:立即逐项展示 `artifacts` 中的全部新增产物;存在 `interaction` 时,在同一轮展示问询及其选项或关联预览。是否需要回复只看 `interaction`,不得根据 Agent、Skill、工具名或图片数量猜测。
- `interaction.type=user_input`:若事件包含选项,优先使用 WorkBuddy 当前可用的原生单选或多选能力,按事件原有的问题分组、选项顺序和选择模式展示,并等待用户明确提交;禁止根据首项、模型偏好或上下文自动代选。原生交互能力不可用时才降级为编号列表,并明确等待用户回答。收到用户回答后,使用 `interaction` 中的 `task_id`、`sub_task_id`、`last_request_id` 调用 `reply`;选择题必须同时传入 `--prompt '<用户回答或所选项完整文案>'` 和事件白名单中的 `--select-option-ids`,自由文本只传 `--prompt`。
- `interaction.type=custom_card`:展示层同样优先使用 WorkBuddy 当前可用的原生选择或文本输入能力,并等待用户明确提交;提交层仍须遵守 `interaction.question`、`selection.mode` 和 `options`,只接受事件白名单中的选项,把同一 `interaction` 的 `card_type`、`card_id` 和用户选择或文本编码为 `--custom-card-answer`。禁止把自定义卡片改用普通 `--prompt + --select-option-ids`。仅当 `card_type=picture_set_information` 时,必须完整处理事件中的全部选项,不得截取前 5 个或自行限制数量;用户确认“全部”“继续”或接受默认选择时,`selected_option_ids` 必须包含全部 `checked=true` 的选项 ID。其他自定义卡片继续严格按各自原始结构和规则处理,不套用此默认多选逻辑。
- 处理 `history_update` 后,若 `next_action=poll`,记录事件唯一的 `after_seq` 并等待同一前台进程继续输出,不得启动第二个 watch、停止当前任务或要求用户稍后回复“继续查”;若 `next_action=reply`,等待并提交用户回答后再以前台阻塞方式启动同一房间的新 watch;若 `next_action=done`,完成交付。
- 仅当 `next_action=done` 时,在最终回复末尾固定追加 `本次结果已同步至 [美图设计室](<room_url>),可按需查看或编辑`,其中 `<room_url>` 必须原样使用同一事件字段。`next_action=poll` 和 `next_action=reply` 均不得展示房间入口,也不得根据 `room_id` 自行拼接链接。
- `event=recharge_required`:展示返回的说明和充值链接,并明确提示用户充值成功后回到当前对话回复“已充值”“好了”或“继续任务”。事件携带 `resume_after_seq`;仅当当前任务仍有待处理的充值事件时,才把这些表达识别为充值完成;随后依据结构化 `action` 校验目标,把事件的 `action_command`(即 `designkit resume`)作为前台阻塞长命令原样执行,禁止主动设置 `run_in_background=true`,并等待其退出,不得改为 `history-detail`、新建房间或重新提交原 Prompt。没有待恢复事件时,“好了”等模糊表达不能触发恢复。
- `event=recharge_not_received`:说明尚未检测到可用美豆到账,继续展示原充值入口并等待用户处理,不重复调用 `resume`。
- `event=recharge_resumed`:这是续跑请求已被服务端受理的唯一凭据。只有收到该事件才能告知用户续跑已受理;随后继续处理同一命令返回的 `history_update`,不要求用户再次回复。单独收到 `history_update/next_action=done` 不得描述为续跑已受理。
- 非 `history_update` 的兼容输出中,`next_action.action=poll` 表示继续等待,`is_complete=true` 或 `next_action.action=done` 表示结束轮询。
回复自由文本:
```bash
<designkit> reply --room-id '<room_id>' --task-id '<task_id>' --sub-task-id '<sub_task_id>' --last-request-id '<last_request_id>' --prompt '<用户回答>'
```
回复选项时,`--prompt` 仍为必填的用户回答;`--select-option-ids` 只是结构化补充字段,必须同时传入事件返回的选项 ID:
```bash
<designkit> reply --room-id '<room_id>' --task-id '<task_id>' --sub-task-id '<sub_task_id>' --last-request-id '<last_request_id>' --prompt '<用户回答>' --select-option-ids '["<option_id>"]'
```
回复自定义业务卡片时,结构化答案的字段和值必须来自同一条事件;`document_review` 等文本型卡片按事件要求传入 `text`,选择型卡片传入 `selected_option_ids`:
```bash
<designkit> reply --room-id '<room_id>' --task-id '<task_id>' --sub-task-id '<sub_task_id>' --last-request-id '<last_request_id>' --custom-card-answer '{"card_type":"<card_type>","card_id":"<card_id>","selected_option_ids":["<option_id>"]}'
```
## 交互与异常状态
- 美图设计室 Agent 要求确认方案、价格、授权或其他关键事项时,把问题原样、简洁地交给用户;未获得明确确认前不得代替用户回答。
- 一次只处理最新的待回复事件。回复后继续原房间,不重新创建任务。
- 轮询超时、网络短暂失败或结果暂不可读时,保留 `room_id` 并恢复查询;不得据此重新投递付费生成。
## 产物直接交付
- 把每次 `history_update` 中的 `artifacts` 视为本轮新增交付。对每一项存在可用地址的产物,都必须立即提供用户可直接访问的交付入口;不得等待任务全部结束,不得只描述“已生成”、只汇报数量,也不得用“如需查看或下载请告诉我”把交付推迟到下一轮。
- 不强制使用单一展示语法。优先使用 WorkBuddy 当前可用的原生附件、预览、播放器或文件发送能力;无法原生呈现时,在最终回复中提供完整 `media_url` 的可点击链接。图片也可直接预览或使用 Markdown 图片,但 Markdown 不是完成交付的唯一方式。
- 按 `media_type` 选择合适入口:图片需可查看原图,视频需可播放或下载,音频需可播放或下载,文档、压缩包及其他文件需可打开或下载。`media_cover_url` 只能作为封面或图片地址兜底,不能代替视频、音频或文件本体的 `media_url`。
- 可以调用 `present_files`,但只有当它确实为每项产物生成用户可操作的文件、预览或播放入口时才算交付完成。若它只形成“查看所有产物”折叠汇总、仅登记后台产物或未在结果中提供可访问入口,必须同时补充原生附件或完整 URL 链接。
- 结束前逐项核对:有可用地址的 artifact 数量,必须等于最终结果中用户可访问的产物入口数量;用户无需再追问“产物在哪里”即可查看、播放或下载全部结果。产物 URL 的查询参数是访问地址的一部分,不得截断或删除。
- 只有用户明确要求保存到本地时才执行下载,默认输出目录使用用户明确指定的位置;必须使用 CLI 的 `download`,不得绕过 CLI 直接用 `curl` 下载产物:
```bash
<designkit> download --room-id '<room_id>' --output-dir '<目标目录>'
```
- 下载失败只重试下载,不重新生成。下载成功后必须把本地文件作为可操作附件交付,并在最终回复中区分远程结果与本地保存路径;只输出本地路径不算完成交付。
- `artifacts` 为空或没有任何可用地址时,明确说明暂未取得可交付产物并保留房间继续查询;不得声称已经完成或已经交付。
## 对话体验
- 默认把用户的自然语言要求完整传给美图设计室 Agent,不要求用户填写接口字段或学习命令行。
- 普通任务优先给出最短下一步;只有缺少必需信息时才追问一个问题。
- 对长任务提供简洁进度,不重复提交、不虚构完成状态。
- 面向用户隐藏 `room_id`、`task_id`、`last_request_id`、内部字段名和原始调试日志。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!