@lingjingai/lj-awb-cli-pre 0.4.7 → 0.4.9

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.
Files changed (33) hide show
  1. package/README.md +14 -5
  2. package/build/volta-pre.mjs +64 -0
  3. package/install.mjs +11 -3
  4. package/package.json +4 -3
  5. package/packages/awb-cli/package.json +2 -2
  6. package/packages/awb-core/package.json +1 -2
  7. package/packages/awb-core/src/commands.js +10 -460
  8. package/packages/awb-core/src/output.js +5 -287
  9. package/packages/awb-core/src/services.js +119 -12
  10. package/packages/awb-core/src/standalone.js +20 -184
  11. package/packages/awb-core/src/update.js +74 -3
  12. package/skills/lj-awb/SKILL.md +13 -7
  13. package/skills/lj-awb/VERSION +1 -1
  14. package/skills/lj-awb/compat.json +3 -3
  15. package/skills/lj-awb/modules/account.md +2 -2
  16. package/skills/lj-awb/modules/create-contract.md +10 -8
  17. package/skills/lj-awb/modules/driver.md +4 -10
  18. package/skills/lj-awb/modules/evals.md +2 -2
  19. package/skills/lj-awb/modules/image.md +3 -3
  20. package/skills/lj-awb/modules/model.md +50 -1
  21. package/skills/lj-awb/modules/project.md +2 -2
  22. package/skills/lj-awb/modules/task-manual.md +3 -3
  23. package/skills/lj-awb/modules/task.md +1 -1
  24. package/skills/lj-awb/modules/video.md +3 -3
  25. package/skills/lj-awb/modules/workflows.md +1 -76
  26. package/skills/lj-awb/references/error-codes.md +1 -1
  27. package/skills/lj-awb/references/output-fields.md +4 -11
  28. package/packages/awb-core/src/artifact.js +0 -936
  29. package/skills/lj-awb/modules/artifact/asset.md +0 -64
  30. package/skills/lj-awb/modules/artifact/clip.md +0 -65
  31. package/skills/lj-awb/modules/artifact/script.md +0 -37
  32. package/skills/lj-awb/modules/artifact/video.md +0 -65
  33. package/skills/lj-awb/modules/artifact.md +0 -65
@@ -12,6 +12,7 @@
12
12
  - 写入 / 扣费命令遵循 schema safety:`supportsDryRun=true` 先 dry-run,`requiresConfirmation=true` 经用户确认后再 `--yes`。
13
13
  - 如果 JSON 输出带 `meta._notice.update`,先继续完成当前业务链路,收尾时告知当前版本 / 最新版本并建议 `lj-awb update`;不要静默忽略更新提示。
14
14
  - 旧根域 `image` / `video` / `asset` / `subject` 已移除,不要尝试旧入口,也不要给旧命令做兼容推理。
15
+ - 对话输出默认精简:不要把完整命令、长 JSON、schema 结果或每个只读查询的轨迹暴露给用户;只输出关键确认点、费用 / dry-run 摘要、任务状态、结果链接和必要错误。用户明确要求日志或命令时再展示。
15
16
 
16
17
  ## 状态账本
17
18
 
@@ -30,7 +31,6 @@ Agent 在当前任务中记录这些值,后续直接复用:
30
31
  | `task` | create 返回的 `taskId` / `nextCommand` / wait 结果 | 任务终态后只追加结果 |
31
32
  | `subject` | `create subject-list` / `create subject` / `create subject-wait` | 主体名或 `modelCode` 变化 |
32
33
  | `voice` | `create subject-voice-list` / `create subject-voice-wait` | 音色名或来源变化 |
33
- | `artifactProjectId` | 用户给定或 artifact 查询 | 项目切换 |
34
34
 
35
35
  不要为了“保险”重复跑 `schema --brief`、精确 schema、`doctor --verify`、`project current`、`model options`、`model create-spec`、`fee`、`upload files`。缓存值不够时只补缺的那一步。
36
36
 
@@ -44,9 +44,8 @@ CLI 当前能力分为:
44
44
  - `upload`:把本地文件转成平台 `backendPath`。
45
45
  - `create`:图片、视频、视频去字幕、主体、主体音色、素材组和素材注册。
46
46
  - `task`:图片 / 视频 / 去字幕等异步任务状态、等待和本地台账。
47
- - `artifact`:剧本、资产、视频、剪辑最终产物 CRUD 与本地 JSON 导入。
48
47
 
49
- 不要把概念名当 command domain。图片、视频、主体、素材是业务对象;命令入口是 `create` / `task` / `artifact`。
48
+ 不要把概念名当 command domain。图片、视频、主体、素材是业务对象;命令入口是 `create` / `task`。
50
49
 
51
50
  ## 驱动链条
52
51
 
@@ -62,6 +61,8 @@ CLI 当前能力分为:
62
61
  8. 跑一次 `create image/video --dry-run` 展示最终 prompt、资源、参数、积分。
63
62
  9. 用户确认后 `--yes`。返回 `nextCommand` 时直接执行它等待结果。
64
63
 
64
+ 对用户展示这条链路时只给阶段性摘要,不逐条列出 schema / model options / fee 命令和原始输出。
65
+
65
66
  ### 模型候选展示门
66
67
 
67
68
  只要用户给了模型口语名(如 `sd2`、`gpt`、`banana`、`可灵`)或模型查询返回候选,Agent 必须先完成这个门槛,才能推荐默认模型 / 默认参数、进入 `model create-spec`、`fee` 或 `create --dry-run`。
@@ -97,12 +98,6 @@ CLI 当前能力分为:
97
98
  - `create asset --file` 会在正式阶段自动上传并注册;同一文件多任务复用时,先 `upload files` 缓存 `backendPath`。
98
99
  - 注册成功后优先使用 `assetPath`,不要重新上传同一文件。
99
100
 
100
- ### Artifact
101
-
102
- - `artifact` 使用 `project-id`,不是 `project-group-no`。
103
- - 批量导入先把涉及的 script / asset / video / clip dry-run 全部跑完,再让用户一次性确认写入面。
104
- - 部分失败后只针对失败的 row / actor / episode / clip 重试,不删除或重导整批。
105
-
106
101
  ## 何时加载其它模块
107
102
 
108
103
  - 模型候选、参数字段解释:[`model.md`](model.md)。
@@ -111,7 +106,6 @@ CLI 当前能力分为:
111
106
  - 主体 / 音色:[`subject.md`](subject.md)。
112
107
  - 素材库 / 加白:[`asset.md`](asset.md)。
113
108
  - 等待、台账、失败状态:[`task.md`](task.md)、[`../references/error-codes.md`](../references/error-codes.md)。
114
- - 最终产物:[`artifact.md`](artifact.md) 及其子模块。
115
109
 
116
110
  ## 禁止清单
117
111
 
@@ -8,7 +8,7 @@
8
8
  - 能区分参考图、首帧、首尾帧、音频参考、主体复用。
9
9
  - 能区分 `audio:reference` 和 `--need-audio`。
10
10
  - 不使用 `audio:source`、平台旧字段、`generated_time`、`multi_param`、`frames` 作为 create 入参。
11
- - 能把用户意图、素材引用和模型约束组装成可执行 prompt;没有明确需求时不主动编内容补空白;图片生图不生成 `reference_key` 或 `<<<key>>>`。
11
+ - 能把用户意图、素材引用和模型约束组装成可执行请求;用户有明确 prompt 时默认原文直出;没有明确需求时不主动编内容补空白;图片生图不生成 `reference_key` 或 `<<<key>>>`。
12
12
  - `fee` 和 `create --dry-run` 前必须先确认用户未提供的关键价格 / 效果参数;不能静默用默认值跑估价。
13
13
  - 正式扣费前必须 fee + dry-run + 用户确认。
14
14
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  - 查询 `model video-models --model "SD2"` 或相关关键词,再查被选模型的 `create-spec`。
24
24
  - 视频参考图可使用 `image:reference:hero=<image>`,音频使用 `audio:reference=<audio>`。
25
- - prompt 可以组装为 `<<<hero>>> 选择跳跃`,但不能自动加电影感、镜头推进等额外内容。
25
+ - prompt 默认保持 `选择跳跃` 并使用不带 key 的参考图;如果确需改成 `<<<hero>>> 选择跳跃`,必须先询问并获得确认。不能自动加电影感、镜头推进等额外内容。
26
26
  - 不要根据参考图画面内容自动补“山谷、街道、室内、服装”等场景描述。
27
27
  - 不先寻找 `needAudio`;不输出“该模型不支持音频参数”这类误导结论。
28
28
  - 如果用户没有指定画质、时长或约束后仍可选的比例,dry-run 前必须给出候选值和默认值让用户选择。
@@ -17,7 +17,7 @@
17
17
 
18
18
  | 参数 | 何时使用 | 约束来源 |
19
19
  |------|----------|----------|
20
- | `--prompt` | 所有生图任务 | 以用户明确创作描述为基底组装的最终提交文本;没有明确需求时先追问或用最小中性表达 |
20
+ | `--prompt` | 所有生图任务 | 用户有明确 prompt / 创作描述时默认原文直出;只有明确要求优化 / 代写时才可改写,且必须先展示最终 prompt 等待确认 |
21
21
  | `--ratio` | 需要指定画幅时 | `model options.params[key=ratio].values` |
22
22
  | `--quality` | 需要指定清晰度时 | `model options.params[key=quality].values` |
23
23
  | `--generate-num` | 指定生成张数;模型暴露该控制项时属于价格关键参数 | `model options.params[key=generateNum].values` |
@@ -56,7 +56,7 @@ lj-awb create image \
56
56
  ## 规则
57
57
 
58
58
  - 不要提交 `generated_time`、`iref`、`frames`、`multi_param`、`generated_mode` 这类平台旧字段。
59
- - `--prompt` 的重点是组装资源、参数和模型约束;用户没有明确需求时不要主动编内容补空白,用户要求优化时再做提示词创作。
59
+ - `--prompt` 默认使用用户原文;不要主动扩写、润色或从参考图补画面细节。用户要求优化 / 代写时再做提示词创作,且确认前不跑 fee / dry-run / create。
60
60
  - 参考素材统一使用 `--resource image:reference=...` 或 `--resources-json`。
61
61
  - 参考图 source.value 取值优先级、"不要复用 myqcloud 完整 URL"、图片生图不使用 `reference_key` / `<<<key>>>` 等规则统一在 [`create-contract.md`](create-contract.md) §素材组织 + §Prompt 组装原则;多张参考图用资源顺序和自然语言指代映射(例如"图一中的白发女保持表情,在图二背景里坐秋千"),不要替用户编 key。
62
62
  - `ratio` / `quality` / `generate-num` 不确定时,先查 `model options`,不要猜一个模型不支持的值。
@@ -73,5 +73,5 @@ lj-awb create image \
73
73
 
74
74
  - `create image` 返回 `taskId` + `nextCommand`(通常 = `task wait`)→ **立刻接着跑** `task wait --task-id <id> --task-type IMAGE_CREATE --wait-seconds 180`,不要让用户再问"好了没"。
75
75
  - `create image-batch` 写入 `.awb/tasks.jsonl`,用 [`task.md`](task.md) → `task record-poll` 批量等。
76
- - 任务终态拿到 `resultUrls` → 视场景决定:① 直接交付给用户;② 用作下一轮生图 / 生视频的参考图(直接以 result URL 喂 `--resource image:reference=<url>`);③ 写回 [`artifact/asset.md`](artifact/asset.md) 的角色 / 道具 / 场景产物。
76
+ - 任务终态拿到 `resultUrls` → 视场景决定:① 直接交付给用户;② 用作下一轮生图 / 生视频的参考图(直接以 result URL 喂 `--resource image:reference=<url>`)。
77
77
  - 任务 `SUCCESS` 后**立刻**查素材库可能查不到——后端 `saveResourceToMaterial` 是事务提交后异步执行,详见 [`task.md`](task.md) 规则。优先用 `resultUrls` 直接消费;非要列素材库时先 sleep 2-3 秒。
@@ -27,7 +27,7 @@ lj-awb model video-models --model "<keyword>"
27
27
  用户可见清单至少包含:
28
28
 
29
29
  - 模型显示名、模型描述和排队状态。
30
- - `quality`、`ratio`、视频 `duration` 或图片 `generateNum` 的可选值与默认值。
30
+ - `quality`、`ratio`、视频 `duration` 的可选值与默认值。
31
31
  - 资源能力:reference 支持哪些媒体,是否支持音频参考、视频参考、首帧 / 首尾帧、主体引用。
32
32
  - 同底模不同渠道 / Fast / Pro 等差异;如果参数完全一致,可以说明主要按队列、渠道或用户偏好选择。
33
33
 
@@ -102,3 +102,52 @@ Agent 读取这些字段:
102
102
  - 模型 + 参数定下后 → [`image.md`](image.md) 或 [`video.md`](video.md) 跑 `fee` + `create --dry-run` + 确认 + `--yes`。
103
103
  - 模型 `taskQueueNum` 很大(>100)→ 向用户提示排队风险,可让用户在候选间换;不要默认换。
104
104
  - 不要重复跑 `model image-models / video-models` —— `modelGroupCode` 一旦确定,整个对话内复用。
105
+
106
+ ## 结构化过滤(Agent 翻译用户意图 → flag)
107
+
108
+ `model image-models` / `model video-models` 支持在数据源头收窄候选,避免把全量拉回再自己筛:
109
+
110
+ - `--usage IMAGE_EDIT`:查图片编辑模型池(image 默认 `IMAGE_CREATE`)。
111
+ - `--provider 字节`:按厂商过滤(大小写不敏感子串)。
112
+ - `--input-mode reference`:只要支持参考图 / 对应输入方式的模型。
113
+ - `--supports quality`:只要**能调**该参数的模型(只看参数是否存在,不看取值)。
114
+ - `--quality 4k`:只要**真实支持**该分辨率取值的模型(按 quality.optionList 筛)。
115
+ - `--ratio 9:16`:只要**真实支持**该画面比例取值的模型(按 ratio.optionList 筛)。
116
+ - `--duration 10`:只要**真实支持**该时长秒数的视频模型(按 generated_time.optionList 筛)。
117
+ - `--need-audio`:只要支持音效 / 音频的视频模型(按 audio 能力)。
118
+
119
+ > `--supports quality` 与 `--quality 4k` 的区别:前者"能不能调画质",后者"能不能出 4k"。要按具体分辨率/尺寸/时长筛用 `--quality` / `--ratio` / `--duration`,不要用 `--supports`。
120
+
121
+ 多个条件 AND 叠加,且与 `--model` 关键词一并 AND。带任一过滤 flag 时直接返回全部命中(不再截断到 8)。零命中时响应带 `matchedCount=0` 与 `availableValues`(当前数据实际可用取值),据此放宽条件,不要把空结果当"无适配模型"。取值不在 CLI 硬编码 —— 以列表输出里的 `inputModes=` / `params=` 为准。
122
+
123
+ ### 模型口语名 → 厂商(决定 `--provider` 取值)
124
+
125
+ 用户常说的是模型口语名 / 系列名,Agent 必须先映射到**厂商**,再传 `--provider`(子串匹配即可):
126
+
127
+ | 用户可能说 | 厂商 | `--provider` 取值 |
128
+ |-----------|------|------------------|
129
+ | Banana / Nano Banana | Google | `Google` |
130
+ | Sora / Sora2 | OpenAI | `OpenAI` |
131
+ | GPT / GPT Image | OpenAI | `GPT`(见下方说明) |
132
+ | vidu | 生数科技 | `生数科技` |
133
+ | 可灵 / KeLing | 快手 | `快手` |
134
+ | 即梦 / Seedream / Seedance | 字节跳动 | `字节` |
135
+ | 千问 / 万相 / HappyHorse | 阿里通义 | `阿里` |
136
+ | 海螺 | Minimax | `Minimax` |
137
+ | FLUX | Blackforest | `Blackforest` |
138
+ | Midjourney / niji | Midjourney | `Midjourney` |
139
+ | Grok | Grok | `Grok` |
140
+
141
+ - **OpenAI 品牌在数据里被拆成两个 provider 值**:图片模型 GPT Image 的 `provider=GPT`,视频模型 Sora2 的 `provider=OpenAI`。提到 GPT / Sora2 都归属 OpenAI;但实际过滤时,图片用 `--provider GPT`、视频用 `--provider OpenAI`。
142
+ - 厂商口语简称走子串:`阿里` 命中 `阿里通义`,`字节` 命中 `字节跳动`。
143
+
144
+ ### 各 flag 可传值速查
145
+
146
+ - `--usage`:image 可选 `IMAGE_CREATE`(默认) / `IMAGE_EDIT`;video 为 `VIDEO_CREATE`。
147
+ - `--input-mode`(归一化值,非原始 paramKey):image `prompt_only` / `reference`;video `prompt_only` / `reference` / `frames` / `storyboard`。
148
+ - `--supports`(归一化值):image `ratio` / `quality`;video `ratio` / `quality` / `duration` / `needAudio`。
149
+ - `--quality`(真实取值,大小写不敏感):image `1k` / `2k` / `4k`;video `480` / `720` / `768` / `1080` / `4K`。
150
+ - `--ratio`(真实取值):如 `16:9` / `9:16` / `4:3` / `3:4` / `1:1` / `21:9` 等,具体以各模型 `ratio` 取值为准。
151
+ - `--duration`(真实秒数,video):如 `5` / `10` / `15` 等,具体以各模型 `generated_time` 取值为准。
152
+ - `--need-audio`(布尔开关,video):传则只返回带音效能力的模型。
153
+ - `--provider`(按上表厂商值):image 常见 `GPT` / `字节` / `Midjourney` / `Blackforest` / `Google` / `阿里` / `Grok`;video 常见 `字节` / `Minimax` / `生数科技` / `OpenAI` / `Google` / `快手` / `阿里` / `Grok`。
@@ -9,7 +9,7 @@
9
9
  | `lj-awb project list` | 列出项目组 |
10
10
  | `lj-awb project list --name "<keyword>"` | 按名称过滤项目组 |
11
11
  | `lj-awb project current` | 查看云端当前项目组和项目预算 |
12
- | `lj-awb project use --project-group-no <no> --yes` | 切换项目组 |
12
+ | `lj-awb project switch --project-group-no <no> --yes` | 切换项目组 |
13
13
  | `lj-awb project users` | 列出创建项目组可选成员 |
14
14
  | `lj-awb project create --name "<name>" --point 1000 --yes` | 创建并切换项目组 |
15
15
  | `lj-awb project update --project-group-no <no> --name "<name>" --yes` | 修改项目组 |
@@ -21,7 +21,7 @@
21
21
  - 如果项目组不明显匹配用户意图,先询问用户,不要静默选择。
22
22
  - 联网场景下以 `project current` / `project list` 返回的云端当前项目组为准,不要把本地 `state.json` 当成权威来源。
23
23
  - 如果多个查询结果不一致,先重新运行 `account info` 和 `project list` 收敛结论,再继续估价或创建任务。
24
- - `project use`、`project create`、`project update`、`project ensure` 都会改变云端或本地上下文,必须确认后追加 `--yes`。
24
+ - `project switch`、`project create`、`project update`、`project ensure` 都会改变云端或本地上下文,必须确认后追加 `--yes`。
25
25
  - 输出字段速查见 [`../references/output-fields.md`](../references/output-fields.md) 的"账号与项目组"小节。
26
26
 
27
27
  ## 下一步
@@ -10,7 +10,7 @@
10
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
- 7. 组装最终 prompt:以用户明确创作描述为基底,操作性指令只用于模型和资源选择;没有明确需求时先追问或用最小中性表达;只有视频 reference / subject 需要占位绑定时才考虑 `<<<key>>>`,并先展示最终文本。
13
+ 7. 组装最终 prompt:用户有明确 prompt / 创作描述时默认原文直出;操作性指令只用于模型和资源选择;没有明确需求时先追问或用最小中性表达;只有用户明确要求绑定参考对象时才考虑 `<<<key>>>`。任何可见语义变化都必须先展示原始 prompt 和最终 prompt,等待确认。
14
14
  8. 用户确认关键参数和最终 prompt 后,先 `fee`,再 `create --dry-run`。
15
15
  9. 用户确认模型、项目组、最终 prompt、素材、参数和预估积分后,才加 `--yes`。
16
16
 
@@ -88,7 +88,7 @@ lj-awb create video \
88
88
 
89
89
  判断要点:
90
90
 
91
- - 用户只说“动作是选择跳跃”时,可以组装为 `<<<hero>>> 选择跳跃`,但不要额外加风格词。
91
+ - 用户只说“动作是选择跳跃”时,优先保持 `--prompt "选择跳跃"` 并使用不带 key 的 `image:reference=...`。如确需改成 `<<<hero>>> 选择跳跃`,必须先询问并获得确认。
92
92
  - prompt 以用户描述为基底,**参考图作为素材输入时不要从图像内容反推画面**(“山谷风景、室内场景、某种服装”等不要塞进 prompt);具体规则见 [`create-contract.md`](create-contract.md) §Prompt 组装原则。
93
93
  - 用户明确说“prompt 就用选择跳跃”时,先确认是否允许补成 `<<<hero>>> 选择跳跃`。
94
94
  - 如果模型 `inputRequirement.visualInputRequired=true`,不能只用 prompt 创建。
@@ -183,7 +183,7 @@ lj-awb create video \
183
183
 
184
184
  - 模型组:`displayName` 和 `modelGroupCode`。
185
185
  - 项目组:名称、编号、项目组预算余额;不要把项目组预算余额当作实际可扣积分余额。
186
- - 最终 prompt:如果做了占位符补齐、资源绑定或用户要求的提示词优化,要让用户确认实际提交文本。
186
+ - 最终 prompt:默认原文直出;如果做了占位符补齐或用户要求的提示词优化,先展示原始 prompt 和最终 prompt,用户确认前不继续 fee / dry-run / create。
187
187
  - 素材:每个资源的 type、usage、key、来源。
188
188
  - 参数:ratio、quality、duration、generate-num、need-audio 等只列实际使用项;没有由用户明确给出时,必须在 fee / dry-run 前完成选择确认。
189
189
  - 费用:预估积分、`billingPointBalance -> billingPointRemainingAfter` 实际可扣积分变化,以及 `projectBudgetBalance -> projectBudgetRemainingAfter` 项目组预算变化。
@@ -80,5 +80,5 @@ CLI 当前**不暴露 task cancel**;用户问"能不能停掉这个任务"时
80
80
 
81
81
  ## 下一步
82
82
 
83
- - 任务终态 + `resultUrls` 非空 → 视具体场景写回 [`artifact/video.md`](artifact/video.md) (`update-clip-urls`) 或交付给用户。
83
+ - 任务终态 + `resultUrls` 非空 → 交付给用户或用作后续生成的参考。
84
84
  - 任务 `FAILED` → 看 `errorMessage`;常见原因(积分 / 模型 / 资源)按 [`../references/error-codes.md`](../references/error-codes.md) 场景 7 处理。
@@ -24,7 +24,7 @@
24
24
 
25
25
  | 参数 | 何时使用 | 约束来源 |
26
26
  |------|----------|----------|
27
- | `--prompt` | 视频提示词 | 以用户明确创作描述为基底组装的最终提交文本;没有明确需求时先追问或用最小中性表达 |
27
+ | `--prompt` | 视频提示词 | 用户有明确 prompt / 创作描述时默认原文直出;只有明确要求优化 / 代写时才可改写,且必须先展示最终 prompt 等待确认 |
28
28
  | `--duration` | 指定视频秒数 | `model options.params[key=duration].values` |
29
29
  | `--ratio` | 指定画幅比例 | `model options.params[key=ratio].values`,并受 `model options.constraints[]` 联动限制 |
30
30
  | `--quality` | 指定清晰度 | `model options.params[key=quality].values` |
@@ -69,7 +69,7 @@ lj-awb create video \
69
69
  ## 规则
70
70
 
71
71
  - 视频时长统一用 `--duration`,不要传平台旧字段 `generated_time`。
72
- - `--prompt` 的重点是组装资源、参数和模型约束;用户没有明确需求时不要主动编内容补空白,用户要求优化时再做提示词创作。
72
+ - `--prompt` 默认使用用户原文;不要主动扩写、润色或从参考图补画面细节。用户要求优化 / 代写时再做提示词创作,且确认前不跑 fee / dry-run / create。
73
73
  - 素材统一用 `--resource type:usage[:key]=...` 或 `--resources-json`,不要直接传 `frames` / `multi_param`。
74
74
  - `generated_mode` 不需要也不允许用户填写;Material 会根据资源推导 `frames` 或 `multi_param`。
75
75
  - 创建前先看 `inputRequirement.visualInputRequired`。如果为 `true`,必须选择 `supportedIntents` 中的一种素材输入,不能纯 prompt 创建。
@@ -97,7 +97,7 @@ lj-awb create video \
97
97
  - `create video` 返回 `taskId` + `nextCommand` → 立刻 `task wait --task-id <id> --task-type VIDEO_GROUP --wait-seconds 300`。
98
98
  - `create video-super-resolution` 返回 `taskId` + `nextCommand` → 立刻运行返回的 `task video-super-resolution-status --task-id <id>`。
99
99
  - `create video-batch` 写 `.awb/tasks.jsonl`,用 [`task.md`](task.md) → `task record-poll` 批量等。
100
- - 任务终态 `resultUrls` → 通常按集 / 场 / 镜头回写到 [`artifact/video.md`](artifact/video.md):`artifact video update-clip-urls --project-id <id> --episode-id ... --scene-id ... --clip-id ... --video-urls-json '[...]'`。
100
+ - 任务终态 `resultUrls` → 按集 / 场 / 镜头交付给用户,或用作后续生成的参考。
101
101
  - 任务 `SUCCESS` 后**立刻**用素材库接口找这条视频时可能查不到——后端 `saveResourceToMaterial` 是事务提交后异步执行,详见 [`task.md`](task.md) 规则。优先用 `resultUrls` 直接消费;非要列素材库时先 sleep 2-3 秒。
102
102
  - Seedance 原始视频带英文字幕 → 对成功的视频任务运行 `create video-subtitle-removal --source-task-id <videoTaskId> --yes` → `task video-subtitle-status --task-id <subtitleTaskId>`。
103
103
  - 需要对现有视频做清晰度提升 → 先确认 `objectName`(material backendPath 或 COS 对象路径),再 `create video-super-resolution-fee` 和 `create video-super-resolution`。
@@ -1,6 +1,6 @@
1
1
  # Workflows Module
2
2
 
3
- 本模块描述 Agent 面向任务的标准编排。CLI 只执行确定性命令;Agent 负责把用户输入映射为参数、确认风险、串联命令;prompt 处理重点是组装可执行请求。
3
+ 本模块描述 Agent 面向任务的标准编排。CLI 只执行确定性命令;Agent 负责把用户输入映射为参数、确认风险、串联命令;prompt 默认原文直出,参数和素材才由 Agent 组装为可执行请求。
4
4
 
5
5
  ## 目录
6
6
 
@@ -13,7 +13,6 @@
13
13
  - [分镜流水线(分镜图 → 视频)](#分镜流水线分镜图--视频) — GPT Image 2 分镜 → 视频生成
14
14
  - [预上传后批量复用](#预上传后批量复用) — `upload files` 一次,多任务复用 `backendPath`
15
15
  - [素材库加白后生视频](#素材库加白后生视频) — `model asset-review-models` → `create asset` → 视频
16
- - [Artifact 流水线错误恢复](#artifact-流水线错误恢复) — `import-storyboard` / 批量写入失败的局部重试
17
16
 
18
17
  ## 通用启动流程
19
18
 
@@ -290,77 +289,3 @@ lj-awb create video \
290
289
  - 同一角色后续视频任务复用同一 `assetId` / `assetPath`,不要每次重新 register。
291
290
  - asset 系列只服务于素材加白;**不要**把素材 `assetId` / `assetPath` 当成可灵的 `subject:reference` 用,反之亦然。
292
291
  - 不要调用隐式 submissions 自动补组;素材组查重、创建、素材注册都用显式 CLI 步骤。
293
-
294
- ## Artifact 流水线错误恢复
295
-
296
- 适用:把沙箱 / 本地流水线产出回写 AWB 时,`script import` / `asset import` / `video import-storyboard` / `clip upsert-batch` 部分失败的恢复路径。
297
-
298
- #### 全量预览,确认无误后再写
299
-
300
- 整条流水线统一先 `--dry-run`,让用户在一次确认里看完所有变更面(script / asset / video / clip 各跑一遍预览,再统一 `--yes`),避免提交一半发现规模不对。
301
-
302
- ```bash
303
- lj-awb artifact script import --project-id "$PROJECT_ID" --input-file 1_script/output/script.json --dry-run
304
- lj-awb artifact asset import --project-id "$PROJECT_ID" --input-dir 2_asset/output --dry-run
305
- lj-awb artifact video import-storyboard --project-id "$PROJECT_ID" --input-file 3_footage/output/ep001/ep001_storyboard.json --dry-run
306
- lj-awb artifact clip upsert-batch --project-id "$PROJECT_ID" --input-file 4_clip/output/ep001_clip_batch.json --dry-run
307
- ```
308
-
309
- #### 单文件 import 失败(argument_error / 业务字段错)
310
-
311
- `exit=20 error.type=argument_error`:CLI 已经拒绝写入,整条 batch 不会被部分提交。修 JSON 后重跑同一条命令。**不要**手工跑 `delete-*` 回滚,因为云端根本没写入。
312
-
313
- #### 单条 upsert 失败(某 scene/clip 字段不合法)
314
-
315
- 如果是 `upsert-batch` 已经 `--yes` 提交了一部分后某条失败:
316
-
317
- 1. 读响应 `data.results[]`,区分 `succeeded` 和 `failed`;失败项的 `body` 里有具体字段错。
318
- 2. 修这些失败行,单独跑 `upsert-clip` / `upsert-scene` / `upsert-episode` 补写,**不要**重跑整个 batch 文件(会把已成功的 episode/scene 再 upsert 一遍,浪费写入也容易盖掉已经手工修过的字段)。
319
-
320
- #### 整集需要回滚重导
321
-
322
- 确认要整集重来(例如 episodeId 拼错、storyboard 结构整体不对):
323
-
324
- ```bash
325
- lj-awb artifact video delete-episode \
326
- --project-id "$PROJECT_ID" \
327
- --episode-id ep_001 \
328
- --dry-run
329
-
330
- lj-awb artifact video delete-episode \
331
- --project-id "$PROJECT_ID" \
332
- --episode-id ep_001 \
333
- --yes
334
-
335
- lj-awb artifact video import-storyboard \
336
- --project-id "$PROJECT_ID" \
337
- --input-file 3_footage/output/ep001/ep001_storyboard.json \
338
- --yes
339
- ```
340
-
341
- `delete-episode` 会级联删除该集下所有 scene / clip(详见 [`artifact/video.md`](artifact/video.md))。
342
-
343
- #### clip 子域写入找不到 videoEpisodeId
344
-
345
- clip 子域用的是数字主键 `videoEpisodeId`,不是业务键 `ep_001`。先用 video 子域查到数字 id 再喂给 clip:
346
-
347
- ```bash
348
- lj-awb artifact video episode \
349
- --project-id "$PROJECT_ID" \
350
- --episode-id ep_001 \
351
- -f json
352
- # 取 .data.id
353
-
354
- lj-awb artifact clip update-status \
355
- --project-id "$PROJECT_ID" \
356
- --video-episode-id <上一步拿到的数字 id> \
357
- --status music_success \
358
- --messages-json '[{"level":"info","step":"music","message":"配乐完成"}]' \
359
- --yes
360
- ```
361
-
362
- 规则:
363
-
364
- - 不要在 import 失败后默认建议"全删重来";先看错误类型 — argument_error 直接修文件重跑;部分 upsert 失败用单条补写。
365
- - 删除是云端写入(虽然是逻辑删除),必须 `--dry-run` + `--yes` 两步走,不要看到 batch 报错就静默跑 delete。
366
- - artifact 系列写入失败不会扣积分;只有创作类(image/video/create asset/create subject)才有费用,恢复时不需要重新跑 `credits balance`。
@@ -99,7 +99,7 @@ lj-awb auth verify # 实际打一次平台 API
99
99
 
100
100
  - 积分不足:跑 `credits balance` 给用户看余额,建议充值或换模型。
101
101
  - 模型不可用:跑 `model image-models` / `video-models` 看 `taskQueueNum` 和上下架状态。
102
- - 项目组无权限:跑 `project list` 看用户在哪个项目组,必要时 `project use --project-group-no <no> --yes`。
102
+ - 项目组无权限:跑 `project list` 看用户在哪个项目组,必要时 `project switch --project-group-no <no> --yes`。
103
103
 
104
104
  ### 场景 8:api_error code=1007(视频素材模式混用)
105
105
 
@@ -22,7 +22,7 @@
22
22
  | `account_summary` | `account info` | `userName`、`groupName`、`currentProjectGroupName`、`billingPointBalance` | `userId`、`groupId` | — |
23
23
  | `team_list` | `account teams` | `count` + 团队名 | `groupId` 用于 `account switch-team` | — |
24
24
  | `project_list` | `project list` | `projectGroupName`、`isSelected` | `projectGroupNo`(下游引用) | budget 详情 |
25
- | `project_summary` | `project use / create / update / current` | `projectGroupName`、`selected/created/updated`、`projectBudgetBalance` | `projectGroupNo` | `memberCount` |
25
+ | `project_summary` | `project switch / create / update / current` | `projectGroupName`、`selected/created/updated`、`projectBudgetBalance` | `projectGroupNo` | `memberCount` |
26
26
  | `project_user_list` | `project users` | `count` | `userId` | — |
27
27
 
28
28
  ## 积分
@@ -100,18 +100,11 @@
100
100
  | `asset_group_write_result` | `create asset-group / group-update` | `created/updated`、`groupId`、`platform` | — | — |
101
101
  | `asset_register_result` | `create asset` | `registered`、`assetId`、`assetPath`、`platform`、`assetType` | `assetId`(下游引用) | upload 嵌套 |
102
102
 
103
- ## Artifact(产物 CRUD)
103
+ ## 更新
104
104
 
105
105
  | outputKind | 命令 | 必报给用户 | agent 内部用 | 可丢弃 |
106
106
  |------------|------|-----------|--------------|--------|
107
- | `artifact_list` | `* rows` / `* episodes` / `* scenes` / `* clips` / `* actors` / ... | `count` + 关键字段摘要 | `id / entityKey / episodeId / sceneId / clipId` | row 嵌套 |
108
- | `artifact_record` | `* row` / `* episode` / `* scene` / `* clip` / `* actor` / ... | 关键标识 + 状态 | `id`(下游 update / delete 用) | 大段 description / payload |
109
- | `artifact_full` | `script get` / `asset get` / `video get` / `clip get` | 顶层 `id`、各子集合 `*.Count` | — | 整棵嵌套 |
110
- | `artifact_write_result` | `upsert-*` / `update-clip-urls` | 写入字段 + `id` | `id`(下游) | — |
111
- | `artifact_delete_result` | `delete-*` | `deleted`、`key`、级联 | — | — |
112
- | `artifact_import_result` | `* import` / `import-storyboard` / `upsert-batch` | `imported`、`rowCount/actorCount/...`、文件计数 | `rowsByKind`(用于断言) | `batch` 数组 |
113
- | `artifact_status_update` | `artifact clip update-status` | `updated`、`status` | — | messageCount |
114
- | `update_result` | `update` / `update --check` | `updateAvailable`、`currentVersion`、`latestVersion`、`command` | `skillUpdated`、`restartRecommended` | 安装日志 |
107
+ | `update_result` | `update` / `update --check` | `updateAvailable`、`currentVersion`、`latestVersion`、`installer`、`command` | `skillUpdated`、`restartRecommended` | 安装日志 |
115
108
 
116
109
  ## Dry-run
117
110
 
@@ -120,4 +113,4 @@
120
113
  - agent 内部用:`results[]`(批量 dry-run 每条)
121
114
  - 可丢弃:完整 `request` 嵌套(已经在 compact summary 里)
122
115
 
123
- `--yes` 后再跑会换成对应的写入 outputKind(如 `task_submission` / `artifact_write_result`),字段语义见上表。
116
+ `--yes` 后再跑会换成对应的写入 outputKind(如 `task_submission`),字段语义见上表。