@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.
@@ -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 generate "a cute cat sitting on a couch"`
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 edit` 添加优化描述
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. 注意视频推荐使用 512x512 分辨率
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 "运动描述"] [-n "负面提示"] [--width 512] [--height 512] [--no-wait] [--pretty]
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 generate "a cute cat"
174
+ comfy image "a cute cat"
167
175
  ```
168
- 返回包含 `prompt_id` 和状态的 JSON,等待完成后使用 `comfy download <prompt_id>` 下载
176
+ 返回包含 `id` 和状态的 JSON,等待完成后使用 `comfy download <id>` 下载
169
177
 
170
178
  ### 示例 2:高分辨率图像
171
179
  ```bash
172
- comfy generate "beautiful landscape with mountains" --width 1920 --height 1080
180
+ comfy image "beautiful landscape with mountains" -W 1920 -H 1080
173
181
  ```
174
182
 
175
183
  ### 示例 3:图像风格转换
176
184
  ```bash
177
- comfy edit photo.jpg "anime style"
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
- ### 示例 4:视频生成
198
+ ### 示例 6:视频生成(ComfyUI 本地)
181
199
  ```bash
182
- comfy video portrait.png --prompt "smooth motion, natural movement"
200
+ comfy video portrait.png --prompt "natural movement" --backend comfyui
183
201
  ```
184
202
 
185
- ### 示例 5:批量生成(非阻塞)
203
+ ### 示例 7:批量生成(非阻塞)
186
204
  ```bash
187
- comfy generate "a cat sitting" --no-wait
188
- comfy generate "a cat playing" --no-wait
189
- comfy generate "a cat sleeping" --no-wait
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
- ### 示例 6:完整工作流
211
+ ### 示例 8:完整工作流
194
212
  ```bash
195
213
  # 1. 生成图像
196
- comfy generate "a portrait of a woman"
197
- # 返回 prompt_id,等待完成后使用 comfy download 下载
214
+ comfy image "a portrait of a woman"
215
+ # 返回 id,等待完成后使用 comfy download 下载
198
216
 
199
217
  # 2. 下载第一张图像
200
- comfy download <prompt_id_1>
218
+ comfy download <id_1>
201
219
  # 输出:./output/comfy-cli_00001_.png
202
220
 
203
221
  # 3. 编辑图像
204
- comfy edit ./output/comfy-cli_00001_.png "add cinematic lighting"
205
- # 返回 prompt_id,等待完成后下载
222
+ comfy image "add cinematic lighting" -i ./output/comfy-cli_00001_.png
223
+ # 返回 id,等待完成后下载
206
224
 
207
225
  # 4. 下载编辑后的图像
208
- comfy download <prompt_id_2>
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
- # 返回 prompt_id,等待完成后下载
231
+ # 返回 id,等待完成后下载
214
232
  ```
215
233
 
216
- ### 示例 7:检查状态和下载
234
+ ### 示例 9:检查状态和下载
217
235
  ```bash
218
236
  # 非阻塞提交
219
- comfy generate "sunset" --no-wait
220
- # 返回:{ "prompt_id": "abc123" }
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
- - 默认连接到 `http://dev.optima.chat:8188`
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
  - 默认等待完成并显示实时进度
@@ -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":"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;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;IAEvC;;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"}
@@ -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,QA+IpD"}
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"}
@@ -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('-w, --width <px>', '输出宽度 (默认: 1024)')
17
- .option('-h, --height <px>', '输出高度 (默认: 1024)')
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" -w 1920 -h 1080',
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;AAyBpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QA8FnD"}
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"}
@@ -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('Initialize Claude Code Skills in current directory')
26
- .option('-f, --force', 'Overwrite existing skills', false)
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', `Initialization failed: ${error instanceof Error ? error.message : String(error)}`, options);
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":"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"}
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;AAWpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA2KpD"}
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"}