@lingjingai/lj-awb-cli-pre 0.3.15 → 0.3.17
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/README.md +13 -16
- package/install.mjs +1 -0
- package/package.json +2 -2
- package/packages/awb-cli/package.json +2 -2
- package/packages/awb-core/package.json +1 -1
- package/packages/awb-core/src/api.js +33 -64
- package/packages/awb-core/src/commands.js +147 -67
- package/packages/awb-core/src/common.js +2 -1
- package/packages/awb-core/src/output.js +74 -25
- package/packages/awb-core/src/services.js +645 -104
- package/packages/awb-core/src/standalone.js +207 -116
- package/skills/lj-awb/SKILL.md +78 -131
- package/skills/lj-awb/VERSION +1 -1
- package/skills/lj-awb/compat.json +3 -3
- package/skills/lj-awb/modules/asset.md +29 -22
- package/skills/lj-awb/modules/create-contract.md +20 -11
- package/skills/lj-awb/modules/create.md +37 -0
- package/skills/lj-awb/modules/driver.md +109 -0
- package/skills/lj-awb/modules/evals.md +84 -36
- package/skills/lj-awb/modules/image.md +14 -14
- package/skills/lj-awb/modules/model.md +11 -29
- package/skills/lj-awb/modules/project.md +1 -0
- package/skills/lj-awb/modules/subject.md +24 -13
- package/skills/lj-awb/modules/task-manual.md +31 -28
- package/skills/lj-awb/modules/task.md +22 -3
- package/skills/lj-awb/modules/upload.md +10 -9
- package/skills/lj-awb/modules/video.md +25 -32
- package/skills/lj-awb/modules/workflows.md +81 -199
- package/skills/lj-awb/references/error-codes.md +13 -6
- package/skills/lj-awb/references/model-options-read.md +2 -2
- package/skills/lj-awb/references/output-fields.md +23 -18
|
@@ -32,40 +32,9 @@
|
|
|
32
32
|
- `--resource audio:source=...`
|
|
33
33
|
- `--need-audio <audioFile>`
|
|
34
34
|
- `--prompt "选择跳跃"` 同时带 `image:reference:hero=...`
|
|
35
|
-
- 未确认 `quality` / `duration` 就先跑 `video
|
|
35
|
+
- 未确认 `quality` / `duration` 就先跑 `create video-fee` 或 `create video --dry-run`。
|
|
36
36
|
|
|
37
|
-
### 1.1
|
|
38
|
-
|
|
39
|
-
用户:“一个女人在图片上走动 一边说音频。使用 sd2fast参考生。”
|
|
40
|
-
|
|
41
|
-
期望:
|
|
42
|
-
|
|
43
|
-
- `sd2fast`、`参考生` 只用于模型和资源选择,不进入 prompt。
|
|
44
|
-
- 可以把参考图占位符补进 prompt,例如 `<<<scene>>> 一个女人在图片上走动 一边说音频`。
|
|
45
|
-
- 不要根据图片内容自动补“山谷风景”等场景描述。
|
|
46
|
-
- 不要把“一边说音频”改写成“口型跟随参考音频”,除非用户要求优化。
|
|
47
|
-
|
|
48
|
-
禁止:
|
|
49
|
-
|
|
50
|
-
- `在 <<<scene>>> 的山谷风景中,一个女人自然走动,一边说话,口型跟随参考音频。`
|
|
51
|
-
|
|
52
|
-
### 1.2 指定模型和主体资产但缺少价格参数
|
|
53
|
-
|
|
54
|
-
用户:“妈妈在图中跳广场舞,并且一边说音频内容。使用 sd2fast 生视频,妈妈的资产 id 是 asset-20260511135015-7nhph。”
|
|
55
|
-
|
|
56
|
-
期望:
|
|
57
|
-
|
|
58
|
-
- 可以先查 `doctor --verify`、模型候选、`model options`、`model create-spec`、账号和项目组。
|
|
59
|
-
- 识别创作描述接近“妈妈在图中跳广场舞,并且一边说音频内容”,`sd2fast` 只用于模型选择,资产 id 只用于资源组织。
|
|
60
|
-
- 如果 `quality`、`duration` 或约束后仍可选的 `ratio` 未给出,先向用户追问并列出候选值和默认值。
|
|
61
|
-
- 用户确认关键参数前,不运行 `video fee`,也不运行 `video create --dry-run`。
|
|
62
|
-
|
|
63
|
-
禁止:
|
|
64
|
-
|
|
65
|
-
- 直接采用默认画质 / 时长跑估价。
|
|
66
|
-
- 先 dry-run 再让用户修改参数。
|
|
67
|
-
|
|
68
|
-
### 1.3 Banana 参考图生图
|
|
37
|
+
### 1.1 Banana 参考图生图(图片生图唯一用例)
|
|
69
38
|
|
|
70
39
|
用户:“用 banana 生图。让第一张里的白发女保持金鱼嘴表情,在第二张场景里坐秋千。”
|
|
71
40
|
|
|
@@ -131,8 +100,8 @@
|
|
|
131
100
|
|
|
132
101
|
期望:
|
|
133
102
|
|
|
134
|
-
- 先 `subject
|
|
135
|
-
- `subject
|
|
103
|
+
- 先 `create subject --model-code tx|vidu --dry-run`,确认后 `create subject --model-code tx|vidu --yes`。
|
|
104
|
+
- `create subject-wait` 成功后使用 `nextRefSubject`。
|
|
136
105
|
- 视频使用 `subject:reference:<key>=asset:<externalId>`,prompt 包含 `<<<key>>>`。
|
|
137
106
|
|
|
138
107
|
禁止:
|
|
@@ -177,10 +146,89 @@
|
|
|
177
146
|
期望:
|
|
178
147
|
|
|
179
148
|
- 查询候选视频模型,并用 `supportedIntents.mode=reference` 筛选。
|
|
180
|
-
-
|
|
149
|
+
- 按 [`driver.md`](driver.md) 三步走展示候选(基本信息 → 并行跑 `model options` 列实际取值 → 看完真实选项再追问);`modelGroupCode` 是技术 ID 默认不展示。
|
|
181
150
|
- 不默认列负面能力清单;只解释与参考图生视频相关的能力。
|
|
182
151
|
|
|
183
152
|
禁止:
|
|
184
153
|
|
|
185
154
|
- 只按模型名字猜。
|
|
186
155
|
- 只看模型列表摘要就当最终能力判定,不查 `create-spec`。
|
|
156
|
+
- 把 `modelGroupCode` 当作面向用户的选项 ID 报给用户。
|
|
157
|
+
|
|
158
|
+
### 9. 首帧 + 音频参考混传
|
|
159
|
+
|
|
160
|
+
用户:“用这张图当首帧,再配上这段音频生视频。”
|
|
161
|
+
|
|
162
|
+
期望:
|
|
163
|
+
|
|
164
|
+
- 识别到首帧(frames 模式)和音频参考(reference 模式)属于互斥模式。
|
|
165
|
+
- 改组装为 `--resource image:reference=<image> --resource audio:reference=<audio>`,让两者都在 reference 模式。
|
|
166
|
+
- 主动告知用户:"图作为参考图而不是首帧,是因为该模型不支持 first_frame + audio:reference 混用,平台会以 `api_error code=1007` 拒绝。"
|
|
167
|
+
|
|
168
|
+
禁止:
|
|
169
|
+
|
|
170
|
+
- 直接 `--resource image:first_frame=... --resource audio:reference=...` 提交。
|
|
171
|
+
- 看到 1007 报错才改方案,没在 dry-run 前就识别冲突。
|
|
172
|
+
|
|
173
|
+
### 10. 复用上传产物时复制 https URL
|
|
174
|
+
|
|
175
|
+
用户:“刚才传上去的那张 hero.png 复用一下,再生 3 条视频。”
|
|
176
|
+
|
|
177
|
+
期望:
|
|
178
|
+
|
|
179
|
+
- 复用 `upload files` 响应里的 `backendPath`(形如 `material/...`),写入 `--resource image:reference=material/...` 或 JSONL `source.value`。
|
|
180
|
+
- 提示用户:`upload files` 回显的 `url`(`https://*.myqcloud.com/...`)只是预览签名地址,不要作为下游 `source.value`。
|
|
181
|
+
|
|
182
|
+
禁止:
|
|
183
|
+
|
|
184
|
+
- 复制 https URL 到 batch JSONL 的 `source.value`。
|
|
185
|
+
- 把上传命令 stdout 整段塞回任务请求体。
|
|
186
|
+
|
|
187
|
+
### 11. 主体发布缺平台
|
|
188
|
+
|
|
189
|
+
用户:“把这张图发布成主体,名字叫女主。”
|
|
190
|
+
|
|
191
|
+
期望:
|
|
192
|
+
|
|
193
|
+
- 识别到 `create subject` 必须传 `--model-code tx|vidu`:KeLing / 可灵 → `tx`,Vidu → `vidu`。
|
|
194
|
+
- 追问用户:"这个主体将来主要用在 KeLing / 可灵 还是 Vidu?"
|
|
195
|
+
- 用户答复后再 `create subject --model-code <tx|vidu> --dry-run`。
|
|
196
|
+
|
|
197
|
+
禁止:
|
|
198
|
+
|
|
199
|
+
- 不问平台直接跑 `create subject --name 女主 --resource primary:...`,导致 CLI 报 `argument_error: 缺少主体 modelCode`。
|
|
200
|
+
- 传入 `tx` / `vidu` 之外的主体模型编码。
|
|
201
|
+
|
|
202
|
+
### 12. 用 fee 探索参数空间
|
|
203
|
+
|
|
204
|
+
用户:“帮我看看这张图用 GPT2 生图大概多少积分?”
|
|
205
|
+
|
|
206
|
+
期望:
|
|
207
|
+
|
|
208
|
+
- 先 `model image-models --model GPT2`,挑出候选模型组。
|
|
209
|
+
- 对候选**并行**跑 `model options` 拿到 `quality` / `ratio` / `generateNum` 的真实取值表 + `feeCalcType`。
|
|
210
|
+
- 用 `model options` 输出直接给用户列候选档位(quality 各档差几倍、generateNum × 单价大致区间),让用户先在 model options 阶段敲定关键参数。
|
|
211
|
+
- 用户确认参数后,**只跑一次** `create image-fee`,把估价给用户。
|
|
212
|
+
|
|
213
|
+
禁止:
|
|
214
|
+
|
|
215
|
+
- 在用户没确认参数前,对同一个 `modelGroupCode` 跑 `create image-fee` / `create video-fee` × 多个 `quality` / `duration` / `ratio` 组合凑价格表。
|
|
216
|
+
- 为了横向对比同款不同渠道,对多个候选 `modelGroupCode` 都跑 fee;候选比较应该发生在 `model options` 阶段,按 `feeCalcType` + 参数表口算。
|
|
217
|
+
- 把 fee 当成"探索哪些参数组合可行 / 价格友好"的工具——`fee` 只是参数已敲定后的最终估价。
|
|
218
|
+
|
|
219
|
+
### 13. 把素材资产 ID 当主体 ID
|
|
220
|
+
|
|
221
|
+
用户:“用这个图片资产 ID `asset_xxx` 作为主体复用。”
|
|
222
|
+
|
|
223
|
+
期望:
|
|
224
|
+
|
|
225
|
+
- 先区分用户给的是主体 ID,还是图片素材资产 ID。
|
|
226
|
+
- 如果是主体 ID:用 `subject:reference:<key>=asset:<subjectId>`。
|
|
227
|
+
- 如果是图片素材资产 ID:只能按当前目标模型的素材入口使用,例如 `image:reference=asset:<assetId>`、`image:first_frame=asset:<assetId>` 或 `image:last_frame=asset:<assetId>`;不能把它当主体引用。
|
|
228
|
+
- 如果目标模型/资源模式要求 `subject:reference`,但用户只给了图片素材资产 ID,停止组装命令并要求用户提供已有主体 ID。
|
|
229
|
+
|
|
230
|
+
禁止:
|
|
231
|
+
|
|
232
|
+
- 把图片素材资产 ID 塞进 `subject:reference`。
|
|
233
|
+
- 拿图片素材资产 ID 自动切去 `create subject` 流程。
|
|
234
|
+
- 把 `image:reference` / `image:first_frame` 的素材资产引用和 `subject:reference` 的主体引用混为一类。
|
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
| 命令 | 用途 |
|
|
8
8
|
|------|------|
|
|
9
|
-
| `lj-awb image
|
|
10
|
-
| `lj-awb image
|
|
11
|
-
| `lj-awb image
|
|
12
|
-
| `lj-awb image
|
|
13
|
-
| `lj-awb image
|
|
9
|
+
| `lj-awb create image-fee --model-group-code <code> --prompt "..."` | 生图估价 |
|
|
10
|
+
| `lj-awb create image --model-group-code <code> --prompt "..." --dry-run` | 预览生图请求 |
|
|
11
|
+
| `lj-awb create image --model-group-code <code> --prompt "..." --resource image:reference=./ref.png --project-group-no <no> --yes` | 提交参考图生图任务 |
|
|
12
|
+
| `lj-awb create image-batch --input-file ./image.jsonl --model-group-code <code> --yes` | 批量生图 |
|
|
13
|
+
| `lj-awb task image-status --task-id <id>` | 查询生图任务 |
|
|
14
14
|
| `lj-awb task wait --task-id <id> --task-type IMAGE_CREATE --wait-seconds 180` | 等待生图结果 |
|
|
15
15
|
|
|
16
16
|
## 创建参数
|
|
@@ -35,14 +35,14 @@ lj-awb model create-spec --model-group-code <modelGroupCode> -f json
|
|
|
35
35
|
如果用户没有指定 `ratio`、`quality` 或 `generateNum`,先展示 `model options.params[].values` 和默认值让用户选择;用户确认后再执行:
|
|
36
36
|
|
|
37
37
|
```bash
|
|
38
|
-
lj-awb image
|
|
39
|
-
lj-awb image
|
|
38
|
+
lj-awb create image-fee --model-group-code <modelGroupCode> --prompt "<prompt>"
|
|
39
|
+
lj-awb create image --model-group-code <modelGroupCode> --prompt "<prompt>" --dry-run
|
|
40
40
|
```
|
|
41
41
|
|
|
42
42
|
用户确认后:
|
|
43
43
|
|
|
44
44
|
```bash
|
|
45
|
-
lj-awb image
|
|
45
|
+
lj-awb create image \
|
|
46
46
|
--model-group-code <modelGroupCode> \
|
|
47
47
|
--prompt "<user prompt>" \
|
|
48
48
|
--ratio <allowedRatio> \
|
|
@@ -57,19 +57,19 @@ lj-awb image create \
|
|
|
57
57
|
- 不要提交 `generated_time`、`iref`、`frames`、`multi_param`、`generated_mode` 这类平台旧字段。
|
|
58
58
|
- `--prompt` 的重点是组装资源、参数和模型约束;用户没有明确需求时不要主动编内容补空白,用户要求优化时再做提示词创作。
|
|
59
59
|
- 参考素材统一使用 `--resource image:reference=...` 或 `--resources-json`。
|
|
60
|
-
-
|
|
61
|
-
- 生图参考资源不使用 `reference_key`,不要写 `image:reference:<key>=...`,也不要在 prompt 中插入 `<<<key>>>`。
|
|
62
|
-
- 多张参考图用资源顺序和自然语言描述映射,例如“图一中的白发女保持表情,在图二背景里坐秋千”。
|
|
60
|
+
- 参考图 source.value 取值优先级、"不要复用 myqcloud 完整 URL"、图片生图不使用 `reference_key` / `<<<key>>>` 等规则统一在 [`create-contract.md`](create-contract.md) §素材组织 + §Prompt 组装原则;多张参考图用资源顺序和自然语言指代映射(例如"图一中的白发女保持表情,在图二背景里坐秋千"),不要替用户编 key。
|
|
63
61
|
- `ratio` / `quality` / `generate-num` 不确定时,先查 `model options`,不要猜一个模型不支持的值。
|
|
64
62
|
- `fee` 和 `create --dry-run` 前必须确认缺失的 `ratio`、`quality`、`generate-num`;不要静默用默认值估价。用户说“按默认”后才继续。
|
|
65
63
|
- 正式提交必须带 `--yes`;如果需要看请求体,先用 `--dry-run`。
|
|
66
64
|
- 批量 JSON/JSONL 每项只写 `prompt`、`ratio`、`quality`、`generate_num`、`resources`、`resource`、`customBizId`;模型组和项目组放命令行公共参数。
|
|
67
|
-
-
|
|
65
|
+
- **批量是 best-effort**:`create-batch` 子任务**单条失败不会回滚整批**,已成功项依然扣分并产生 taskId。提交后必读响应里每项的 `status` / `taskId` / `error`,给用户汇总"成功 N / 失败 M",对失败项单独 fix + 重跑(不要全批重跑)。
|
|
66
|
+
- **多镜头 / 多 prompt 时主动建议并行**:用户一次给出 ≥2 个同模型同参数的图片任务(典型场景:分镜、组图、多 prompt 候选)时,Agent 必须先告知"这批可以用 `create image-batch --concurrency N` 并行执行(n 个任务,预计耗时 / 单次估价 × n)",并询问用户是否要并行。用户同意 → 走 batch;用户希望逐条审稿 / 调 prompt → 继续单条 create。**不要默认一条一条串行还不告知**,这种沉默会浪费用户时间。
|
|
68
67
|
- 等待超时只代表本轮轮询结束,不能对用户说任务失败。
|
|
69
68
|
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"生图 / 生视频"小节;错误恢复见 [`../references/error-codes.md`](../references/error-codes.md)。
|
|
70
69
|
|
|
71
70
|
## 下一步
|
|
72
71
|
|
|
73
|
-
- `image
|
|
74
|
-
- `image
|
|
72
|
+
- `create image` 返回 `taskId` + `nextCommand`(通常 = `task wait`)→ **立刻接着跑** `task wait --task-id <id> --task-type IMAGE_CREATE --wait-seconds 180`,不要让用户再问"好了没"。
|
|
73
|
+
- `create image-batch` 写入 `.awb/tasks.jsonl`,用 [`task.md`](task.md) → `task record-poll` 批量等。
|
|
75
74
|
- 任务终态拿到 `resultUrls` → 视场景决定:① 直接交付给用户;② 用作下一轮生图 / 生视频的参考图(直接以 result URL 喂 `--resource image:reference=<url>`);③ 写回 [`artifact/asset.md`](artifact/asset.md) 的角色 / 道具 / 场景产物。
|
|
75
|
+
- 任务 `SUCCESS` 后**立刻**查素材库可能查不到——后端 `saveResourceToMaterial` 是事务提交后异步执行,详见 [`task.md`](task.md) 规则。优先用 `resultUrls` 直接消费;非要列素材库时先 sleep 2-3 秒。
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
|------|------|
|
|
9
9
|
| `lj-awb model image-models --model "<keyword>"` | 查询生图候选模型 |
|
|
10
10
|
| `lj-awb model video-models --model "<keyword>"` | 查询生视频候选模型 |
|
|
11
|
+
| `lj-awb model asset-review-models --model-group-code <code>` | 查询支持素材加白的模型组与平台关系 |
|
|
11
12
|
| `lj-awb model input-guide -f json` | 查看统一创建参数、resources 字段和素材绑定规则 |
|
|
12
13
|
| `lj-awb model options --model-group-code <code> -f json` | 查看该模型支持的 CLI 参数、枚举值、默认值、素材约束和条件约束 |
|
|
13
14
|
| `lj-awb model create-spec --model-group-code <code> -f json` | 查看该模型如何创建任务:输入模式、素材绑定规则、示例和前置步骤 |
|
|
@@ -21,21 +22,11 @@ lj-awb model image-models --model "<keyword>"
|
|
|
21
22
|
lj-awb model video-models --model "<keyword>"
|
|
22
23
|
```
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- `displayName`:模型展示名。
|
|
27
|
-
- `modelGroupCode`:后续创建任务必须使用的编码。
|
|
28
|
-
- `provider`:供应商。
|
|
29
|
-
- `feeCalcType`:计费类型。
|
|
30
|
-
- `modelStatus` / `taskQueueNum`:当前负载和排队参考。
|
|
31
|
-
- `inputModes`:模型列表阶段用于粗筛的输入方式摘要,例如 `prompt_only`、`reference`、`frames`、`storyboard`。
|
|
32
|
-
- `params`:模型列表阶段用于粗筛的可控参数摘要,例如 `ratio`、`quality`、`duration`;最终枚举值和限制以 `model options` 为准。
|
|
33
|
-
|
|
34
|
-
不要一次展示完整原始 JSON;让用户在 2-4 个候选中确认。
|
|
25
|
+
候选展示走 [`driver.md`](driver.md) 的创作链条:基本信息 → 并行跑 `model options` 列真实参数取值 → 看完真实选项后追问。不要把原始 JSON 整段粘给用户。模型列表里 `inputModes` / `params` 摘要只用于**初筛**;最终枚举值和限制以 `model options` 为准。`modelGroupCode` 是技术 ID,agent 内部跑命令用,**默认不展示给用户**。
|
|
35
26
|
|
|
36
27
|
## 获取参数约束
|
|
37
28
|
|
|
38
|
-
|
|
29
|
+
用户选定模型后,若本轮未缓存该模型的参数约束,运行:
|
|
39
30
|
|
|
40
31
|
```bash
|
|
41
32
|
lj-awb model options --model-group-code <modelGroupCode> -f json
|
|
@@ -49,15 +40,13 @@ Agent 读取这些字段:
|
|
|
49
40
|
- `params[].values`:枚举取值,创建任务时只能从这里选。
|
|
50
41
|
- `params[].defaultValue`:模型默认值;关键参数不能静默采用默认值,用户选择或确认“按默认”后才继续 fee / dry-run。
|
|
51
42
|
- `params[].maxLength`:prompt 等文本参数的长度限制。
|
|
52
|
-
- `resources[]`:素材媒体约束,包含 `mode`、`mediaType`、`usage`、`
|
|
43
|
+
- `resources[]`:素材媒体约束,包含 `mode`、`mediaType`、`usage`、`valueShapes`、`fileTypes`、数量 / 大小 / 时长限制;frames 资源的 `usage` 可同时包含 `first_frame|last_frame`。`valueShapes` 描述允许的 value 形状(`file|url|platformPath|asset`),与 `source.kind` 的两值枚举不同,详见 [`../references/model-options-read.md`](../references/model-options-read.md)。
|
|
53
44
|
- `media=IMAGE` 的 `fileTypes` 是特殊语义:空列表表示不支持 webp,CLI 会把本地 webp 自动转成 jpg;仅 `webp` 表示普通图片格式外也支持 webp;多值列表才是强控制允许格式。默认 text 会把它翻译成 `formats=...` 和 `webpInput=accepted|autoConvertToJPG`。
|
|
54
45
|
- `constraints[]`:条件约束全景,描述某个输入或参数出现后,会限制哪个目标参数的可选值;例如 `target=ratio` 且 `when=resource.image.frame=present`、`effect=no_selectable_values` 表示首帧 / 首尾帧输入后不要让用户继续选择比例。
|
|
55
46
|
|
|
56
|
-
`model options` 不输出 `--resource` 写法、prompt key 绑定或下一步创建命令;这些属于 `model create-spec`。
|
|
57
|
-
|
|
58
47
|
## 获取创建规格
|
|
59
48
|
|
|
60
|
-
|
|
49
|
+
用户选定模型后,若本轮未缓存该模型的创建规格,运行:
|
|
61
50
|
|
|
62
51
|
```bash
|
|
63
52
|
lj-awb model create-spec --model-group-code <modelGroupCode> -f json
|
|
@@ -65,7 +54,7 @@ lj-awb model create-spec --model-group-code <modelGroupCode> -f json
|
|
|
65
54
|
|
|
66
55
|
Agent 读取这些字段:
|
|
67
56
|
|
|
68
|
-
- `taskKind`:`image` 或 `video`,决定使用 `image
|
|
57
|
+
- `taskKind`:`image` 或 `video`,决定使用 `create image` 还是 `create video`。
|
|
69
58
|
- `optionsCommand`:查看本模型参数约束的命令。
|
|
70
59
|
- `inputRequirement`:是否必须提供视觉输入,以及不能只传 prompt 的原因。
|
|
71
60
|
- `supportedIntents[]`:用户意图到统一输入方式的权威映射,例如 `prompt_only`、`reference`、`frames`、`storyboard`。
|
|
@@ -89,18 +78,11 @@ Agent 读取这些字段:
|
|
|
89
78
|
|
|
90
79
|
规则:
|
|
91
80
|
|
|
92
|
-
- `
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
- `model
|
|
96
|
-
-
|
|
97
|
-
- 用户说“上传音频 / 使用音乐 / 配音 / 音频参考”时,这是素材输入,优先使用 `--resource audio:reference=...`,不要先找 `needAudio`。
|
|
98
|
-
- 音频参考可以使用 `audio:reference`;只有用户明确要在 prompt 中指代音频时,才使用 `audio:reference:<key>`。
|
|
99
|
-
- 图片生图不使用 `reference_key` 或 `<<<key>>>`;用 `image:reference=...` 传参考图,并在 prompt 中用自然语言指代图一、图二、参考图、主体等。
|
|
100
|
-
- 视频 `reference_key` 是可选绑定;prompt 中出现 `<<<key>>>` 时,必须有同名 reference 资源,反过来不强制。
|
|
101
|
-
- `supportLastFrameOnly` 只表示模型是否支持“仅尾帧”输入;首尾帧过渡能力看 frames 资源的 `usage` 是否包含 `last_frame` 和数量约束。
|
|
102
|
-
- 只有用户明确问“是否需要输出音效”时,才检查 `model options.params[]` 是否有 `needAudio`;没有时只说“当前模型没有暴露输出音效控制项,不要传 --need-audio”。
|
|
103
|
-
- 如果 `inputRequirement.visualInputRequired=true`,创建任务必须带 `supportedIntents[]` 中声明的视觉输入资源。
|
|
81
|
+
- `model options` 是参数和素材约束入口;`model create-spec` 是创建方式入口。判断用户需求能否满足,优先看 `create-spec.supportedIntents[]`;素材格式 / 数量 / 时长限制看 `options.resources[]`;参数 / 资源联动看 `options.constraints[]`(`effect=no_selectable_values` 表示触发后该目标参数没有可选枚举,不要追问或传入)。
|
|
82
|
+
- `supportLastFrameOnly` 只表示模型是否支持「仅尾帧」输入;首尾帧过渡能力看 frames 资源的 `usage` 是否包含 `last_frame` 和数量约束。
|
|
83
|
+
- 用户说「上传音频 / 使用音乐 / 配音 / 音频参考」是**素材输入**,先看 `options.resources[]` 有没有 `mediaType=AUDIO usage=reference`;**不要先去找 `needAudio`**(那是输出音效开关)。具体使用规则、`reference_key` / `<<<key>>>` 对齐和 `--need-audio` 不是音频入口等都见 [`create-contract.md`](create-contract.md) §素材组织 + §Prompt 组装原则。
|
|
84
|
+
- 用户要走素材加白 / 素材库过审时,先跑 `model asset-review-models --model-group-code <code>` 判断该模型是否支持以及平台值;不要根据模型名称猜平台,也不要把 `modelGroupCode` 放进资产组或素材创建命令。
|
|
85
|
+
- 关键参数选择、`fee` / `create --dry-run` 前的追问流程、`inputRequirement.visualInputRequired` 检查等创建前校验见 [`create-contract.md`](create-contract.md) §创建前校验。
|
|
104
86
|
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"模型"小节。
|
|
105
87
|
|
|
106
88
|
## 下一步
|
|
@@ -28,3 +28,4 @@
|
|
|
28
28
|
|
|
29
29
|
- 项目组选定后 → [`credits.md`](credits.md) 查 `billingPointBalance` + `projectBudgetBalance`,判断是否够跑下一批任务。
|
|
30
30
|
- 项目组不存在但用户想要 → `project create` 比 `project ensure` 更明确;`ensure` 适合脚本场景(已存在则复用)。
|
|
31
|
+
- 创建项目组前用户想拉人 → `project users` 列出当前团队可选成员(userId + 姓名),把选中的 userId 用逗号拼成 `--user-ids id1,id2` 传给 `project create`。也可以用 `--members-json '[{"userId":"..."}]'` 直接传 JSON。**不要让用户手敲 userId**,先跑 `project users` 取列表。
|
|
@@ -2,31 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
主体模块用于创建 / 查询平台主体 element。视频主体参考应使用主体的 `externalId`,通过 `--resource subject:reference:<key>=asset:<externalId>` 传给视频创建命令。
|
|
4
4
|
|
|
5
|
+
> **发布主体前必须传 `--model-code <tx|vidu>`**:KeLing / 可灵主体明确传 `tx`,Vidu 主体明确传 `vidu`。CLI 不接受 `keling`、`可灵`、`tencent`、`vidu-q` 等别名;不传或传错都会报 `argument_error`。如果用户没说目标平台,先追问"这个主体将来主要用在 KeLing / 可灵 还是 Vidu?"
|
|
6
|
+
|
|
5
7
|
## 命令
|
|
6
8
|
|
|
7
9
|
| 命令 | 用途 |
|
|
8
10
|
|------|------|
|
|
9
|
-
| `lj-awb subject
|
|
10
|
-
| `lj-awb subject
|
|
11
|
-
| `lj-awb subject
|
|
12
|
-
| `lj-awb subject
|
|
13
|
-
| `lj-awb subject
|
|
14
|
-
| `lj-awb subject
|
|
15
|
-
| `lj-awb subject
|
|
11
|
+
| `lj-awb create subject-list --name "女主"` | 查询主体 / 元素 |
|
|
12
|
+
| `lj-awb create subject-voice --name 女主音色 --file ./voice.mp3 --dry-run` | 预览创建主体可引用的自定义音色 |
|
|
13
|
+
| `lj-awb create subject-voice --name 女主音色 --file ./voice.mp3 --yes` | 创建主体音色并返回 voiceRecordId |
|
|
14
|
+
| `lj-awb create subject-voice-wait --voice-record-id <voiceRecordId> --wait-seconds 300` | 等待音色 externalId 回填 |
|
|
15
|
+
| `lj-awb create subject-voice-list --name "女主"` | 查询已创建音色 |
|
|
16
|
+
| `lj-awb create subject --model-code tx --name 女主 --resource primary:./three-view.png --dry-run` | 预览 KeLing 主体创建,request.modelCode 为 `tx` |
|
|
17
|
+
| `lj-awb create subject --model-code vidu --name 女主 --resource primary:./three-view.png --dry-run` | 预览 Vidu 主体创建,request.modelCode 为 `vidu` |
|
|
18
|
+
| `lj-awb create subject --model-code tx --name 女主 --resource primary:./three-view.png --yes` | 创建主体并返回 elementId |
|
|
19
|
+
| `lj-awb create subject-wait --element-id <elementId> --wait-seconds 300` | 等待 externalId 回填 |
|
|
20
|
+
| `lj-awb create subject --model-code vidu --name 女主 --resource primary:material/assets/a.png --yes` | 用已上传素材创建主体 |
|
|
21
|
+
| `lj-awb create subject --model-code tx --name 女主 --resource primary:./pri.png --resource face:./face.png --resource side:./side.png --yes` | 多视角参考图 |
|
|
22
|
+
| `lj-awb create subject-batch --input-file ./subjects.jsonl --model-code tx --yes` | 批量发布主体;命令行级 `--model-code` 可被 JSONL 每行的 `modelCode` 覆盖 |
|
|
16
23
|
|
|
17
24
|
## 规则
|
|
18
25
|
|
|
19
26
|
- 发布前确认主体名称、主参考图、可选正脸 / 侧面 / 背面图、项目名。
|
|
27
|
+
- 必须传 `--model-code tx|vidu`:KeLing / 可灵用 `tx`,Vidu 用 `vidu`。不要传平台名别名。
|
|
28
|
+
- 如主体需要参考音色,先用 `create subject-voice --file <audio>` 创建音色,再 `create subject-voice-wait` 拿到 `externalId`,最后把它作为 `create subject --voice-id <externalId>`。
|
|
29
|
+
- `create subject-voice` 的音色来源三选一:`--file` 本地音频、`--voice-url` / `--audio-url` 已上传 material 音频路径、`--video-id` 已有视频 ID。
|
|
20
30
|
- 参考图统一通过 `--resource <slot>:<file|url>` 传入,slot ∈ `primary | three-view | face | side | back`。无 `primary` 时 `three-view` 自动升为主图;本地路径(`./` 或绝对路径)会自动上传,含 `://` 或 `material/` 前缀的视为已上传 URL。
|
|
21
|
-
- `subject
|
|
31
|
+
- `create subject` 是提交动作;如果返回 `pending_external_id`,后续用 `create subject-wait --element-id <elementId>` 或 `create subject-list --name` 查询;如果 wait 返回 `subject_failed` / `subject_voice_failed`,直接把失败原因反馈给用户并重新创建。
|
|
22
32
|
- 成功 ready 后优先使用返回的 `externalId` / `nextRefSubject`。
|
|
23
33
|
- 后续视频生成时传 `--resource subject:reference:女主=asset:<externalId>`,不要反复上传同一张人物图。
|
|
24
34
|
- 主体发布是云端写入动作,必须确认。
|
|
25
|
-
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"主体"小节;`subject_still_pending`(exit 20)见 [`../references/error-codes.md`](../references/error-codes.md)
|
|
35
|
+
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"主体"小节;`subject_still_pending` / `subject_voice_still_pending`(exit 20)和 `subject_failed` / `subject_voice_failed`(exit 1)见 [`../references/error-codes.md`](../references/error-codes.md)。
|
|
26
36
|
|
|
27
37
|
## 下一步
|
|
28
38
|
|
|
29
|
-
- `subject
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
39
|
+
- `create subject` 返回 `elementId` → **立刻** `create subject-wait --element-id <elementId> --wait-seconds 300` 直到拿到 `externalId`。不要先去做别的事,否则用户视角是"角色没建好"。
|
|
40
|
+
- 需要音色时:`create subject-voice` 返回 `voiceRecordId` → **立刻** `create subject-voice-wait --voice-record-id <voiceRecordId> --wait-seconds 300`,拿到 `nextVoiceArg` 后再创建主体。
|
|
41
|
+
- `create subject-wait` 返回 `nextRefSubject`(形如 `女主=<externalId>`)→ 直接复制到 `create video --resource subject:reference:女主=asset:<externalId>` 即可,**不要手拼**。
|
|
42
|
+
- 想看历史发布过的主体(避免重发)→ `create subject-list --name "<keyword>"`。
|
|
43
|
+
- 批量主体发布走 `create subject-batch` + [`task.md`](task.md) → `task record-poll`。**批量创建是 best-effort**:单条失败不会回滚整批,已成功的 element 仍占用配额;提交后必读响应每项的 `status` / `elementId` / `error`,对失败项单独 `create subject` 补救,不要重跑整个 JSONL。
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# Task Manual Module
|
|
2
2
|
|
|
3
|
-
本模块是面向用户 / Agent 的任务手册:先判断用户真正要完成什么,再选择模型、素材语法和创建参数。不要从一句话直接拼 `image
|
|
3
|
+
本模块是面向用户 / Agent 的任务手册:先判断用户真正要完成什么,再选择模型、素材语法和创建参数。不要从一句话直接拼 `create image` / `create video`。
|
|
4
4
|
|
|
5
5
|
## 创作前固定流程
|
|
6
6
|
|
|
7
|
-
1.
|
|
8
|
-
2.
|
|
9
|
-
3.
|
|
10
|
-
4.
|
|
7
|
+
1. 本轮尚未验证时运行 `lj-awb doctor --verify`,确认认证、API、项目组、UTF-8。
|
|
8
|
+
2. 没有可复用候选时运行 `model image-models` 或 `model video-models`,按用户目标筛 2-4 个候选。
|
|
9
|
+
3. 选中模型的 `model options` 未缓存时运行 `model options --model-group-code <code> -f json`,读取参数取值和素材约束。
|
|
10
|
+
4. 选中模型的创建规格未缓存时运行 `model create-spec --model-group-code <code> -f json`。
|
|
11
11
|
5. 用 `inputRequirement` 判断是否必须有视觉输入;用 `supportedIntents` 判断素材模式;用 `model options.params` 判断 `ratio`、`quality`、`duration` 等枚举。
|
|
12
12
|
6. 在 `fee` 或 `create --dry-run` 前,先确认用户未提供但会影响价格 / 效果的关键参数:视频 `quality`、`duration`、约束后仍可选的 `ratio`,以及用户明确要输出音效时的 `needAudio`;图片 `quality`、`ratio`、`generateNum`。
|
|
13
13
|
7. 组装最终 prompt:以用户明确创作描述为基底,操作性指令只用于模型和资源选择;没有明确需求时先追问或用最小中性表达;只有视频 reference / subject 需要占位绑定时才考虑 `<<<key>>>`,并先展示最终文本。
|
|
@@ -26,14 +26,16 @@
|
|
|
26
26
|
|
|
27
27
|
| 用户目标 | 资源语法 | Prompt 处理 | 典型命令 |
|
|
28
28
|
|----------|----------|-------------|----------|
|
|
29
|
-
| 参考图生视频 | `--resource image:reference=<source>`;需要明确绑定时才用 `:key` | 普通参考不需要 `<<<key>>>`;显式绑定时 prompt 才出现同名占位符 | `video
|
|
30
|
-
| 让这张图动起来 / 从这张图开始 | `--resource image:first_frame=<source>` | 不需要 `<<<key>>>` | `video
|
|
31
|
-
| 首尾帧过渡 | `--resource image:first_frame=... --resource image:last_frame=...` | 不需要 `<<<key>>>` | `video
|
|
32
|
-
| 使用音乐 / 配音 / 音频参考 | `--resource audio:reference=<source>` | 只有需要引用具体音频对象时才加 key | `video
|
|
33
|
-
| 固定角色长期复用 | `subject
|
|
34
|
-
| 参考图生图 | `--resource image:reference=<source>` | 不使用 key / `<<<>>>`;用“图一 / 图二 / 参考图 / 主体”等自然语言指代 | `image
|
|
29
|
+
| 参考图生视频 | `--resource image:reference=<source>`;需要明确绑定时才用 `:key` | 普通参考不需要 `<<<key>>>`;显式绑定时 prompt 才出现同名占位符 | `create video` |
|
|
30
|
+
| 让这张图动起来 / 从这张图开始 | `--resource image:first_frame=<source>` | 不需要 `<<<key>>>` | `create video` |
|
|
31
|
+
| 首尾帧过渡 | `--resource image:first_frame=... --resource image:last_frame=...` | 不需要 `<<<key>>>` | `create video` |
|
|
32
|
+
| 使用音乐 / 配音 / 音频参考 | `--resource audio:reference=<source>` | 只有需要引用具体音频对象时才加 key | `create video` |
|
|
33
|
+
| 固定角色长期复用 | `create subject` -> `create subject-wait` -> `--resource subject:reference:<key>=asset:<externalId>` | key 必填;是否写入 prompt 取决于用户表达 | `subject` + `create video` |
|
|
34
|
+
| 参考图生图 | `--resource image:reference=<source>` | 不使用 key / `<<<>>>`;用“图一 / 图二 / 参考图 / 主体”等自然语言指代 | `create image` |
|
|
35
35
|
|
|
36
|
-
`<source>` 可以是本地文件、material backendPath、完整 URL
|
|
36
|
+
`<source>` 可以是本地文件、material backendPath、完整 URL,或素材资产 `asset:<assetId>`。主体引用是另一类资源,只能使用 `create subject` + `create subject-wait` 得到的主体 ID。
|
|
37
|
+
|
|
38
|
+
**模式互斥(视频)**:表中"让这张图动起来 / 首尾帧过渡"属于 frames 模式,其余属于 reference 模式;**同一次 `create video` 不能跨模式组合**,否则后端 `api_error code=1007`。详细规则、冲突案例和恢复路径见 [`create-contract.md`](create-contract.md) §素材组织 + [`../references/error-codes.md`](../references/error-codes.md) 场景 8。
|
|
37
39
|
|
|
38
40
|
`<source>` 优先级(**Agent 必须遵守**):
|
|
39
41
|
|
|
@@ -48,7 +50,7 @@
|
|
|
48
50
|
适合用户说“用这张参考图生成图片”“保持图一人物表情,在图二场景里做某事”。生图模型没有 `reference_key` 绑定,素材映射靠 prompt 的自然描述和资源顺序。
|
|
49
51
|
|
|
50
52
|
```bash
|
|
51
|
-
lj-awb image
|
|
53
|
+
lj-awb create image \
|
|
52
54
|
--model-group-code <modelGroupCode> \
|
|
53
55
|
--prompt "图一中的白发女保持金鱼嘴表情,在图二背景里坐秋千" \
|
|
54
56
|
--resource image:reference=<firstSource> \
|
|
@@ -71,7 +73,7 @@ lj-awb image create \
|
|
|
71
73
|
适合用户说“参考这张图”“引用这个角色 / 构图 / 风格”“根据这张图生成视频”。普通参考不需要 key;只有用户需要在 prompt 中明确绑定某个对象时才用 `image:reference:<key>`,如果 prompt 写了占位符,必须有同名 reference 资源。
|
|
72
74
|
|
|
73
75
|
```bash
|
|
74
|
-
lj-awb video
|
|
76
|
+
lj-awb create video \
|
|
75
77
|
--model-group-code <modelGroupCode> \
|
|
76
78
|
--prompt "<<<hero>>> 选择跳跃" \
|
|
77
79
|
--resource image:reference:hero=<source> \
|
|
@@ -86,8 +88,7 @@ lj-awb video create \
|
|
|
86
88
|
判断要点:
|
|
87
89
|
|
|
88
90
|
- 用户只说“动作是选择跳跃”时,可以组装为 `<<<hero>>> 选择跳跃`,但不要额外加风格词。
|
|
89
|
-
-
|
|
90
|
-
- 用户说“一个女人在图片上走动 一边说音频。使用 sd2fast参考生”时,正确处理是把 `sd2fast / 参考生` 当成模型和资源选择,把创作描述保留为接近 `<<<scene>>> 一个女人在图片上走动 一边说音频`,不要改成“山谷风景中、自然走动、口型跟随参考音频”。
|
|
91
|
+
- prompt 以用户描述为基底,**参考图作为素材输入时不要从图像内容反推画面**(“山谷风景、室内场景、某种服装”等不要塞进 prompt);具体规则见 [`create-contract.md`](create-contract.md) §Prompt 组装原则。
|
|
91
92
|
- 用户明确说“prompt 就用选择跳跃”时,先确认是否允许补成 `<<<hero>>> 选择跳跃`。
|
|
92
93
|
- 如果模型 `inputRequirement.visualInputRequired=true`,不能只用 prompt 创建。
|
|
93
94
|
|
|
@@ -96,7 +97,7 @@ lj-awb video create \
|
|
|
96
97
|
适合用户说“让这张图动起来”“以这张图作为第一帧”“从 A 过渡到 B”。首帧和尾帧是画面起止状态,不是 reference subject,因此通常不需要 `<<<key>>>`。
|
|
97
98
|
|
|
98
99
|
```bash
|
|
99
|
-
lj-awb video
|
|
100
|
+
lj-awb create video \
|
|
100
101
|
--model-group-code <modelGroupCode> \
|
|
101
102
|
--prompt "镜头推进,人物缓慢转身" \
|
|
102
103
|
--resource image:first_frame=<firstSource> \
|
|
@@ -120,7 +121,7 @@ lj-awb video create \
|
|
|
120
121
|
用户上传音频、指定音乐、配音、节奏参考时,这是素材输入,不是 `--need-audio`。
|
|
121
122
|
|
|
122
123
|
```bash
|
|
123
|
-
lj-awb video
|
|
124
|
+
lj-awb create video \
|
|
124
125
|
--model-group-code <modelGroupCode> \
|
|
125
126
|
--prompt "<<<hero>>> 按音乐节奏跳舞" \
|
|
126
127
|
--resource image:reference:hero=<heroImage> \
|
|
@@ -135,29 +136,30 @@ lj-awb video create \
|
|
|
135
136
|
|
|
136
137
|
- 固定使用 `audio:reference`,不要使用 `audio:source`。
|
|
137
138
|
- 用户强调“音频也要参考 / 显式参考音频”时,可以使用 `audio:reference:voice=<audioSource>`,并在 prompt 中插入 `<<<voice>>>` 这类同名占位符。
|
|
138
|
-
-
|
|
139
|
-
- 不要因为 `needAudio` 不存在就说“模型不支持音频参考”;音频参考能力只看 `model options.resources[]` 是否存在 `mediaType=AUDIO usage=reference`。
|
|
139
|
+
- 资源模式互斥(`audio:reference` 不能和 `image:first_frame/last_frame` 同传)、`--need-audio` 不是音频输入、音频参考能力以 `model options.resources[]` 为准等创建协议见 [`create-contract.md`](create-contract.md) §素材组织 + §参数含义。
|
|
140
140
|
|
|
141
141
|
## 主体复用
|
|
142
142
|
|
|
143
143
|
适合用户要“这个角色以后反复使用”“保持同一角色一致性”。一次性参考图不需要先发布主体。
|
|
144
144
|
|
|
145
145
|
```bash
|
|
146
|
-
lj-awb subject
|
|
146
|
+
lj-awb create subject \
|
|
147
|
+
--model-code tx \
|
|
147
148
|
--name <subjectName> \
|
|
148
|
-
--primary
|
|
149
|
+
--resource primary:<imagePath> \
|
|
149
150
|
--dry-run \
|
|
150
151
|
|
|
151
152
|
|
|
152
|
-
lj-awb subject
|
|
153
|
+
lj-awb create subject \
|
|
154
|
+
--model-code tx \
|
|
153
155
|
--name <subjectName> \
|
|
154
|
-
--primary
|
|
156
|
+
--resource primary:<imagePath> \
|
|
155
157
|
--yes \
|
|
156
158
|
|
|
157
159
|
|
|
158
|
-
lj-awb subject
|
|
160
|
+
lj-awb create subject-wait --element-id <elementId> --wait-seconds 300
|
|
159
161
|
|
|
160
|
-
lj-awb video
|
|
162
|
+
lj-awb create video \
|
|
161
163
|
--model-group-code <modelGroupCode> \
|
|
162
164
|
--prompt "<<<hero>>> 转身看向镜头" \
|
|
163
165
|
--resource subject:reference:hero=asset:<externalId> \
|
|
@@ -169,8 +171,9 @@ lj-awb video create \
|
|
|
169
171
|
|
|
170
172
|
判断要点:
|
|
171
173
|
|
|
172
|
-
- `subject
|
|
173
|
-
- `
|
|
174
|
+
- `create subject-wait` 成功后优先使用返回的 `nextRefSubject`。
|
|
175
|
+
- `--model-code` 只接受 `tx|vidu`;KeLing / 可灵用 `tx`,Vidu 用 `vidu`。
|
|
176
|
+
- `subject:reference:<key>=asset:<subjectId>` 必须放主体 ID;普通图片素材资产 ID 只能用于 `image:reference=asset:<assetId>` 等素材引用。
|
|
174
177
|
- prompt 中出现 `<<<key>>>` 时必须有同名 reference 资源;不出现时不强制补。
|
|
175
178
|
|
|
176
179
|
## 创建前确认清单
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Task Module
|
|
2
2
|
|
|
3
|
-
任务模块负责图片 / 视频 /
|
|
3
|
+
任务模块负责图片 / 视频 / 字幕等异步任务的等待、查询和台账恢复。图片 / 视频 / 去字幕任务先用 `create ...` 拿到 `taskId`,主体 / 音色回填用 `create subject-wait` / `create subject-voice-wait`,不要误走 `task wait`。
|
|
4
4
|
|
|
5
5
|
## 命令
|
|
6
6
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
### 单任务等待
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
# image / video
|
|
20
|
+
# create image / create video 返回 taskId 后立刻:
|
|
21
21
|
lj-awb task wait --task-id <id> --task-type IMAGE_CREATE --wait-seconds 180
|
|
22
22
|
```
|
|
23
23
|
|
|
@@ -25,7 +25,7 @@ lj-awb task wait --task-id <id> --task-type IMAGE_CREATE --wait-seconds 180
|
|
|
25
25
|
|
|
26
26
|
### 批量恢复
|
|
27
27
|
|
|
28
|
-
`image
|
|
28
|
+
`create image-batch` / `create video-batch` / `create subject-batch` 默认把每个子任务写到 `.awb/tasks.jsonl`。当对话被打断或机器重启后:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
31
|
# 1. 看还有几条未完
|
|
@@ -48,10 +48,29 @@ lj-awb task list --task-type VIDEO_GROUP --project-group-no <no>
|
|
|
48
48
|
|
|
49
49
|
按 `gmtCreate` 倒序,从最近找。
|
|
50
50
|
|
|
51
|
+
## 任务状态机
|
|
52
|
+
|
|
53
|
+
CLI 把"已终态"视为以下集合(见 `packages/awb-core/src/common.js` `TERMINAL_TASK_STATES`):`SUCCESS` / `COMPLETED` / `DONE` / `SUCCEEDED` / `FAIL` / `FAILED` / `ERROR` / `CANCEL` / `CANCELED` / `CANCELLED` / `TIMEOUT`。Agent 在 `task wait` / `record-poll` 输出里只会看到 CLI 规范化后的 `taskStatus` 值,按用途分类:
|
|
54
|
+
|
|
55
|
+
| 状态 | 是否终态 | Agent 处理 |
|
|
56
|
+
|------|----------|------------|
|
|
57
|
+
| `UNKNOWN` | 否 | 极少见,继续 `task wait` 或重新提交 |
|
|
58
|
+
| `WAITING` | 否 | 排队中 |
|
|
59
|
+
| `SENDED` | 否 | 已发到上游 |
|
|
60
|
+
| `PROCESSING` | 否 | 处理中;**此阶段后端不再允许取消** |
|
|
61
|
+
| `SUCCESS` / `COMPLETED` / `DONE` / `SUCCEEDED` | 是 | 读取 `resultUrls` 推进下一步 |
|
|
62
|
+
| `FAILED` / `FAIL` / `ERROR` | 是 | 读 `errorMessage` 决定是否重试,按 [`../references/error-codes.md`](../references/error-codes.md) 场景 7 |
|
|
63
|
+
| `CANCEL` / `CANCELED` / `CANCELLED` | 是 | 用户或后端取消;不要重试同一 task,需要时重新创建 |
|
|
64
|
+
| `TIMEOUT` | 是 | 上游超时;查 `errorMessage`,按错误处理流程决定是否重提 |
|
|
65
|
+
| `SUSPEND` | 否 | 任务被运营暂停(来自后端 audit,CLI 不在终态集,会继续等);向用户说明可能耗时较久 |
|
|
66
|
+
|
|
67
|
+
CLI 当前**不暴露 task cancel**;用户问"能不能停掉这个任务"时,告知"创建后无 CLI 取消入口;只有任务还在 `WAITING` / `SENDED` 时后端可手动取消,进入 `PROCESSING` 后只能等终态"。
|
|
68
|
+
|
|
51
69
|
## 规则
|
|
52
70
|
|
|
53
71
|
- 异步任务必须保存 `taskId`,批量任务统一传 `--task-record-file .awb/tasks.jsonl`(默认即此路径)。
|
|
54
72
|
- `task wait` 返回 `task_still_running` 时复述 hint,不要误报失败;`taskStatus=FAILED` 或 `errorMessage` 非空才是真失败。
|
|
73
|
+
- **`task wait` 成功 ≠ 素材库立刻可读**:后端在事务提交后**异步**执行 `saveResourceToMaterial`(`afterCommit` 钩子),即使 `taskStatus=SUCCESS` 拿到 `resultUrls`,对应的 `material` / `asset` 行也可能还没落库。需要立刻复用结果时,优先使用 `resultUrls` / `assetPath` / `taskRecordId` 直接推进;非要查素材库时先 sleep 2-3 秒,不要靠 list 接口密集轮询。
|
|
55
74
|
- 输出字段只提取 `taskId / taskStatus / isTerminal / resultUrls / errorMessage`,详见 [`../references/output-fields.md`](../references/output-fields.md) 的"生图 / 生视频"和"任务台账"小节。
|
|
56
75
|
- 不要把大型 raw JSON 整段塞回上下文。
|
|
57
76
|
- `task list` 是远端查询、`task records` 是本地台账;两者覆盖范围不同(台账只有本机创建的任务)。
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
| 命令 | 用途 |
|
|
8
8
|
|------|------|
|
|
9
9
|
| `lj-awb upload files --files ./a.png,./b.mp4 --dry-run` | 预览上传文件 |
|
|
10
|
-
| `lj-awb upload files --file ./ref.png
|
|
10
|
+
| `lj-awb upload files --file ./ref.png` | 上传图片创建参考素材,默认 `material-image-draw` |
|
|
11
|
+
| `lj-awb upload files --file ./first.png --scene-type material-video-create` | 上传生视频 / 主体复用素材 |
|
|
11
12
|
| `lj-awb upload files --files-json ./files.json` | 按 JSON 清单上传 |
|
|
12
13
|
|
|
13
14
|
## 规则
|
|
@@ -15,19 +16,19 @@
|
|
|
15
16
|
- 上传命令返回 `backendPath`、`url`、`mimeType`、`size`、`width`、`height`。
|
|
16
17
|
- 后续任务的 `source.value` 一律使用 `backendPath`(例如 `material/...` 或 `/material/...`),**不要使用回显的 `url` 字段**。`url` 只是用于人工预览,把完整 `https://*.myqcloud.com/...` 直接塞回任务请求会让请求体冗余,也会破坏请求一致性。
|
|
17
18
|
- 对 Agent 来说,优先使用返回的结构化字段,不要从自然语言输出里猜 URL。
|
|
18
|
-
- 不直接调用或暴露 COS 临时凭证接口。
|
|
19
19
|
- 生图 / 生视频命令传本地参考文件时,会在内部自动上传;只有需要复用素材时才单独调用 `upload files`。
|
|
20
|
+
- 单独预上传时按下游任务选择 scene:未传 `--scene-type` 时,图片默认 `material-image-draw`,音频 / 视频默认 `material-video-create`;图片若要作为生视频首帧 / 尾帧 / 参考图或主体图复用,必须显式传 `--scene-type material-video-create`;只有明确走图片编辑入口时才传 `material-image-edit`。
|
|
20
21
|
- 即使把平台 COS 完整 URL 当作 `source.value` 传入,CLI 会自动剥离 host 还原为 `backendPath`;但不要依赖该自愈,仍以传 `backendPath` 为准。
|
|
21
22
|
- 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"文件上传"小节;上传失败(exit 30 / `upload_failed`)见 [`../references/error-codes.md`](../references/error-codes.md) 场景 6。
|
|
22
23
|
|
|
23
24
|
## 下一步
|
|
24
25
|
|
|
25
|
-
拿到 `
|
|
26
|
+
拿到 `files[].backendPath`(形如 `material/...`)后立刻就近喂给下游命令,不要重复 upload:
|
|
26
27
|
|
|
27
|
-
- 生图参考图:`lj-awb image
|
|
28
|
-
- 生视频首帧 / 尾帧 / 参考图:`lj-awb video
|
|
29
|
-
- 视频参考音频:`lj-awb video
|
|
30
|
-
- 主体发布参考图:`lj-awb subject
|
|
31
|
-
-
|
|
28
|
+
- 生图参考图:`lj-awb create image ... --resource image:reference=material/...`
|
|
29
|
+
- 生视频首帧 / 尾帧 / 参考图:`lj-awb create video ... --resource image:first_frame=material/...`
|
|
30
|
+
- 视频参考音频:`lj-awb create video ... --resource audio:reference=material/...`
|
|
31
|
+
- 主体发布参考图:`lj-awb create subject ... --resource primary:material/...`
|
|
32
|
+
- 注册到素材库(素材加白):优先让 `lj-awb create asset --group-id <id> --platform <platform> --file ./a.png --name "..." --yes` 自动上传到 `asset-review` 场景;若已单独上传,使用 `--backend-path asset-review/...` 或 `--url asset-review/...`。
|
|
32
33
|
|
|
33
|
-
> `image
|
|
34
|
+
> `create image` / `create video` / `create subject` 传 `--file` / 本地路径时**会自动 upload**——只有需要"先看 backendPath / 跨任务复用同一份素材"时才单独跑 `upload files`。
|