@optima-chat/comfy-cli 0.8.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +5 -1
- package/.claude/skills/comfy-cli/SKILL.md +56 -35
- package/dist/backends/types.d.ts +50 -0
- package/dist/backends/types.d.ts.map +1 -1
- package/dist/backends/video-dashscope.d.ts +10 -0
- package/dist/backends/video-dashscope.d.ts.map +1 -0
- package/dist/backends/video-dashscope.js +94 -0
- package/dist/backends/video-dashscope.js.map +1 -0
- package/dist/backends/video-index.d.ts +23 -0
- package/dist/backends/video-index.d.ts.map +1 -0
- package/dist/backends/video-index.js +57 -0
- package/dist/backends/video-index.js.map +1 -0
- package/dist/commands/image.d.ts.map +1 -1
- package/dist/commands/image.js +5 -4
- package/dist/commands/image.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +40 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/video.d.ts.map +1 -1
- package/dist/commands/video.js +205 -119
- package/dist/commands/video.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +6 -0
- package/dist/commands/workflow.js.map +1 -1
- package/dist/services/config.d.ts +10 -0
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +15 -0
- package/dist/services/config.js.map +1 -1
- package/dist/services/dashscope-api.d.ts +69 -0
- package/dist/services/dashscope-api.d.ts.map +1 -0
- package/dist/services/dashscope-api.js +134 -0
- package/dist/services/dashscope-api.js.map +1 -0
- package/package.json +1 -1
|
@@ -35,7 +35,11 @@
|
|
|
35
35
|
"Bash(git branch:*)",
|
|
36
36
|
"Bash(gh run view:*)",
|
|
37
37
|
"WebFetch(domain:code.claude.com)",
|
|
38
|
-
"Bash(ssh:*)"
|
|
38
|
+
"Bash(ssh:*)",
|
|
39
|
+
"Bash(wc:*)",
|
|
40
|
+
"WebFetch(domain:modelstudio.console.alibabacloud.com)",
|
|
41
|
+
"WebFetch(domain:help.aliyun.com)",
|
|
42
|
+
"Bash(npx ts-node:*)"
|
|
39
43
|
],
|
|
40
44
|
"deny": [],
|
|
41
45
|
"ask": []
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: comfy-cli
|
|
3
|
-
description: "ComfyUI CLI tool for AI agents. ALWAYS use when user wants to: generate images (生成图片/画图/图像/生成画), edit images (编辑图片/修改图片/图生图/改图), create videos (生成视频/图生视频/制作视频), manage ComfyUI workflows (工作流/ComfyUI). Uses 'comfy generate', 'comfy edit', 'comfy video' commands."
|
|
3
|
+
description: "ComfyUI CLI tool for AI agents. ALWAYS use when user wants to: generate images (生成图片/画图/图像/生成画), edit images (编辑图片/修改图片/图生图/改图), create videos (生成视频/图生视频/制作视频), manage ComfyUI workflows (工作流/ComfyUI). Uses 'comfy image', 'comfy generate', 'comfy edit', 'comfy video' commands."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# ComfyUI CLI
|
|
@@ -10,7 +10,7 @@ description: "ComfyUI CLI tool for AI agents. ALWAYS use when user wants to: gen
|
|
|
10
10
|
### 场景 1:快速生成单张图片
|
|
11
11
|
**用户需求**:"帮我生成一张猫的图片"
|
|
12
12
|
**执行步骤**:
|
|
13
|
-
1. `comfy
|
|
13
|
+
1. `comfy image "a cute cat sitting on a couch"`
|
|
14
14
|
2. 等待完成(默认行为,显示进度)
|
|
15
15
|
3. 使用返回的 prompt_id 下载:`comfy download <prompt_id>`
|
|
16
16
|
|
|
@@ -18,14 +18,14 @@ description: "ComfyUI CLI tool for AI agents. ALWAYS use when user wants to: gen
|
|
|
18
18
|
**用户需求**:"这张图片不够好,帮我优化"
|
|
19
19
|
**执行步骤**:
|
|
20
20
|
1. 分析用户不满意的点(光线、风格、细节)
|
|
21
|
-
2. 使用 `comfy
|
|
21
|
+
2. 使用 `comfy image "优化描述" -i 原图.png` 添加优化
|
|
22
22
|
3. 如需多次尝试,生成多个变体供用户选择
|
|
23
23
|
|
|
24
24
|
### 场景 3:图片生成视频
|
|
25
25
|
**用户需求**:"把这张人物照片做成动态视频"
|
|
26
26
|
**执行步骤**:
|
|
27
27
|
1. `comfy video portrait.png --prompt "natural head movement"`
|
|
28
|
-
2.
|
|
28
|
+
2. DashScope 后端支持 720P/1080P 高分辨率
|
|
29
29
|
3. 下载后检查效果
|
|
30
30
|
|
|
31
31
|
## 质量标准
|
|
@@ -89,28 +89,36 @@ description: "ComfyUI CLI tool for AI agents. ALWAYS use when user wants to: gen
|
|
|
89
89
|
|
|
90
90
|
### 核心命令
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
**图像生成/编辑(推荐):**
|
|
93
|
+
```bash
|
|
94
|
+
comfy image "提示词" [-i 输入图像] [-W 宽度] [-H 高度] [--backend auto|bfl|comfyui] [--no-wait]
|
|
95
|
+
```
|
|
96
|
+
- **推荐使用**:统一的图像命令,自动选择最佳后端
|
|
97
|
+
- 无 `-i` 参数时为文生图,有 `-i` 参数时为图生图
|
|
98
|
+
- 支持多图参考:`-i img1.png -i img2.png`(仅 BFL 后端)
|
|
99
|
+
- 自动选择后端:有 BFL API Key 用 BFL 云端,否则用 ComfyUI 本地
|
|
100
|
+
|
|
101
|
+
**生成图像(别名):**
|
|
93
102
|
```bash
|
|
94
103
|
comfy generate "提示词" [--width 1024] [--height 1024] [--no-wait] [--pretty]
|
|
95
104
|
```
|
|
96
|
-
-
|
|
105
|
+
- 等同于 `comfy image "提示词"`
|
|
97
106
|
- 默认等待完成并显示实时进度,返回 JSON
|
|
98
|
-
- `--no-wait`: 提交后立即返回
|
|
99
|
-
- `--pretty`: 人类可读的表格格式
|
|
100
107
|
|
|
101
|
-
|
|
108
|
+
**编辑图像(别名):**
|
|
102
109
|
```bash
|
|
103
110
|
comfy edit <图像路径> "提示词" [--no-wait] [--pretty]
|
|
104
111
|
```
|
|
105
|
-
-
|
|
112
|
+
- 等同于 `comfy image "提示词" -i <图像路径>`
|
|
106
113
|
- 支持风格转换、细节增强等
|
|
107
114
|
|
|
108
115
|
**生成视频:**
|
|
109
116
|
```bash
|
|
110
|
-
comfy video <图像路径> [-p "运动描述"] [-
|
|
117
|
+
comfy video <图像路径> [-p "运动描述"] [-b auto|dashscope|comfyui] [-r 720P|1080P] [-d 5|10|15]
|
|
111
118
|
```
|
|
112
119
|
- 从图像生成视频(图生视频)
|
|
113
|
-
-
|
|
120
|
+
- DashScope 后端(wan2.6):支持 720P/1080P,5/10/15 秒
|
|
121
|
+
- ComfyUI 后端(wan2.1):本地部署,自定义参数
|
|
114
122
|
|
|
115
123
|
**下载结果:**
|
|
116
124
|
```bash
|
|
@@ -161,63 +169,73 @@ comfy config set server http://localhost:8188 # 更改服务器地址(
|
|
|
161
169
|
|
|
162
170
|
## Examples
|
|
163
171
|
|
|
164
|
-
### 示例 1
|
|
172
|
+
### 示例 1:生成图像(推荐)
|
|
165
173
|
```bash
|
|
166
|
-
comfy
|
|
174
|
+
comfy image "a cute cat"
|
|
167
175
|
```
|
|
168
|
-
返回包含 `
|
|
176
|
+
返回包含 `id` 和状态的 JSON,等待完成后使用 `comfy download <id>` 下载
|
|
169
177
|
|
|
170
178
|
### 示例 2:高分辨率图像
|
|
171
179
|
```bash
|
|
172
|
-
comfy
|
|
180
|
+
comfy image "beautiful landscape with mountains" -W 1920 -H 1080
|
|
173
181
|
```
|
|
174
182
|
|
|
175
183
|
### 示例 3:图像风格转换
|
|
176
184
|
```bash
|
|
177
|
-
comfy
|
|
185
|
+
comfy image "anime style" -i photo.jpg
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### 示例 4:多图风格融合(BFL 后端)
|
|
189
|
+
```bash
|
|
190
|
+
comfy image "combine the styles" -i style.png -i content.png --backend bfl
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### 示例 5:视频生成(DashScope 高清)
|
|
194
|
+
```bash
|
|
195
|
+
comfy video portrait.png --prompt "smooth motion" --backend dashscope --resolution 1080P --duration 10
|
|
178
196
|
```
|
|
179
197
|
|
|
180
|
-
### 示例
|
|
198
|
+
### 示例 6:视频生成(ComfyUI 本地)
|
|
181
199
|
```bash
|
|
182
|
-
comfy video portrait.png --prompt "
|
|
200
|
+
comfy video portrait.png --prompt "natural movement" --backend comfyui
|
|
183
201
|
```
|
|
184
202
|
|
|
185
|
-
### 示例
|
|
203
|
+
### 示例 7:批量生成(非阻塞)
|
|
186
204
|
```bash
|
|
187
|
-
comfy
|
|
188
|
-
comfy
|
|
189
|
-
comfy
|
|
205
|
+
comfy image "a cat sitting" --no-wait
|
|
206
|
+
comfy image "a cat playing" --no-wait
|
|
207
|
+
comfy image "a cat sleeping" --no-wait
|
|
190
208
|
comfy queue status
|
|
191
209
|
```
|
|
192
210
|
|
|
193
|
-
### 示例
|
|
211
|
+
### 示例 8:完整工作流
|
|
194
212
|
```bash
|
|
195
213
|
# 1. 生成图像
|
|
196
|
-
comfy
|
|
197
|
-
# 返回
|
|
214
|
+
comfy image "a portrait of a woman"
|
|
215
|
+
# 返回 id,等待完成后使用 comfy download 下载
|
|
198
216
|
|
|
199
217
|
# 2. 下载第一张图像
|
|
200
|
-
comfy download <
|
|
218
|
+
comfy download <id_1>
|
|
201
219
|
# 输出:./output/comfy-cli_00001_.png
|
|
202
220
|
|
|
203
221
|
# 3. 编辑图像
|
|
204
|
-
comfy
|
|
205
|
-
# 返回
|
|
222
|
+
comfy image "add cinematic lighting" -i ./output/comfy-cli_00001_.png
|
|
223
|
+
# 返回 id,等待完成后下载
|
|
206
224
|
|
|
207
225
|
# 4. 下载编辑后的图像
|
|
208
|
-
comfy download <
|
|
226
|
+
comfy download <id_2>
|
|
209
227
|
# 输出:./output/comfy-cli_00002_.png
|
|
210
228
|
|
|
211
229
|
# 5. 生成视频
|
|
212
230
|
comfy video ./output/comfy-cli_00002_.png --prompt "slow motion"
|
|
213
|
-
# 返回
|
|
231
|
+
# 返回 id,等待完成后下载
|
|
214
232
|
```
|
|
215
233
|
|
|
216
|
-
### 示例
|
|
234
|
+
### 示例 9:检查状态和下载
|
|
217
235
|
```bash
|
|
218
236
|
# 非阻塞提交
|
|
219
|
-
comfy
|
|
220
|
-
# 返回:{ "
|
|
237
|
+
comfy image "sunset" --no-wait
|
|
238
|
+
# 返回:{ "id": "abc123" }
|
|
221
239
|
|
|
222
240
|
# 稍后检查状态
|
|
223
241
|
comfy workflow get abc123
|
|
@@ -228,7 +246,10 @@ comfy download abc123
|
|
|
228
246
|
|
|
229
247
|
## 重要提示
|
|
230
248
|
|
|
231
|
-
-
|
|
249
|
+
- **推荐使用 `comfy image`**:统一入口,自动选择最佳后端
|
|
250
|
+
- 图像后端:BFL 云端(高质量)或 ComfyUI 本地(免费)
|
|
251
|
+
- 视频后端:DashScope 云端(720P/1080P)或 ComfyUI 本地
|
|
252
|
+
- 默认连接到 `http://dev.optima.chat:8188`(ComfyUI)
|
|
232
253
|
- 默认输出 JSON 格式,适合 AI 解析
|
|
233
254
|
- 使用 `--pretty` 获取人类可读输出
|
|
234
255
|
- 默认等待完成并显示实时进度
|
package/dist/backends/types.d.ts
CHANGED
|
@@ -44,4 +44,54 @@ export interface ImageBackend {
|
|
|
44
44
|
*/
|
|
45
45
|
getStatus(id: string): Promise<ImageResult>;
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* 视频生成参数
|
|
49
|
+
*/
|
|
50
|
+
export interface VideoParams {
|
|
51
|
+
inputImage: string;
|
|
52
|
+
prompt?: string;
|
|
53
|
+
negativePrompt?: string;
|
|
54
|
+
resolution?: '720P' | '1080P';
|
|
55
|
+
duration?: 5 | 10 | 15;
|
|
56
|
+
seed?: number;
|
|
57
|
+
wait?: boolean;
|
|
58
|
+
promptExtend?: boolean;
|
|
59
|
+
audio?: boolean;
|
|
60
|
+
audioUrl?: string;
|
|
61
|
+
shotType?: 'single' | 'multi';
|
|
62
|
+
watermark?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 视频生成结果
|
|
66
|
+
*/
|
|
67
|
+
export interface VideoResult {
|
|
68
|
+
id: string;
|
|
69
|
+
backend: 'dashscope' | 'comfyui';
|
|
70
|
+
status: 'pending' | 'processing' | 'completed' | 'failed';
|
|
71
|
+
output?: string;
|
|
72
|
+
outputUrl?: string;
|
|
73
|
+
duration?: number;
|
|
74
|
+
resolution?: string;
|
|
75
|
+
seed?: number;
|
|
76
|
+
durationMs?: number;
|
|
77
|
+
error?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* 视频后端接口
|
|
81
|
+
*/
|
|
82
|
+
export interface VideoBackend {
|
|
83
|
+
readonly name: 'dashscope' | 'comfyui';
|
|
84
|
+
/**
|
|
85
|
+
* 检查后端是否可用
|
|
86
|
+
*/
|
|
87
|
+
isAvailable(): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* 生成视频
|
|
90
|
+
*/
|
|
91
|
+
generate(params: VideoParams): Promise<VideoResult>;
|
|
92
|
+
/**
|
|
93
|
+
* 获取任务状态
|
|
94
|
+
*/
|
|
95
|
+
getStatus(id: string): Promise<VideoResult>;
|
|
96
|
+
}
|
|
47
97
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/backends/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,SAAS,CAAC;IAEjC;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpD;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC7C"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/backends/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { VideoBackend, VideoParams, VideoResult } from './types.js';
|
|
2
|
+
export declare class DashScopeVideoBackend implements VideoBackend {
|
|
3
|
+
readonly name: "dashscope";
|
|
4
|
+
private client;
|
|
5
|
+
constructor(apiKey: string);
|
|
6
|
+
isAvailable(): boolean;
|
|
7
|
+
generate(params: VideoParams): Promise<VideoResult>;
|
|
8
|
+
getStatus(id: string): Promise<VideoResult>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=video-dashscope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-dashscope.d.ts","sourceRoot":"","sources":["../../src/backends/video-dashscope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzE,qBAAa,qBAAsB,YAAW,YAAY;IACxD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,MAAM;IAI1B,WAAW,IAAI,OAAO;IAIhB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAqEnD,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAsBlD"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { DashScopeClient } from '../services/dashscope-api.js';
|
|
2
|
+
import { getConfig } from '../services/config.js';
|
|
3
|
+
export class DashScopeVideoBackend {
|
|
4
|
+
name = 'dashscope';
|
|
5
|
+
client;
|
|
6
|
+
constructor(apiKey) {
|
|
7
|
+
this.client = new DashScopeClient(apiKey);
|
|
8
|
+
}
|
|
9
|
+
isAvailable() {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
async generate(params) {
|
|
13
|
+
const startTime = Date.now();
|
|
14
|
+
const cfg = getConfig();
|
|
15
|
+
// 1. 处理输入图像(转为 base64 或直接使用 URL)
|
|
16
|
+
let imgUrl = params.inputImage;
|
|
17
|
+
if (!imgUrl.startsWith('http') && !imgUrl.startsWith('data:')) {
|
|
18
|
+
imgUrl = await this.client.imageToBase64(params.inputImage);
|
|
19
|
+
}
|
|
20
|
+
// 2. 构建请求参数,合并配置默认值
|
|
21
|
+
const submitParams = {
|
|
22
|
+
prompt: params.prompt,
|
|
23
|
+
negativePrompt: params.negativePrompt,
|
|
24
|
+
imgUrl,
|
|
25
|
+
audioUrl: params.audioUrl,
|
|
26
|
+
resolution: params.resolution || cfg.dashscope?.resolution || '1080P',
|
|
27
|
+
duration: params.duration || cfg.dashscope?.duration || 5,
|
|
28
|
+
promptExtend: params.promptExtend ?? cfg.dashscope?.promptExtend ?? true,
|
|
29
|
+
audio: params.audio ?? cfg.dashscope?.audio ?? true,
|
|
30
|
+
shotType: params.shotType || cfg.dashscope?.shotType || 'single',
|
|
31
|
+
watermark: params.watermark ?? false,
|
|
32
|
+
seed: params.seed,
|
|
33
|
+
};
|
|
34
|
+
// 3. 提交任务
|
|
35
|
+
const submitResult = await this.client.submit(submitParams);
|
|
36
|
+
const taskId = submitResult.output.task_id;
|
|
37
|
+
// 4. 如果不等待,直接返回
|
|
38
|
+
if (params.wait === false) {
|
|
39
|
+
return {
|
|
40
|
+
id: taskId,
|
|
41
|
+
backend: 'dashscope',
|
|
42
|
+
status: 'pending',
|
|
43
|
+
resolution: submitParams.resolution,
|
|
44
|
+
duration: submitParams.duration,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// 5. 轮询等待结果
|
|
48
|
+
const pollResult = await this.client.poll(taskId, {
|
|
49
|
+
interval: 15000,
|
|
50
|
+
timeout: 600000,
|
|
51
|
+
});
|
|
52
|
+
// 6. 下载视频到本地
|
|
53
|
+
const outputDir = cfg.outputDir || './comfy-output';
|
|
54
|
+
const filename = `dashscope_${taskId}.mp4`;
|
|
55
|
+
let localPath;
|
|
56
|
+
if (pollResult.output.video_url) {
|
|
57
|
+
localPath = await this.client.downloadVideo(pollResult.output.video_url, outputDir, filename);
|
|
58
|
+
}
|
|
59
|
+
const durationMs = Date.now() - startTime;
|
|
60
|
+
return {
|
|
61
|
+
id: taskId,
|
|
62
|
+
backend: 'dashscope',
|
|
63
|
+
status: 'completed',
|
|
64
|
+
output: localPath,
|
|
65
|
+
outputUrl: pollResult.output.video_url,
|
|
66
|
+
duration: pollResult.usage?.duration,
|
|
67
|
+
resolution: submitParams.resolution,
|
|
68
|
+
durationMs,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async getStatus(id) {
|
|
72
|
+
const result = await this.client.getResult(id);
|
|
73
|
+
const status = result.output.task_status;
|
|
74
|
+
let videoStatus = 'pending';
|
|
75
|
+
if (status === 'SUCCEEDED') {
|
|
76
|
+
videoStatus = 'completed';
|
|
77
|
+
}
|
|
78
|
+
else if (status === 'FAILED' || status === 'CANCELED' || status === 'UNKNOWN') {
|
|
79
|
+
videoStatus = 'failed';
|
|
80
|
+
}
|
|
81
|
+
else if (status === 'RUNNING') {
|
|
82
|
+
videoStatus = 'processing';
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
id,
|
|
86
|
+
backend: 'dashscope',
|
|
87
|
+
status: videoStatus,
|
|
88
|
+
outputUrl: result.output.video_url,
|
|
89
|
+
duration: result.usage?.duration,
|
|
90
|
+
error: videoStatus === 'failed' ? status : undefined,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=video-dashscope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-dashscope.js","sourceRoot":"","sources":["../../src/backends/video-dashscope.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { VideoBackend } from './types.js';
|
|
2
|
+
export type VideoBackendType = 'auto' | 'dashscope' | 'comfyui';
|
|
3
|
+
export { VideoBackend, VideoParams, VideoResult } from './types.js';
|
|
4
|
+
export { DashScopeVideoBackend } from './video-dashscope.js';
|
|
5
|
+
/**
|
|
6
|
+
* 获取 DashScope API Key(优先环境变量,其次配置文件)
|
|
7
|
+
*/
|
|
8
|
+
export declare function getDashScopeApiKey(): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* 获取视频生成后端
|
|
11
|
+
*
|
|
12
|
+
* - auto: 有 DashScope API Key 则用 DashScope,否则用 ComfyUI
|
|
13
|
+
* - dashscope: 强制使用 DashScope(需要 API Key)
|
|
14
|
+
* - comfyui: 强制使用 ComfyUI
|
|
15
|
+
*
|
|
16
|
+
* API Key 优先级: 环境变量 DASHSCOPE_API_KEY > 配置文件 dashscope.apiKey
|
|
17
|
+
*/
|
|
18
|
+
export declare function getVideoBackend(type?: VideoBackendType): VideoBackend;
|
|
19
|
+
/**
|
|
20
|
+
* 获取当前会使用的视频后端名称
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCurrentVideoBackendName(type?: VideoBackendType): 'dashscope' | 'comfyui';
|
|
23
|
+
//# sourceMappingURL=video-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-index.d.ts","sourceRoot":"","sources":["../../src/backends/video-index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAEvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,YAAY,CAyBrE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,WAAW,GAAG,SAAS,CAe3F"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { getConfig } from '../services/config.js';
|
|
2
|
+
import { DashScopeVideoBackend } from './video-dashscope.js';
|
|
3
|
+
export { DashScopeVideoBackend } from './video-dashscope.js';
|
|
4
|
+
/**
|
|
5
|
+
* 获取 DashScope API Key(优先环境变量,其次配置文件)
|
|
6
|
+
*/
|
|
7
|
+
export function getDashScopeApiKey() {
|
|
8
|
+
return process.env.DASHSCOPE_API_KEY || getConfig().dashscope?.apiKey;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 获取视频生成后端
|
|
12
|
+
*
|
|
13
|
+
* - auto: 有 DashScope API Key 则用 DashScope,否则用 ComfyUI
|
|
14
|
+
* - dashscope: 强制使用 DashScope(需要 API Key)
|
|
15
|
+
* - comfyui: 强制使用 ComfyUI
|
|
16
|
+
*
|
|
17
|
+
* API Key 优先级: 环境变量 DASHSCOPE_API_KEY > 配置文件 dashscope.apiKey
|
|
18
|
+
*/
|
|
19
|
+
export function getVideoBackend(type) {
|
|
20
|
+
const cfg = getConfig();
|
|
21
|
+
const backendType = type || cfg.preferVideoBackend || 'auto';
|
|
22
|
+
// 强制使用 DashScope
|
|
23
|
+
if (backendType === 'dashscope') {
|
|
24
|
+
const apiKey = getDashScopeApiKey();
|
|
25
|
+
if (!apiKey) {
|
|
26
|
+
throw new Error('DashScope API key not configured. Set DASHSCOPE_API_KEY env or run: comfy config set dashscope.apiKey <key>');
|
|
27
|
+
}
|
|
28
|
+
return new DashScopeVideoBackend(apiKey);
|
|
29
|
+
}
|
|
30
|
+
// 强制使用 ComfyUI(返回 null,由调用方处理)
|
|
31
|
+
if (backendType === 'comfyui') {
|
|
32
|
+
return null; // ComfyUI 视频后端由 video.ts 原有逻辑处理
|
|
33
|
+
}
|
|
34
|
+
// 自动选择:优先 DashScope
|
|
35
|
+
const apiKey = getDashScopeApiKey();
|
|
36
|
+
if (apiKey) {
|
|
37
|
+
return new DashScopeVideoBackend(apiKey);
|
|
38
|
+
}
|
|
39
|
+
return null; // 回退到 ComfyUI
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 获取当前会使用的视频后端名称
|
|
43
|
+
*/
|
|
44
|
+
export function getCurrentVideoBackendName(type) {
|
|
45
|
+
const cfg = getConfig();
|
|
46
|
+
const backendType = type || cfg.preferVideoBackend || 'auto';
|
|
47
|
+
if (backendType === 'dashscope') {
|
|
48
|
+
return 'dashscope';
|
|
49
|
+
}
|
|
50
|
+
if (backendType === 'comfyui') {
|
|
51
|
+
return 'comfyui';
|
|
52
|
+
}
|
|
53
|
+
// auto
|
|
54
|
+
const apiKey = getDashScopeApiKey();
|
|
55
|
+
return apiKey ? 'dashscope' : 'comfyui';
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=video-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-index.js","sourceRoot":"","sources":["../../src/backends/video-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAM7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;AACxE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAuB;IACrD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,WAAW,GAAG,IAAI,IAAI,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC;IAE7D,iBAAiB;IACjB,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAC;QACjI,CAAC;QACD,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,+BAA+B;IAC/B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,IAAW,CAAC,CAAC,gCAAgC;IACtD,CAAC;IAED,oBAAoB;IACpB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,IAAW,CAAC,CAAC,cAAc;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAuB;IAChE,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,WAAW,GAAG,IAAI,IAAI,GAAG,CAAC,kBAAkB,IAAI,MAAM,CAAC;IAE7D,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;IACP,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/commands/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/commands/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QAgJpD"}
|
package/dist/commands/image.js
CHANGED
|
@@ -13,8 +13,8 @@ export function registerImageCommand(program) {
|
|
|
13
13
|
.description('生成或编辑图像 - 统一的图像命令,自动选择 BFL 或 ComfyUI 后端')
|
|
14
14
|
.argument('<prompt>', '图像描述提示词')
|
|
15
15
|
.option('-i, --input <path>', '输入图像路径(可多次使用,最多 8 个)', collect, [])
|
|
16
|
-
.option('-
|
|
17
|
-
.option('-
|
|
16
|
+
.option('-W, --width <px>', '输出宽度 (默认: 1024)')
|
|
17
|
+
.option('-H, --height <px>', '输出高度 (默认: 1024)')
|
|
18
18
|
.option('-s, --seed <number>', '随机种子')
|
|
19
19
|
.option('-f, --format <fmt>', '输出格式: jpeg | png (默认: png)')
|
|
20
20
|
.option('-o, --output <path>', '输出目录')
|
|
@@ -109,7 +109,7 @@ export function registerImageCommand(program) {
|
|
|
109
109
|
'$ comfy image "combine styles" -i style.png -i content.png',
|
|
110
110
|
'',
|
|
111
111
|
'# 指定尺寸',
|
|
112
|
-
'$ comfy image "landscape" -
|
|
112
|
+
'$ comfy image "landscape" -W 1920 -H 1080',
|
|
113
113
|
'',
|
|
114
114
|
'# 强制使用特定后端',
|
|
115
115
|
'$ comfy image "a cat" --backend comfyui',
|
|
@@ -137,11 +137,12 @@ export function registerImageCommand(program) {
|
|
|
137
137
|
{ command: 'edit <image> <prompt>', description: '编辑图像(别名)' },
|
|
138
138
|
],
|
|
139
139
|
notes: [
|
|
140
|
+
'推荐命令: 这是图像生成/编辑的统一入口,优先使用此命令',
|
|
141
|
+
'generate/edit 是别名: 无输入图像时等同 generate,有输入图像时等同 edit',
|
|
140
142
|
'自动选择后端: 有 BFL API Key 用 BFL,否则用 ComfyUI',
|
|
141
143
|
'BFL 云端 API: 高质量、支持多图参考、按量付费',
|
|
142
144
|
'ComfyUI 本地: 免费、支持自定义工作流',
|
|
143
145
|
'多图参考(-i 多次)仅 BFL 支持,ComfyUI 只用第一张',
|
|
144
|
-
'使用 --backend 可强制指定后端',
|
|
145
146
|
],
|
|
146
147
|
});
|
|
147
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/commands/image.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/commands/image.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAkInD"}
|
package/dist/commands/init.js
CHANGED
|
@@ -3,6 +3,7 @@ import { join, dirname } from 'path';
|
|
|
3
3
|
import { fileURLToPath } from 'url';
|
|
4
4
|
import { outputSuccess, outputError, isPrettyMode } from '../utils/output.js';
|
|
5
5
|
import { success, info } from '../utils/logger.js';
|
|
6
|
+
import { addEnhancedHelp } from '../utils/helpText.js';
|
|
6
7
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
7
8
|
/**
|
|
8
9
|
* Load skill templates from package files
|
|
@@ -20,10 +21,10 @@ async function loadSkillTemplates() {
|
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
export function registerInitCommand(program) {
|
|
23
|
-
program
|
|
24
|
+
const cmd = program
|
|
24
25
|
.command('init')
|
|
25
|
-
.description('
|
|
26
|
-
.option('-f, --force', '
|
|
26
|
+
.description('初始化 Claude Code Skills - 在当前目录配置 ComfyUI CLI 技能')
|
|
27
|
+
.option('-f, --force', '覆盖已存在的技能文件', false)
|
|
27
28
|
.action(async (options) => {
|
|
28
29
|
const pretty = isPrettyMode(options);
|
|
29
30
|
try {
|
|
@@ -101,8 +102,43 @@ export function registerInitCommand(program) {
|
|
|
101
102
|
}
|
|
102
103
|
}
|
|
103
104
|
catch (error) {
|
|
104
|
-
outputError('INIT_FAILED',
|
|
105
|
+
outputError('INIT_FAILED', `初始化失败: ${error instanceof Error ? error.message : String(error)}`, options);
|
|
105
106
|
}
|
|
106
107
|
});
|
|
108
|
+
// Add enhanced help
|
|
109
|
+
addEnhancedHelp(cmd, {
|
|
110
|
+
examples: [
|
|
111
|
+
'# 初始化 Claude Code Skills',
|
|
112
|
+
'$ comfy init',
|
|
113
|
+
'',
|
|
114
|
+
'# 强制覆盖已存在的技能文件',
|
|
115
|
+
'$ comfy init --force',
|
|
116
|
+
],
|
|
117
|
+
outputJson: `{
|
|
118
|
+
"success": true,
|
|
119
|
+
"data": {
|
|
120
|
+
"message": "Skills initialized successfully",
|
|
121
|
+
"skills_directory": "/path/to/project/.claude/skills",
|
|
122
|
+
"created_skills": ["comfy-cli"],
|
|
123
|
+
"next_steps": [
|
|
124
|
+
"Open this project in Claude Code",
|
|
125
|
+
"Claude will auto-discover ComfyUI CLI skill",
|
|
126
|
+
"Ask Claude to generate/edit images or create videos"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}`,
|
|
130
|
+
relatedCommands: [
|
|
131
|
+
{ command: 'config set server <url>', description: '配置 ComfyUI 服务器地址' },
|
|
132
|
+
{ command: 'generate <prompt>', description: '生成图像' },
|
|
133
|
+
{ command: 'edit <image> <prompt>', description: '编辑图像' },
|
|
134
|
+
{ command: 'video <image>', description: '生成视频' },
|
|
135
|
+
],
|
|
136
|
+
notes: [
|
|
137
|
+
'在项目根目录运行,会创建 .claude/skills/comfy-cli/ 目录',
|
|
138
|
+
'Claude Code 会自动发现并加载该技能',
|
|
139
|
+
'初始化后可以用自然语言让 Claude 生成/编辑图像或视频',
|
|
140
|
+
'使用 --force 可覆盖已存在的技能文件',
|
|
141
|
+
],
|
|
142
|
+
});
|
|
107
143
|
}
|
|
108
144
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/commands/video.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA+FpD"}
|