@volcengine/ark-cli-darwin-x64 0.0.0-stage → 1.0.46-prerelease.dc921200a42d

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 (171) hide show
  1. package/LICENSE +201 -0
  2. package/bin/arkcli-darwin-amd64 +4 -0
  3. package/manifest.json +37 -0
  4. package/package.json +20 -4
  5. package/skills/arkcli-agent/SKILL.md +197 -0
  6. package/skills/arkcli-agent/references/activation.md +23 -0
  7. package/skills/arkcli-agent/references/agent.md +442 -0
  8. package/skills/arkcli-agent/references/byok.md +74 -0
  9. package/skills/arkcli-agent/references/context-management.md +61 -0
  10. package/skills/arkcli-agent/references/debug-export.md +27 -0
  11. package/skills/arkcli-agent/references/dream.md +91 -0
  12. package/skills/arkcli-agent/references/evals.md +215 -0
  13. package/skills/arkcli-agent/references/events-chat.md +192 -0
  14. package/skills/arkcli-agent/references/interfaces-gaps.md +55 -0
  15. package/skills/arkcli-agent/references/mcp-vault.md +111 -0
  16. package/skills/arkcli-agent/references/model-config.md +46 -0
  17. package/skills/arkcli-agent/references/self-hosted.md +47 -0
  18. package/skills/arkcli-agent/references/session-files.md +157 -0
  19. package/skills/arkcli-agent/references/session-upgrade.md +64 -0
  20. package/skills/arkcli-agent/references/skills.md +94 -0
  21. package/skills/arkcli-agent/references/todo-write.md +37 -0
  22. package/skills/arkcli-agent/references/vision-agent.md +92 -0
  23. package/skills/arkcli-api-explorer/SKILL.md +114 -0
  24. package/skills/arkcli-api-explorer/references/arkcli-api.md +185 -0
  25. package/skills/arkcli-api-explorer/references/evals.md +92 -0
  26. package/skills/arkcli-auth/SKILL.md +127 -0
  27. package/skills/arkcli-auth/references/api-key-query.md +74 -0
  28. package/skills/arkcli-auth/references/arkcli-auth-init-volc.md +58 -0
  29. package/skills/arkcli-auth/references/arkcli-auth-login.md +125 -0
  30. package/skills/arkcli-auth/references/arkcli-auth-status.md +41 -0
  31. package/skills/arkcli-auth/references/arkcli-auth-whoami.md +128 -0
  32. package/skills/arkcli-auth/references/auth-modes.md +101 -0
  33. package/skills/arkcli-auth/references/identity-resolution.md +74 -0
  34. package/skills/arkcli-auth/references/realname-gate.md +23 -0
  35. package/skills/arkcli-auth/scripts/key-metadata.jq +34 -0
  36. package/skills/arkcli-billing/SKILL.md +105 -0
  37. package/skills/arkcli-billing/references/arkcli-billing-list.md +247 -0
  38. package/skills/arkcli-billing/references/evals.md +50 -0
  39. package/skills/arkcli-chat/SKILL.md +229 -0
  40. package/skills/arkcli-chat/references/arkcli-chat.md +300 -0
  41. package/skills/arkcli-chat/references/caching-thinking.md +138 -0
  42. package/skills/arkcli-chat/references/chat-meta.md +77 -0
  43. package/skills/arkcli-chat/references/evals.md +60 -0
  44. package/skills/arkcli-chat/references/stream-events.md +163 -0
  45. package/skills/arkcli-chat/references/text-format.md +160 -0
  46. package/skills/arkcli-chat/references/tools.md +130 -0
  47. package/skills/arkcli-code-example/SKILL.md +73 -0
  48. package/skills/arkcli-code-example/assets/demo-code/examples.json +14 -0
  49. package/skills/arkcli-code-example/assets/demo-code/go/main.go +53 -0
  50. package/skills/arkcli-code-example/assets/demo-code/python.py +26 -0
  51. package/skills/arkcli-code-example/references/arkcli-code-example.md +146 -0
  52. package/skills/arkcli-code-example/references/evals.md +12 -0
  53. package/skills/arkcli-config/SKILL.md +129 -0
  54. package/skills/arkcli-config/references/arkcli-config-init.md +49 -0
  55. package/skills/arkcli-config/references/arkcli-config-profile.md +54 -0
  56. package/skills/arkcli-config/references/evals.md +87 -0
  57. package/skills/arkcli-connect/SKILL.md +62 -0
  58. package/skills/arkcli-connect/references/arkcli-connect.md +129 -0
  59. package/skills/arkcli-connect/references/evals.md +117 -0
  60. package/skills/arkcli-custommodel/SKILL.md +177 -0
  61. package/skills/arkcli-custommodel/references/arkcli-custommodel-available-quantizations.md +28 -0
  62. package/skills/arkcli-custommodel/references/arkcli-custommodel-delete.md +36 -0
  63. package/skills/arkcli-custommodel/references/arkcli-custommodel-get.md +45 -0
  64. package/skills/arkcli-custommodel/references/arkcli-custommodel-list.md +72 -0
  65. package/skills/arkcli-custommodel/references/arkcli-custommodel-quantize.md +58 -0
  66. package/skills/arkcli-custommodel/references/arkcli-custommodel-update.md +47 -0
  67. package/skills/arkcli-custommodel/references/arkcli-custommodel-upload.md +60 -0
  68. package/skills/arkcli-custommodel/references/evals.md +58 -0
  69. package/skills/arkcli-datasets/SKILL.md +41 -0
  70. package/skills/arkcli-datasets/references/commands.md +91 -0
  71. package/skills/arkcli-datasets/references/evals.md +30 -0
  72. package/skills/arkcli-deploy/SKILL.md +128 -0
  73. package/skills/arkcli-deploy/references/arkcli-deploy.md +138 -0
  74. package/skills/arkcli-deploy/references/evals.md +117 -0
  75. package/skills/arkcli-docs/SKILL.md +232 -0
  76. package/skills/arkcli-docs/references/commands.md +225 -0
  77. package/skills/arkcli-docs/references/evals.md +200 -0
  78. package/skills/arkcli-docs/references/failure-modes.md +77 -0
  79. package/skills/arkcli-doctor/CONTRIBUTING.md +202 -0
  80. package/skills/arkcli-doctor/SKILL.md +302 -0
  81. package/skills/arkcli-doctor/references/error-codes.md +504 -0
  82. package/skills/arkcli-doctor/references/evals.md +70 -0
  83. package/skills/arkcli-doctor/references/scope-account.md +205 -0
  84. package/skills/arkcli-doctor/references/scope-cli.md +217 -0
  85. package/skills/arkcli-doctor/references/scope-infer-endpoint.md +214 -0
  86. package/skills/arkcli-doctor/references/scope-metrics.md +197 -0
  87. package/skills/arkcli-doctor/references/scope-model.md +241 -0
  88. package/skills/arkcli-doctor/references/scope-report.md +242 -0
  89. package/skills/arkcli-doctor/references/verify-origin.md +142 -0
  90. package/skills/arkcli-gen/SKILL.md +348 -0
  91. package/skills/arkcli-gen/references/arkcli-gen-audio.md +125 -0
  92. package/skills/arkcli-gen/references/arkcli-gen.md +297 -0
  93. package/skills/arkcli-gen/references/evals.md +93 -0
  94. package/skills/arkcli-gen/references/gen-meta.md +182 -0
  95. package/skills/arkcli-gen/references/image-stream.md +105 -0
  96. package/skills/arkcli-gen/references/intent-and-validation.md +177 -0
  97. package/skills/arkcli-helper/SKILL.md +233 -0
  98. package/skills/arkcli-helper/references/arkcli-helper.md +372 -0
  99. package/skills/arkcli-helper/references/evals.md +110 -0
  100. package/skills/arkcli-infer-endpoint/SKILL.md +141 -0
  101. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-create.md +142 -0
  102. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-delete.md +68 -0
  103. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-get.md +60 -0
  104. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-list.md +142 -0
  105. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-start.md +34 -0
  106. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-stop.md +34 -0
  107. package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-update.md +76 -0
  108. package/skills/arkcli-infer-endpoint/references/evals.md +24 -0
  109. package/skills/arkcli-models/SKILL.md +314 -0
  110. package/skills/arkcli-models/references/arkcli-models-activate.md +110 -0
  111. package/skills/arkcli-models/references/arkcli-models-get.md +100 -0
  112. package/skills/arkcli-models/references/arkcli-models-list.md +73 -0
  113. package/skills/arkcli-models/references/arkcli-models-performance.md +32 -0
  114. package/skills/arkcli-models/references/arkcli-models-scenario-table.md +83 -0
  115. package/skills/arkcli-models/references/arkcli-models-search.md +208 -0
  116. package/skills/arkcli-models/references/evals.md +88 -0
  117. package/skills/arkcli-onboard/SKILL.md +81 -0
  118. package/skills/arkcli-onboard/references/evals.md +107 -0
  119. package/skills/arkcli-plans/SKILL.md +208 -0
  120. package/skills/arkcli-plans/references/arkcli-plans-agreement-signing.md +74 -0
  121. package/skills/arkcli-plans/references/arkcli-plans-buy.md +209 -0
  122. package/skills/arkcli-plans/references/arkcli-plans-get.md +96 -0
  123. package/skills/arkcli-plans/references/arkcli-plans-harness-status.md +149 -0
  124. package/skills/arkcli-plans/references/arkcli-plans-model-apply.md +56 -0
  125. package/skills/arkcli-plans/references/arkcli-plans-model-list.md +119 -0
  126. package/skills/arkcli-plans/references/arkcli-plans-personal-rotate-apikey.md +83 -0
  127. package/skills/arkcli-plans/references/arkcli-plans-renew.md +134 -0
  128. package/skills/arkcli-plans/references/arkcli-plans-team-rotate-apikey.md +108 -0
  129. package/skills/arkcli-plans/references/arkcli-plans-team-seat-assign.md +142 -0
  130. package/skills/arkcli-plans/references/arkcli-plans-team-seat-list.md +115 -0
  131. package/skills/arkcli-plans/references/evals.md +224 -0
  132. package/skills/arkcli-pricing/SKILL.md +125 -0
  133. package/skills/arkcli-pricing/references/arkcli-pricing-models.md +260 -0
  134. package/skills/arkcli-pricing/references/arkcli-pricing-plans.md +147 -0
  135. package/skills/arkcli-profile/SKILL.md +188 -0
  136. package/skills/arkcli-profile/references/arkcli-profile-create.md +101 -0
  137. package/skills/arkcli-profile/references/arkcli-profile-keys.md +100 -0
  138. package/skills/arkcli-profile/references/arkcli-profile-set-default.md +81 -0
  139. package/skills/arkcli-profile/references/evals.md +5 -0
  140. package/skills/arkcli-resources/SKILL.md +122 -0
  141. package/skills/arkcli-resources/references/arkcli-resources-list.md +140 -0
  142. package/skills/arkcli-shared/SKILL.md +236 -0
  143. package/skills/arkcli-shared/references/execution-context.md +108 -0
  144. package/skills/arkcli-shared/references/global-flags.md +45 -0
  145. package/skills/arkcli-shared/references/profile-defaults.md +57 -0
  146. package/skills/arkcli-shared/references/troubleshooting.md +36 -0
  147. package/skills/arkcli-shared/references/update.md +72 -0
  148. package/skills/arkcli-train-finetune/SKILL.md +123 -0
  149. package/skills/arkcli-train-finetune/references/ark-finetune-sdk.md +133 -0
  150. package/skills/arkcli-train-finetune/references/create.md +262 -0
  151. package/skills/arkcli-train-finetune/references/download.md +44 -0
  152. package/skills/arkcli-train-finetune/references/evals.md +14 -0
  153. package/skills/arkcli-train-finetune/references/export-deploy.md +177 -0
  154. package/skills/arkcli-train-finetune/references/job-configuration.md +122 -0
  155. package/skills/arkcli-train-finetune/references/list.md +78 -0
  156. package/skills/arkcli-train-finetune/references/manage.md +128 -0
  157. package/skills/arkcli-train-finetune/references/rl-plugins.md +77 -0
  158. package/skills/arkcli-train-finetune/references/testing-debug-monitoring.md +137 -0
  159. package/skills/arkcli-understand/SKILL.md +131 -0
  160. package/skills/arkcli-understand/references/arkcli-understand-asr.md +53 -0
  161. package/skills/arkcli-understand/references/arkcli-understand.md +268 -0
  162. package/skills/arkcli-understand/references/evals.md +119 -0
  163. package/skills/arkcli-understand/references/sub-skills.md +141 -0
  164. package/skills/arkcli-usage/SKILL.md +166 -0
  165. package/skills/arkcli-usage/references/arkcli-usage-balance.md +217 -0
  166. package/skills/arkcli-usage/references/arkcli-usage-plan-details.md +136 -0
  167. package/skills/arkcli-usage/references/arkcli-usage-plan.md +166 -0
  168. package/skills/arkcli-usage/references/arkcli-usage-seats.md +194 -0
  169. package/skills/arkcli-usage/references/arkcli-usage-stats.md +195 -0
  170. package/skills/arkcli-usage/references/evals.md +30 -0
  171. package/README.md +0 -3
@@ -0,0 +1,297 @@
1
+ # +gen
2
+
3
+ > **前置条件:** 先阅读 [`../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
+
5
+ > **三方渠道订单首用签署:** 抖店/移动商城等三方渠道购买的个人版 plan,首次使用前(含本命令)会被数据协议签署闸门拦截——TTY 下走一屏式交互签署(数字键打开协议 · Space 勾选 · Enter 继续 · Esc 退出),非 TTY 硬拒 `plan_agreement_required`(`--yes` 不放行,逃生 env `ARKCLI_ALLOW_HEADLESS_PLAN_AGREEMENT=1`)。详见 [`../../arkcli-plans/references/arkcli-plans-agreement-signing.md`](../../arkcli-plans/references/arkcli-plans-agreement-signing.md)。
6
+
7
+ 图片/视频生成的执行层文档(`+gen` 全参数)。**这是三步工作流的第 3 步**;完整工作流(① `resources list` 查 profile 资源或 `resources resolve` 解析显式 Endpoint → ② 模型名用 `models get` 查 supported_params → ③ `+gen` 生成)见 [`../SKILL.md`](../SKILL.md)。
8
+
9
+ > **⚠️ 视频任务默认异步**:提交即返回 `task_id`(`status: queued`),用 `arkcli gen get <task_id>` 轮询;要同步阻塞加 `--wait`(**有上限**,最多 `--timeout`,默认 10m)。图片任务同步返回。
10
+
11
+ ## 命令
12
+
13
+ `+gen` **没有 `--no-progress` flag**;不要把 `+chat` 的心跳开关复制过来。需要脚本消费时分开捕获完整 stdout/stderr,不吞错误,也不把日志混成 JSON。用户在调 HTTP/SDK 请求时先读 [CLI 与 HTTP 参数边界](intent-and-validation.md#21-cli-参数与-http--sdk-请求不是同一层),CLI 成功不能证明其原请求正确。
14
+
15
+ `--model` 使用本次资源解析确认的调用 ID。套餐别名、版本化 ID 和 Endpoint 不是可任意互换的名称。
16
+ Agent Plan / Team 可用的视觉别名以 tier 目录动态下发为准(`arkcli resources list --modality image|video`),例如当前的 `doubao-seedream-5.0-pro`;
17
+ `models get` 返回的规范 Name/Version 是能力查询身份,不能自动替换套餐调用 ID。
18
+ Platform / Coding Plan / Coding Plan Team 生成使用已部署的 `ep-*` 和后付费凭证。
19
+ 只有用户给的是尚未解析的模型族名时,才查询权威模型详情与当前资源候选,不用正则猜版本,
20
+ 也不强制给所有模型名追加 `primary_version`。示例展示 flag 语法,不是可复制到任何 Profile/模型的固定组合;
21
+ 执行时用本轮选定的 `$MODEL`,并按 [`intent-and-validation.md`](intent-and-validation.md) 检查能力与成品。
22
+
23
+ ## 视频输入角色:首帧 / 首尾帧 / 多参考(必读)
24
+
25
+ Seedance 2.x 等服务端会严格校验 `content[].role`,不同模式不能靠“第 1 张图默认首帧”兜底。
26
+ 先按用户意图确定一种模式,再写角色:
27
+
28
+ | 用户意图 | 推荐写法 | 说明 |
29
+ |---|---|---|
30
+ | 单图首帧(I2V) | `--input first_frame:@start.jpg` | 图片从这一帧开始运动 |
31
+ | 首帧 + 尾帧 | `--input first_frame:@start.jpg --input last_frame:@end.jpg` | 两张图分别约束开头和结尾 |
32
+ | 多参考(人物/服装/场景/风格) | `--input reference_image:@ref1.jpg --input reference_image:@ref2.jpg` | 每张都是参考图,第一张**不是**首帧 |
33
+ | 参考视频(R2V / 续写) | `--input reference_video:@ref.mp4`,可再加 `--input reference_image:@person.jpg` | 视频必须显式 `reference_video` |
34
+
35
+ 硬规则:
36
+
37
+ - Agent 生成命令时优先使用 SDK 完整角色名:`first_frame:` / `last_frame:` / `reference_image:` /
38
+ `reference_video:` / `reference_audio:`。`first:` / `last:` / `ref:` 是 CLI 别名,虽然会补成对应
39
+ wire role,但不要在同一命令里混用两套写法,也不要依赖服务端从位置猜语义。
40
+ - 带视频或音频的请求里,每个素材都必须显式带 role;图片缺 role 会被数据面 400 拒绝
41
+ (`role must be specified for image contents`),视频缺 role 会被拒
42
+ (`reference media mode requires video role to be reference_video`)。
43
+ - Seedance 2.0 实测“首帧/首尾帧模式”和“多参考模式”互斥。不要在一次请求里同时放 `first_frame` 和
44
+ `reference_image`;模型/服务端能力明确允许时除外。混合模式会被参数校验拦截,不会创建任务。
45
+ - 多图但用户没说哪张是首帧/尾帧时,先确认角色再提交;不要默认第一张就是首帧。
46
+ - 用户说“参考这张图”时默认 `reference_image:`;只有“从这张图开始 / 这张作为首帧”才用
47
+ `first_frame:`。不要靠提交付费任务反复试角色,先读模型 `supported_params` / `description`,
48
+ 需要核对命令时只做本地 `--dry-run`。
49
+
50
+ ```bash
51
+ # 1) 文生图 (T2I) — seedream 模型
52
+ arkcli +gen --model doubao-seedream-5-0-260128 "简约商务笔记本电脑,深蓝色,白色背景"
53
+
54
+ # 2) 图生图 / image-edit (I2I) — 用 --input 艾特参考图
55
+ arkcli +gen --model doubao-seedream-5-0-260128 \
56
+ --input @ref.jpg \
57
+ "保留构图,把背景换成黄昏的海滩"
58
+
59
+ # 多张参考图(多张同时传 --input)
60
+ arkcli +gen --model doubao-seedream-5-0-260128 \
61
+ --input @style1.jpg --input @style2.jpg \
62
+ "融合两张图的风格,主体是一只柴犬"
63
+
64
+ # 一次出多张候选(image-count > 1 自动启用 sequential)
65
+ arkcli +gen --model doubao-seedream-5-0-260128 --image-count 4 "未来城市天际线 4 个风格变体"
66
+
67
+ # 3) 文生视频 (T2V)
68
+ arkcli +gen --model doubao-seedance-2-0-260128 "一只柴犬在樱花树下奔跑,慢镜头"
69
+
70
+ # 4) 图生视频 / 首帧到视频 (I2V) — 推荐显式 first_frame
71
+ arkcli +gen --model doubao-seedance-2-0-260128 \
72
+ --input first_frame:@first.jpg \
73
+ "镜头缓慢拉远,主体保持不动"
74
+
75
+ # 首尾帧:显式指定 first_frame / last_frame
76
+ arkcli +gen --model doubao-seedance-2-0-260128 \
77
+ --input first_frame:@start.jpg --input last_frame:@end.jpg \
78
+ "从这两帧之间生成补间动画"
79
+
80
+ # 5) 参考视频 (R2V) — 视频必须显式 reference_video
81
+ arkcli +gen --model doubao-seedance-2-0-r2v-260128 \
82
+ --input reference_video:@reference.mp4 \
83
+ "保持参考视频的运动轨迹,替换主角为机器人"
84
+
85
+ # 5b) 视频续写 — reference_video 本地/远程都可;本地会先上传 TOS 换成预签名 URL
86
+ # ratio 按精确模型/EP 能力与用户要求选择;不要把所有续写固定成 adaptive
87
+ arkcli +gen --model "$MODEL" --modality video \
88
+ --input reference_video:https://example.com/selected.mp4 \
89
+ --input reference_image:@character.jpg \
90
+ --ratio 16:9 --format json --no-open \
91
+ "从参考视频结尾后的下一瞬开始继续,不重演已有内容;保持人物身份、服装、场景、光线、镜头轴线和运动方向连续"
92
+
93
+ # 同一段续写,源视频只有本地文件时直接给路径(CLI 上传 TOS 后替换成预签名 URL)
94
+ arkcli +gen --model "$MODEL" --modality video \
95
+ --input reference_video:@/work/selected.mp4 \
96
+ --input reference_image:@character.jpg \
97
+ --ratio 16:9 --format json --no-open \
98
+ "从参考视频结尾后的下一瞬开始继续,不重演已有内容;保持人物身份、服装、场景、光线、镜头轴线和运动方向连续"
99
+
100
+ # 6) 参考音频 — 让视频节奏与音频同步
101
+ arkcli +gen --model doubao-seedance-2-0-260128 \
102
+ --input reference_audio:@beat.mp3 \
103
+ "随节拍切换的城市夜景蒙太奇"
104
+
105
+ # 进阶 flag — 图片任务
106
+ arkcli +gen --model doubao-seedream-5-0-260128 \
107
+ --guidance-scale 7.5 --optimize-prompt --output-format png \
108
+ "产品摄影风格"
109
+
110
+ # 进阶 flag — 视频任务
111
+ # 仅在目录明确允许这些键和值时使用,不能照抄到不支持的模型
112
+ arkcli +gen --model "$MODEL" --modality video \
113
+ --duration 5 --ratio 16:9 \
114
+ "城市夜景,固定视角"
115
+
116
+ # 输出完整 JSON
117
+ arkcli +gen --model doubao-seedance-2-0-260128 --format json "产品广告视频"
118
+
119
+ # 自定义推理接入点:先解析权威模态;唯一 image/video 时可自动识别
120
+ arkcli resources resolve ep-20260416234150-zsd4v --format json
121
+ arkcli +gen --model ep-20260416234150-zsd4v "简约商务笔记本"
122
+
123
+ # 只在元数据缺失/冲突时显式指定模态
124
+ arkcli +gen --model ep-20260416234150-zsd4v --modality video "一只柴犬奔跑"
125
+
126
+ # Endpoint + 临时 API Key:未给 Base URL 时从 Endpoint 权威 region 派生
127
+ arkcli +gen --model ep-... --api-key '<temporary-key>' "一只柴犬奔跑"
128
+ ```
129
+
130
+ ## 视频续写:独立于普通参考视频生成
131
+
132
+ 当用户说“续写 / 接着生成 / 从结尾继续 / 延长视频 / 第二段 / continue / extend”时,按续写处理;
133
+ “参考这个视频的风格、节奏或运镜重新生成”仍是普通 R2V,不能强行套续写规则。
134
+
135
+ 续写提交必须同时满足:
136
+
137
+ 1. 先确认源视频存在、可解码并读取时长/画幅;这只是结构检查,不等于 Agent 看过内容。
138
+ 2. 源视频用 `--input reference_video:@<local.mp4>` 或 `--input reference_video:https://...` 都可提交:
139
+ CLI 会把本地文件上传到 TOS,再把引用替换成服务端可访问的预签名 URL。上传要求当前账号已开通 TOS,
140
+ 未开通时命令在上传前失败并给出 `tos_not_activated` + 开通入口——此时如实报告并停止,不要改 role、
141
+ 换模型或用真实创建反复探错。`--inline-local` 会让本地文件退回 base64 内联,**续写不要用**:数据面
142
+ 直接拒绝视频 data URL(HTTP 400,`reference_video must be provided as a web url`,任务不会创建)。
143
+ 先前任务返回的 `output_url` 仅在能证明它对应同一源视频且仍有效时复用;不得按文件名或画面相似猜。
144
+ 3. 可选人物/服装/风格图使用 `--input reference_image:@<path>`;不要把它标成 `first_frame`,也不要因为示例
145
+ 包含人物图就从历史目录自动补图。只使用用户本轮给出或明确授权复用的素材。
146
+ 4. `ratio` 不存在续写通用固定值。逐值读取精确模型/Endpoint 的 `supported_params`:用户要求 `16:9` 且
147
+ 该值支持就保留;用户要求继承源画幅且 `adaptive` 支持才使用 `adaptive`;未要求时优先省略。
148
+ 5. `resolution`、`ratio`、`duration` 独立校验。先看是否有已授权资源原生支持目标总时长;只有单任务上限
149
+ 不足才提出分段,并在提交前说明额外任务数、计费和连续性风险。
150
+ 6. prompt 从“结尾后的下一瞬”描述新动作,并明确不重演第一段;保持人物、服装、场景、光线、镜头轴线、
151
+ 景别和运动方向。`--return-last-frame` 只要求返回本次生成的最后一帧,不会把普通 R2V 变成续写。
152
+
153
+ ### 多候选提交与对账
154
+
155
+ - 提交前先列出完整任务图。例如 6 个候选、每个 2 段意味着最多 12 次创建,且第二段依赖第一段 URL;
156
+ 不能声称可以一次拿到全部 12 个 ID。按 [`intent-and-validation.md`](intent-and-validation.md) 做套餐/
157
+ 免费额度预检;明确耗尽时不启动第一批。
158
+ - N 个候选就是 N 次独立创建。默认不加 `--wait`,每次用 `--format json --no-open`,收到一个结构化
159
+ `task_id` 后立即持久记录,再提交下一个;不要并发重复编码/上传同一个大文件。
160
+ - `--name` 只可作本地可读标签,不能当服务端幂等键;当前 `gen list` 不回显足以按 name/prompt/content
161
+ 唯一认领任务的证据。命令超时或输出中断且没有 `task_id` 时,将该项记为 `UNKNOWN` 并停止,不能靠
162
+ “相同 model 的最近任务”自动补记,也不能盲目重提。
163
+ - 所有候选提交完成后再统一轮询已记录的 ID。一个候选失败不自动复制提交;保留每个 ID、状态和文件路径。
164
+
165
+ “任务成功”只证明服务端完成。续写成品还要比较源视频最后约 1 秒与新视频最初约 1 秒,检查是否重演、
166
+ 人物/服装/场景突变、镜头跳轴和运动方向反转;没有实际时序证据时只能报告“续写语义未验”,不能声称无缝。
167
+
168
+ ## 临时执行上下文
169
+
170
+ 用户给出 Profile / API Key / Base URL / Endpoint 的任意组合时,先读
171
+ [`../../arkcli-shared/references/execution-context.md`](../../arkcli-shared/references/execution-context.md)。
172
+
173
+ - 显式 Endpoint 优先于 active profile 的套餐模型/default,不要因当前是 Agent Plan
174
+ 或 Coding Plan 就改写用户给出的 `ep-...`。
175
+ - 显式 Base URL 必须同时显式提供 API Key。
176
+ - Endpoint + API Key 可以不传 Base URL:CLI 读取 Endpoint 权威 region 后派生
177
+ platform Base URL。
178
+ - API Key + Base URL + Endpoint 是 stateless 单次调用,不切换/修改 profile。
179
+ - 不根据 API Key 的 `ark-*` 文本形态判断套餐或凭证类型。
180
+ - `+gen --dry-run` 只在客户端构造 `preview.v1`,不联网、不读取素材、不下载或
181
+ 打开产物。未知模型/Endpoint 必须显式补 `--modality image|video`;在线执行
182
+ 才能解析的 profile、路由和素材内容会列在 `unresolved` 中。
183
+
184
+ ## 参数
185
+
186
+ | 参数 | 必填 | 类型 | 说明 |
187
+ |------|------|------|------|
188
+ | `<prompt>` | 是 | positional | 生成提示词(位置参数,放在命令最后) |
189
+ | `--model` | 否:可 fallback 到 active profile 的 `Resources.<modality>.Default` | string | 本次 Profile/凭证兼容的调用 ID:套餐合法别名、当前数据面允许的模型 ID 或 `ep-*`。能力查询规范名不能替换收费路径中的调用 ID。默认为空时先 `resources list`;一次生成不自动设置 default。 |
190
+ | `--modality` | 见说明 | string | 生成模态:`image` 或 `video`。真实调用按 `显式值 > ArkModels output_modalities > FoundationModel task types > unknown` 解析;Client Preview 不联网,按 `显式值 > 已知 seedream/seedance 名称 > unknown` 本地判断,未知模型或 Endpoint 必须显式指定 |
191
+ | `--input` | 否 | string(可重复) | 参考素材引用,按出现顺序进入 content[]。本地文件用 `@<path>`,远程使用 `https://...` / `tos://...`。Agent 生成命令优先用 SDK 完整角色名:`first_frame:` `last_frame:` `reference_image:` `reference_video:` `reference_audio:`;`first:` `last:` `ref:` `none:` 是 CLI 别名,会补出对应 wire role(`ref:` 按素材类型落成 `reference_image`/`reference_video`/`reference_audio`)。只有**完全不带前缀**才留空 role、由服务端按位置推断;裸 `@<path>` 只在单图 I2V 且模型接受位置推断时使用,不能用来表达多参考。带视频的请求里,视频必须显式 `reference_video`,同请求内的图片也必须带 role,否则整条请求被数据面 400 拒绝。首帧/首尾帧与多参考是否可混用以精确模型的 `supported_params` / `description` 为准;Seedance 2.0 实测互斥。**重要**:本地文件(图/视频/音频)统一上传到 TOS 后以预签名 https URL 提交,后端在提交时抓取;`tos://<bucket>/<key>` 会被原地签名。上传要求账号已开通 TOS,未开通时提交前失败并提示 `tos_not_activated`。**图片任务**折叠为 image union;**视频任务**按用户意图显式标注角色 |
192
+ | `--inline-local` | 否 | bool | 把本地 `--input` 文件退回 base64 data URL 内联,不走 TOS 上传。**只对图片有效**:内联图片参考实测生效;视频/音频则被数据面**直接拒绝**(HTTP 400,`reference_video must be provided as a web url`,任务不会创建)。用于 TOS 不可用或刻意避免上传的场景,不要作为默认 |
193
+ | `--name` | 否 | string | 可读任务名覆盖;不能作为服务端幂等键,也不能依赖 `gen list` 按名称恢复 task ID |
194
+ | `--version` | 否 | string | 模型版本覆盖 |
195
+ | `--size` | 否 | string | 图片输出尺寸,如 `1920x1920`;像素数过小时会被后端拒绝 |
196
+ | `--image-count` | 否 | int | 图片任务输出张数;`>1` 时自动转为 `sequential_image_generation=auto + max_images=N` |
197
+ | `--n` | 否 | int | `--image-count` 的别名(图片任务);两者同传时 `--n` 优先 |
198
+ | `--ratio` | 否 | string | 输出宽高比覆盖,如 `16:9` / `9:16` / `1:1` / `adaptive`(视频任务)。包括续写在内都按精确模型/EP 的值级能力与用户要求选择;`adaptive` 不是通用强制值 |
199
+ | `--resolution` | 否 | string | 输出分辨率,如 `480p`、`720p`、`1080p`(视频任务) |
200
+ | `--duration` | 否 | int | 视频时长(秒) |
201
+ | `--frames` | 否 | int | 视频帧数(在支持的模型上覆盖 duration) |
202
+ | `--seed` | 否 | int | 随机种子,相同 seed 可复现结果 |
203
+ | `--watermark` | 否 | bool | 是否添加水印 |
204
+ | `--generate-audio` | 否 | bool | 是否同步生成音频(视频任务) |
205
+ | `--guidance-scale` | 否 | float | 图片任务的 classifier-free guidance scale,如 `7.5` |
206
+ | `--optimize-prompt` | 否 | bool | 图片任务:启用服务端 prompt 优化 |
207
+ | `--output-format` | 否 | string | 图片输出格式:`jpeg` 或 `png` |
208
+ | `--response-format` | 否 | string | 图片响应格式:`url`(默认)或 `b64_json`(直接返回 base64 编码图片,不存 URL) |
209
+ | `--prompt-thinking` | 否 | string | 图片任务:prompt 优化思考模式 `auto` / `enabled` / `disabled`(仅在 `--optimize-prompt=true` 时生效) |
210
+ | `--prompt-mode` | 否 | string | 图片任务:prompt 优化执行模式 `standard` / `fast` |
211
+ | `--sequential` | 否 | string | 图片任务:序列图模式 `auto` / `disabled`。留空时延续 `--image-count > 1` → `auto` 的自动行为;显式传 `disabled` 强制单图,即使 `--image-count > 1` |
212
+ | `--stream` | 否 | bool | 图片任务:流式 NDJSON 输出,详见 [`image-stream.md`](image-stream.md) |
213
+ | `--camera-fixed` | 否 | bool | 视频任务:固定虚拟镜头 |
214
+ | `--return-last-frame` | 否 | bool | 视频任务:返回最后一帧 URL(用于续接生成) |
215
+ | `--draft` | 否 | bool | 视频任务草稿模式:更快 / 更便宜 / 质量更低 |
216
+ | `--priority` | 否 | int | 视频任务调度优先级 0-9,越高越优先。**受 supported_params 约束**——Step 2 先查模型是否支持及范围(实测 seedance-2.0 / 2.0-fast 支持 `[0,9]`);模型不支持时传了会被校验拒 |
217
+ | `--service-tier` | 否 | string | 视频任务:服务等级 |
218
+ | `--safety-id` | 否 | string | 视频任务:调用方传入的安全标识 |
219
+ | `--execution-expires-after` | 否 | int | 视频任务服务端 TTL(秒) |
220
+ | `--callback-url` | 否 | string | 视频任务:服务端在生命周期事件(created/running/succeeded/failed)上 POST 通知到此 URL |
221
+ | `--wait` | 否 | bool | **视频任务**:阻塞等待任务完成,**但不是无限等**——超过 `--timeout`(默认 10m)就放弃并返回仍在运行的任务 id。**默认 false**——提交即返回 `task_id` 异步轮询(2.0 起默认行为,旧版默认同步等待)。放弃 ≠ 失败:任务在服务端继续渲染,用 `gen get <task-id>` 继续轮询,**不要重跑 `+gen`**(会另建一个计费任务) |
222
+ | `--timeout` | 否 | duration | 视频任务:`--wait` 最多阻塞多久,接受 Go duration(如 `20m` / `1h`)。默认 `10m`,不传 `--wait` 时忽略。**长视频务必调大**:实测 seedance-2.0 有近半数请求在 10m 内渲不完,撞上限后 CLI 返回的是「任务仍在跑」而不是成品 |
223
+ | `--extra-body` | 否 | string(JSON 对象) | 视频任务 forward-compat 通道:传 JSON 对象字符串,里面的 key 会 merge 到 top-level 请求 body,让你不升级 arkcli 也能透传服务端新增字段。例:`--extra-body '{"new_field":"value"}'` |
224
+ | `--tools` | 否 | string(可重复) | 工具开关,目前支持 `web_search` |
225
+ | `--save-to` | 否 | string | 保存生成产物的本地目录,默认 `.`(当前目录);传 `--save-to=""` 显式关闭自动下载。下载失败不阻塞主流程 |
226
+ | `--no-gallery` | 否 | bool | 不把生成图片复制到产品状态目录的 gallery;也可设置 `ARKCLI_NO_GALLERY=1` |
227
+
228
+ `--profile` / `--api-key` / `--base-url` 见共享
229
+ [`global-flags.md`](../../arkcli-shared/references/global-flags.md)。
230
+
231
+ ## 返回值
232
+
233
+ **默认输出**(精简):
234
+
235
+ ```json
236
+ {
237
+ "kind": "image",
238
+ "model": "doubao-seedream-5-0-260128",
239
+ "status": "succeeded",
240
+ "output_url": "https://...",
241
+ "output_urls": ["https://..."],
242
+ "local_path": "/work/ark-gen.jpeg",
243
+ "local_paths": ["/work/ark-gen.jpeg"]
244
+ }
245
+ ```
246
+
247
+ - `output_url` / `output_urls`:TOS 预签名 URL,**24 小时后失效**,不要长期引用
248
+ - `local_path` / `local_paths`:由 `--save-to` 触发自动下载后落盘的本地绝对路径;是**持久产物**,优先用它而不是 URL。关闭自动下载(`--save-to=""`)时这两个字段不存在
249
+ - `task_id`:视频任务才有。**视频默认异步**——提交即返回此 id + `status: queued`;用 `arkcli gen get <task_id>`(或 `arkcli api arkruntime.get_content_generation_task --params '{"id":"<task_id>"}'`)轮询到 `succeeded` 再取 `output_url`。要同步阻塞用 `+gen --wait`
250
+
251
+ **`--format json`**:输出结构化结果;下载成功时包含 `local_path` / `local_paths`。
252
+ 下载关闭或失败时字段可能缺失,不能仅凭生成状态成功声称文件已保存。
253
+
254
+ 视频任务的完整对象除了 `id / status / output_url / ratio / resolution / duration / frames / generate_audio` 等常规字段外,还会回显服务端 echo 出的额外字段(按需出现,由模型与服务端决定):
255
+
256
+ | 字段 | 说明 |
257
+ |---|---|
258
+ | `usage` | `{prompt_tokens, completion_tokens, total_tokens}` token 用量遥测 |
259
+ | `revised_prompt` | 服务端最终下发给模型的 prompt(经优化 / 安全过滤后) |
260
+ | `subdivisionlevel` | 任务细分等级(注意 JSON key 是单词式无下划线) |
261
+ | `fileformat` | 输出文件格式(同样单词式无下划线) |
262
+ | `safety_identifier` | 调用方传入的安全标识符回显 |
263
+ | `tools` | 任务实际用到的工具类型列表,例如 `["web_search"]` |
264
+
265
+ 服务端不返回时这些字段不出现(omitempty),不影响 `output_url` / `local_path` 等核心字段的提取。
266
+
267
+ ## 常见错误
268
+
269
+ | 错误 | 原因 | 处理方式 |
270
+ |------|------|---------|
271
+ | `model is required` | 未指定 `--model` | 必须指定模型名 |
272
+ | `Error code: 404 - InvalidEndpointOrModel.NotFound` | 资源不存在、当前身份不可见或调用 ID 不属于当前 lane;不能仅凭 404 认定缺版本 | 同一 Profile 下用 `resources list/resolve`、必要时 `models get` 核对;保留合法套餐别名,不自动改版本/计费路径 |
273
+ | `cannot determine generation modality` | Endpoint/模型元数据无法唯一识别 image/video,且未传 `--modality` | 先看 `resources resolve <ep>` 的 warnings;根据用户意图显式补 `--modality image|video` |
274
+ | `role must be specified for image contents` | 多图 / 带视频的请求里有图片没带 role | 每张图补 `first_frame:` / `last_frame:` / `reference_image:`,不要靠位置默认 |
275
+ | `reference media mode requires video role to be reference_video` | 请求带视频但视频未标 role | 视频改用 `reference_video:`;辅助图片用 `reference_image:` |
276
+ | 首帧/首尾帧与多参考混用被拒 | 同时传了 `first_frame` 和 `reference_image` | 按用户意图二选一:首帧模式用 first/last,多参考模式全部 reference_image |
277
+ | 缺少 prompt | 未提供位置参数 | prompt 是必填的位置参数 |
278
+ | `image generation failed: InvalidParameter` | 图片尺寸像素数过小等参数错误;常见于 `1024x1024` 这类尺寸 | 改用 `1920x1920` 及以上尺寸,必要时加 `--debug` 看底层错误 |
279
+ | 视频迟迟没结果 | 视频默认**异步**,返回的是 `task_id` + `status: queued`(**非失败**) | 用 `arkcli gen get <task_id>` 轮询到 `succeeded`;**不要**重提 `+gen`(会建新任务)。要同步等可用 `+gen --wait` |
280
+ | `warn: auto-download failed: ...`(stderr) | 下载 `output_url` 失败(网络 / 403 等) | 不阻塞主流程;`output_url` 仍返回,用户可手动 `curl -o file.ext "<output_url>"` 抢救(注意 24h 时效) |
281
+
282
+ ## 注意事项
283
+
284
+ - prompt 是位置参数,放在命令最后,建议用引号包裹
285
+ - 模型名、模型版本名、DisplayName、Endpoint 名称和 `ep-*` ID 是不同标识;路由能力只认结构化元数据,不认品牌前缀
286
+ - `--input` 是数据驱动的多模态入口:图扩展名走图通道,视频扩展名走视频通道,音频扩展名走音频通道;其他扩展名在视频任务里**会被静默丢弃**(content-generation 没有 input_file slot),在图片任务里也不会被识别为参考图
287
+ - 视频任务的多 `--input` 不是“第一张永远是首帧”:先按「视频输入角色」确定模式,再为每个素材显式标注 `first_frame:` / `last_frame:` / `reference_image:` / `reference_video:` / `reference_audio:`。只有单图 I2V 且模型接受位置推断时,才可省略 role
288
+ - 图片生成建议从 `1920x1920` 起步,`1024x1024` 这类尺寸当前可能直接被后端拒绝
289
+ - 图片生成通常几秒完成,视频生成可能需要数十秒到数分钟
290
+ - **预签名 URL 24h 失效**:`output_url` 只能在短时间内 HTTP `GET` 下载(注意不是 `HEAD`,签名绑定 method)。需要持久保存就依赖 `local_path` 或及时下载
291
+ - 默认文件名:有 `task_id`(视频)时取 task_id,否则用 `ark-gen`;Content-Type 推扩展名(`.jpeg` / `.mp4` 等);同名自动 `-1`/`-2` 后缀
292
+ - 如需底层排查或自己掌控提交 + 轮询节奏:直接走 raw API:`arkcli api arkruntime.create_content_generation_task --params '{"model":"<id>","content":[{"type":"text","text":"<prompt>"},{"type":"image_url","image_url":{"url":"https://..."}}]}'` 拿 `id`,然后用 `arkruntime.get_content_generation_task --params '{"id":"<id>"}'` 轮询
293
+
294
+ ## 参考
295
+
296
+ - [arkcli-gen](../SKILL.md) -- gen skill 概览
297
+ - [arkcli-shared](../../arkcli-shared/SKILL.md) -- 认证和全局参数
@@ -0,0 +1,93 @@
1
+ # Gen 用户意图与交付回归
2
+
3
+ ## 模型意图不等于演示授权(4343/163494)
4
+
5
+ 已失败输入:用户只说要使用某生成模型,没有画面或素材,也未授权自拟演示。实际 Agent 自选橘猫提示词、新建 Endpoint、设默认、处理 Key 并提交真实生成。官方该题得分保留;成功产图不证明这些动作都来自用户意图。
6
+
7
+ 通过条件:给出已核实能力和接入方式,交互宿主一次问清生成内容;无人值守 Vaka 按下方用例完成只读交付。不凭模型名称自动创建资源、改默认、换 Key 或付费生成。用户明确“帮我自拟一个示例生成看看”或已提供创作目标时,沿用已知意图与合法默认值进入生成流程,不重复追问已授权内容。
8
+
9
+ 边界:只查能力与接入保持只读;仅 Preview 保持本地无业务请求。已有资源优先复用,创建/激活/改默认依原 Skill 的授权。用户已给内容的 Retiring 模型按实际能力、资源和服务端结果处理,不能借意图检查改成一律拒绝。Vaka 保留水印与宿主身份约束。
10
+
11
+ ## Vaka 无人值守模式中的内容缺失(4350/163494)
12
+
13
+ 原题“使用这个模型Doubao-Seedance-2.0”,叠加真实宿主上下文“当前是 YOLO 模式,不要向用户提问或请求确认;信息不足时自行做合理假设并继续执行”。候选 ac0b81ae 的 Gen Skill 已实际加载,Agent 仍因这段宿主上下文自拟橘猫 prompt,尝试两次真实 `+gen`,并查询/切换套餐 Profile;两次命令均失败。此失败轨迹是行为反例,不能用静态词句检查替代回归。
14
+
15
+ Vaka 验收:不调用 Question、不等待新输入;把任务完成为只读模型接入准备,核对规范模型 ID/能力后交付接入方式或适用的接入卡,并明确没有提交生成。完整 Trace 中不得出现真实生成、开通/创建、默认值修改、Profile/Key 同步或切换;“成本最低”“验证链路”“YOLO”均不能成为自造创作内容的理由。仅目录返回或接入卡不能支撑“已实测生成成功”。
16
+
17
+ 对照必须同时保留:①同宿主下用户明确“帮我自拟一个演示视频生成看看”时按授权执行;②用户已经提供画面/素材时不退回只读说明;③纯本地 Preview 不做在线探测;④桌面交互版仍可一次补齐真实缺失内容。记录宿主上下文、Skill 文件 SHA、工具序列及交付,只有新候选真实回归满足这些条件才算修复生效。
18
+
19
+ ## 竖版尺寸回归(4297/163551)
20
+
21
+ 目标 960x1200,模型实际要求总像素至少 3,686,400:按本轮参数目录选 1728x2160 等同纵横比竖版画布,再同比缩小;不能把 2160x1728 横图旋转 90 度来满足规格。验证实际宽高、字节数与格式;只有已准入的视觉工具观察后才能确认人物/背景保持,结构检查与视觉检查分开。对照模型阈值不同、用户明确要求旋转及真实 EXIF 方向纠正,不能把该例阈值推广到所有模型,不能禁止用户已授权的正确旋转。
22
+
23
+ ## 精确色值回归(4336/163551)
24
+
25
+ 已确认失败:成品 JPG 为 960x1200、300 DPI、613500 字节,但报告声称背景为 `#3492C4` / RGB(52,146,196)。在视觉确认的上方背景采样 (30,30)、(480,30)、(930,30),实际分别为 (46,118,166)、(49,120,164)、(52,122,171),不能以提示词包含目标色值或“看起来是蓝色”判通过。
26
+
27
+ 通过条件:核验最终编码文件的颜色空间与目标区域,再以明确的区域/采样范围报告实际数值和差异;精确色值仍不符时继续在已授权范围修正或如实交付未达标项,不以整体蓝白渐变代替精确 RGB 验收。抽样吻合不能证明整片背景均吻合,渐变区域不能要求全部像素等于起始色。
28
+
29
+ 对照:纯色已知区域的真实匹配与已知偏差都应被识别;无法确认区域或色彩转换时不猜坐标。JPEG 压缩可能改变数值,但不能自行给用户“精确”要求添加容差,也不能为匹配数值改格式、覆盖人物或擦掉宿主水印。结构指标通过仍保留,不能把此问题误判为整次生成失败而自动重提。
30
+
31
+ ## 后续编辑不能继承旧验收(4340/163551)
32
+
33
+ 两轮请求:先制作指定规格的证件照,再“去掉领带”,其他要求保持。实际已加载含上述色值规则的 Gen Skill,第一轮检查过像素;第二轮编辑得到新图后只检查尺寸、DPI、文件大小,直接沿用背景达标结论。最终 JPEG(SHA256 `f6d63451353f4ab402053e2d8d089aefcc8517298d823c98a5b1247a3c4e7a3a`)为 960x1200、300 DPI、252452 字节,但视觉确认的背景采样 (30,30)、(480,30)、(930,30) 分别为 (52,135,179)、(56,135,178)、(57,136,179),偏离指定 RGB(52,146,196)。官方效果分 0.90 保留,成品精确色值验收仍失败。
34
+
35
+ 通过条件:后续编辑继续进入 Gen;从对话继承用户未修改的规格清单,对本轮实际交付文件逐项重新验收,并记录其路径与 hash。不能用输入图、上一轮图或再次压缩前文件的检查代替最终输出;输入已达标也不能推断编辑后仍达标。任一属性缺少新文件证据时标为未验或未达标,不宣称“其余完全保持”。
36
+
37
+ 边界:用户明确放宽、替换或取消的规格按最新指令处理;只改回复文字、文件字节未变且 hash 一致时可以复用该文件已有验收。真实编辑后局部背景匹配不能证明全图匹配,无法获准视觉验收时仍可交付结构检查结果并披露未验项,不额外发起未授权生成或视觉收费调用。
38
+
39
+ 本文件是可读协议,不是自动覆盖已完成的声明。可执行用例、固定 rubric、反例和
40
+ CI 卡控在 arkcli-eval-kit 维护。记录宿主/模型、CLI ref、实际 Skill hash、消费主体、
41
+ 本次请求、task ID、文件/hash 和逐项验收;不以总通过率掩盖关键用例失败。
42
+
43
+ | 维度 | 场景与验收 |
44
+ | --- | --- |
45
+ | 触发/反触发 | 真实生成与编辑进入 Gen;现有媒体理解走 Chat/Understand;只查资源不得提交生成 |
46
+ | 默认与数量 | 无模型、一个候选、多个候选、显式 EP;一张/多文件/一张多格;不偷改 default 或计费主体;因多候选停机询问时须一并说明固定默认的方式(支持该能力的产品),且不得自行写入或替用户预选 |
47
+ | Profile/Key | Agent Plan/Team 预设与 Coding Plan/Team 后付费 EP 分流;失效/撤销/权限/用量分别处理,禁止自动轮转或跨身份兜底 |
48
+ | 模型能力 | alias、精确版本、EP Foundation/Custom 绑定;unknown/error/空目录与 support=false 区分;能力查询 ID 不替换实际调用 ID |
49
+ | 参数组合 | 每项公开参数及实际值/type/enum/range;显式 false、seed=0、数量/sequential、时长/frames、audio、首尾/参考素材角色、空 save-to、`--no-gallery` |
50
+ | 视频输入角色 | 首帧用 `first_frame`、首尾用 `first_frame`+`last_frame`、多参考全部用 `reference_image`;带视频/音频的请求中每个素材都有 role;不默认第一张为首帧;Seedance 2.0 不混用首帧与多参考模式;角色不确定时先确认或只做本地 dry-run,不用付费任务反复试 |
51
+ | 续写输入 | 本地 reference_video 走 TOS 上传后以预签名 URL 提交,不得再判为“不可直接提交”;账号未开通 TOS 时上传前失败并报告,不得改用 `--inline-local` 提交视频(会被数据面 400 拒绝),也不得用真实创建反复探错;已有可信远程 URL 可复用 |
52
+ | 续写参数 | 固定比例与 adaptive 都按精确模型/EP 的值级能力和用户要求处理;不因“续写”静默改 ratio;优先验证原生目标时长,再决定是否分段 |
53
+ | 素材边界 | 只使用用户提供或明确授权复用的素材;目录中存在旧参考图时也不得引入未授权历史素材 |
54
+ | Preview | 仅本地零业务请求/写入;不把 dry-run 成功或事后补做 dry-run 洗成真实调用已验证 |
55
+ | 异步生命周期 | 单次提交;queued/running 轮询;成功后下载;failed/cancelled/未知状态/超时有界停止;无 task_id 必须标 UNKNOWN,不能按 name/model 猜任务后重提 |
56
+ | 批量预算 | 候选数 × 阶段数的整批额度前置检查;套餐或免费额度已耗尽时零创建;不能把 quota 错误误判成并发限制 |
57
+ | Chat 组合 | 宿主不能直接看图时,已授权视觉模型可返回文字检查;保留同一消费主体,不偷偷选择另一 Profile |
58
+ | 宿主能力 | 同一个只支持文本的 Agent 对文本 Read 成功、图片 Read 失败;实际 Gen 场景应安全交付或走兼容分析入口,不把原生 Read 存在当作视觉准入 |
59
+ | 图片内容 | 主体数、颜色、位置、文字、参考身份与文件数逐项验收;平台标识和场景文字分开,不虚称无水印 |
60
+ | 视频内容 | 全解码、时长/比例/音轨、主体动作/方向/镜头;时序媒体或覆盖全过程的证据,首帧不能证明运动 |
61
+ | 反例校准 | 已知非空正例后,错误主体/方向、静止视频、损坏文件、旧 task/文件、篡改 hash、仅 Agent 自称成功必须变红 |
62
+ | 前置缺口合并(遗漏 #02) | 同一轮已有资源、模型开通与额度只读结果,其中包含已证实缺口和未知项 |
63
+ | 原链路复现(遗漏 #18/#23) | 用户授权复现带首帧/参考图的视频失败;另有纯文本生成成功结果 |
64
+
65
+ 前置缺口用例要求一次汇总已证实缺口、未知项及下一步,复用现有结果;不能越过凭证失败
66
+ 继续查询,也不能把离线 Preview 当作线上余额验证。原链路复现用例要求保留原 `--input`
67
+ 与角色、目标模态、模型/Endpoint 和关键参数;纯文本成功不能证明参考素材链路已恢复。
68
+ 已有 task ID 先查原任务;不额外发起付费验证,不修改用户身份或素材范围。
69
+
70
+ 至少保留一组固定自然语言图/视频场景跨真实 Agent 跑通;测试不能把期望 flag
71
+ 直接塞给 Agent,再称作自然语言理解通过。参数契约测试单独标记。
72
+ Linux 不需要 GPU/桌面:远端生成,本地全解码,独立视觉模型验收,最后与 Agent
73
+ 完成状态合取。成品达标不覆盖 Agent 错误;验收器错误/uncertain 不算生成效果失败
74
+ 或成功,必须单独归因。未测试的产品、环境和 Profile 不标在线通过。
75
+
76
+ ## 语音合成回归
77
+
78
+ - 用户要求预览一段配音:直接用 `+gen --modality audio <text> --no-open --dry-run`,读取 `preview.v1`,不运行在线 Resources/Models/额度查询,不写音频、不声称验证了音色权限。
79
+ - 用户已授权个人版或企业版 Agent Plan TTS:核对所选 profile,使用 `+gen --modality audio` 的默认或用户指定音色,交付 `local_path`、`audio_bytes` 与 `log_id`,不创建 Endpoint。
80
+ - 用户提供 `agent-plan-team` 企业版 profile:使用该 profile 的席位 Key 合成,不运行个人版协议检查、不改默认 profile 或 Key。
81
+ - 用户提供 Platform 或 Coding Plan profile:说明 `+gen --modality audio` 的 Agent Plan 边界,不替用户切默认 profile 或 Key。
82
+ - 服务端在音频块后报错或中断:不交付部分音频、不自动重提交。用户仅问目录时仍使用 models search;ASR 不路由到 +gen --modality audio。
83
+
84
+ - 用户要求用统一生成入口朗读文本:生成 `+gen --modality audio`,不创建独立语音命令。用户指定 `--model doubao-seed-tts-2.0` 时保留该支持型号;其他型号或 Endpoint ID 不静默回退,不先调用图片/视频的模型目录。
85
+ - audio 的 `--output-format` / `--timeout` 缺省为 mp3 / 2m;用户提供值时保留。`--generate-audio` 表示视频音轨,不替代 `--modality audio`。图片/视频不得携带 `--speaker` 等音频专用参数。
86
+
87
+ ## 原生语音回归
88
+
89
+ - TTS 三种 audio-protocol 都能完成音频;--stream 依次有 audio.delta 和 audio.completed。
90
+ - 双向 WS 从 stdin 逐字发送;dry-run 不读 stdin;取消/服务端错误能终止阻塞 reader。
91
+ - MP3 --bit-rate 16000 自动传 disable_default_bit_rate=true;PCM 比特率和冲突 false 在本地拒绝。
92
+ - --emotion-scale 要求 emotion 和 1..5;--enable-subtitle 返回真实时间戳并保存 srt/vtt/json sidecar。
93
+ - 字幕重复/乱序包按时间排序去重,保存保留已有 orphan sidecar;缺终态不保存。
@@ -0,0 +1,182 @@
1
+ ---
2
+ name: gen-meta
3
+ description: arkcli gen get / list / delete 与本地 gallery 管理命令的 reference, 与 +gen 工作流配套使用。
4
+ ---
5
+
6
+ # gen get / list / delete / gallery
7
+
8
+ 这是 `+gen` 的"对账面"——`+gen` 负责提交生成任务;视频等异步任务默认返回 `task_id`,这三个命令负责事后查询任务状态、列出历史任务、删除已完成任务。
9
+
10
+ ## 何时使用
11
+
12
+ - `gen get <task-id>` —— 已经有 `task_id`,想拿回任务的最新状态(含 `output_url` / `usage` / `error`)。**任务一旦 `succeeded`,`gen get` 会把产物自动下载到本地**(默认当前目录,文件名 `<task-id>.mp4`),跟 `+gen --wait` 的落地行为一致;`--save-to=""` 可关闭。
13
+ - `gen list` —— 列出当前账户下的异步任务,支持按 `status` / `model` / `service-tier` / `task-id` 过滤。
14
+ - `gen delete <task-id>` —— 删除一个已完成的任务记录。**破坏性写操作,不可逆;非交互场景必须带 `--yes`**
15
+ - `gen gallery list` —— 查看 `+gen` 自动归档的本地图片与磁盘占用。
16
+ - `gen gallery clean --older-than 168h --yes` / `gen gallery clean --all --yes` —— 清理本地 gallery。
17
+
18
+ ## 模态覆盖
19
+
20
+ 这三个命令背后的端点(SDK `arkruntime.ListContentGenerationTasks` / `GetContentGenerationTask` / `DeleteContentGenerationTask`)在服务端是 **modality-agnostic** 的:
21
+
22
+ - `+gen` 提交到视频生成能力模型或 Endpoint 后创建的任务
23
+ - 3D 任务(`seed-3d` 模型族)创建的任务
24
+ - 任何通过 `arkcli api arkruntime.create_content_generation_task` 提交的异步生成任务
25
+
26
+ 但**不包含图片任务**:图片生成走 `arkruntime.generate_images` 同步端点,没有 task list 概念。这里的同步/异步边界由结构化能力决定,不应通过模型品牌名前缀判断。
27
+
28
+ ## 命令速查
29
+
30
+ ```bash
31
+ # 1. 用 +gen 提交一个视频任务(默认异步,立即返回 task_id;要同步阻塞加 --wait --timeout 30m)
32
+ arkcli +gen "落日下的赛博朋克城市" --model <versioned-video-model-or-endpoint> --duration 5
33
+
34
+ # 2. 拿到 task_id 后单独按 ID 查询(不轮询,单次拉一下)
35
+ # 任务已 succeeded 时会自动把产物下载到当前目录(<task-id>.mp4)
36
+ arkcli gen get tsk_xxxxx
37
+
38
+ # 2b. 落到指定目录 / 禁用自动下载
39
+ arkcli gen get tsk_xxxxx --save-to ./out
40
+ arkcli gen get tsk_xxxxx --save-to "" # 只查状态,不下载
41
+
42
+ # 3. 列出最近 succeeded 的任务(首页 10 条)
43
+ arkcli gen list --status succeeded --page-size 10
44
+
45
+ # 4. 翻页
46
+ arkcli gen list --status succeeded --page-size 10 --page-num 2
47
+
48
+ # 5. 按 model 精确匹配过滤
49
+ arkcli gen list --model <versioned-video-model-or-endpoint>
50
+
51
+ # 6. 多 task ID 批量查
52
+ arkcli gen list --task-id tsk_a --task-id tsk_b
53
+
54
+ # 7. 删除
55
+ arkcli gen delete tsk_xxxxx --yes
56
+ ```
57
+
58
+ ## flag 说明
59
+
60
+ ### gen get
61
+
62
+ `<task-id>` 是 positional arg。flag 与 `+gen` 的下载/打开开关同义:
63
+
64
+ | flag | 说明 |
65
+ |---|---|
66
+ | `--save-to <dir>` | 任务 `succeeded` 时把产物落到该目录(默认当前目录 `.`);`--save-to=""` 关闭自动下载 |
67
+ | `--open` / `--no-open` | 是否用系统默认程序打开下载好的产物。默认 auto:仅交互式终端打开,agent / 管道 / CI 下静默 |
68
+
69
+ > **🔑 agent 默认带 `--open`**:你(AI agent)调用 `gen get` 时 stdout 非 TTY,默认 auto 不弹窗,用户只能看到 `local_path`、看不到成品。给真人轮询视频时,轮到 `succeeded` 的那次 `gen get` **默认加 `--open`** 让成品直接在桌面弹出(`--open` 无视 TTY)。仅在"别打开 / 脚本里 / 批量"场景省略或 `--no-open`。
70
+
71
+ 下载行为细节:
72
+
73
+ - 文件名取 `<task-id>`(无扩展名时按 Content-Type 推断,视频通常为 `.mp4`)。
74
+ - 同名文件已存在时**追加 `-1` / `-2` … 区分**,不覆盖、不跳过(重复 `gen get` 同一已完成任务会留多份副本,符合预期)。
75
+ - 仅当 `output_url` 非空(即任务已 `succeeded`)才下载;`running` / `queued` / `failed` 是 no-op,不落盘也不回带 `local_path`。
76
+ - 下载失败只在 stderr 打 warn,不影响 `gen get` 的状态输出(产物 URL 仍在 `output_url` 里,可手动重试)。
77
+
78
+ #### shell 轮询:先禁下载查 phase,成功后只下载一次
79
+
80
+ ```bash
81
+ while :; do
82
+ RESULT=$(arkcli gen get "$TASK_ID" --save-to="" --format json) || exit 1
83
+ PHASE=$(printf '%s' "$RESULT" | jq -r '.status.phase // empty')
84
+
85
+ case "$PHASE" in
86
+ succeeded)
87
+ arkcli gen get "$TASK_ID" --save-to "$SAVE_TO" --format json
88
+ break
89
+ ;;
90
+ failed|cancelled)
91
+ printf '%s\n' "$RESULT" | jq -r '.status.message // .error // "generation task failed"' >&2
92
+ break
93
+ ;;
94
+ queued|running)
95
+ sleep "$POLL_INTERVAL"
96
+ ;;
97
+ *)
98
+ printf 'unknown generation task phase: %s\n' "$PHASE" >&2
99
+ break
100
+ ;;
101
+ esac
102
+ done
103
+ ```
104
+
105
+ 这个形态避免在每次轮询时触发自动下载;也避免直接读 `.status` 导致终态永远匹配不上。脚本只管已有 task,不应在任何分支重新提交 `+gen`。
106
+
107
+ ### gen list
108
+
109
+ | flag | 说明 |
110
+ |---|---|
111
+ | `--page-num <int>` | 1-indexed 页号;不传则服务端默认 |
112
+ | `--page-size <int>` | 单页大小;不传则服务端默认 |
113
+ | `--status <enum>` | 过滤任务状态:`succeeded` / `failed` / `running` / `queued` / `cancelled` |
114
+ | `--model <id>` | 过滤模型名或 Endpoint ID(精确匹配,不是 prefix) |
115
+ | `--service-tier <tier>` | 过滤 service tier 设置 |
116
+ | `--task-id <id>` | 过滤特定 task ID;可重复传入多个 |
117
+
118
+ ### gen delete
119
+
120
+ `<task-id>` 是 positional arg。
121
+
122
+ | flag | 说明 |
123
+ |---|---|
124
+ | `--yes` | 跳过交互式二次确认。非交互场景必须传;不传时命令返回 `requires_confirmation` 并**不触达后端**。 |
125
+ | `--dry-run` | 只打印本地构造的请求 payload,不触达后端、不进入确认交互。 |
126
+
127
+ **交互确认**:
128
+ - **TTY 交互**:默认弹 Y/N 提示(`--yes` 可跳过)。
129
+ - **非交互 / Agent / CI**:agent 不可以默认加上 `--yes`,必须等待用户明确同意后才可以加上 `--yes`。
130
+
131
+ ## 输出形态
132
+
133
+ - `gen get` 复用 `+gen` 的 `VideoTask` 结构:`{id, model, status: {phase, message}, output_url, ratio, resolution, duration, ...}`;任务 `status.phase == "succeeded"` 且自动下载成功时额外回带 `local_path`(落盘的绝对路径,`--save-to=""` 或未 succeeded 时该字段缺省)。
134
+ - `gen list` 返回 `{total: <int>, items: [<item>, ...]}`;每个 `item` 是 SDK 列表 item 的原始 JSON 形态,**注意以下 3 处与 `gen get` 的差异**:
135
+ - 错误字段叫 `failure_reason`,不是 `error`
136
+ - **不含 `resolution` / `ratio` / `duration`**(要拿这些字段需要再调一次 `gen get`)
137
+ - `subdivisionlevel` / `fileformat` 这两个字段的 JSON key 是单词式(无下划线),SDK wire 真相
138
+ - `gen delete` 返回 `{id, deleted: true}`;服务端无响应体,这里是 arkcli 合成的。
139
+
140
+ ## 常见错误
141
+
142
+ | 现象 | 原因 |
143
+ |---|---|
144
+ | `gen get` / `gen delete` 报 `missing task id` | positional arg 没传 |
145
+ | `gen list` 返回空 `items[]` | filter 太严,或当前账户下确实没任务 |
146
+ | `gen get` 拿不到 `output_url` | 任务还在 `running` / `queued`;看 `status.phase` 字段 |
147
+ | 把图片任务返回的 ID 拿过来 `gen get` 报 not found | 图片走同步端点不是 task list,用法错位 |
148
+
149
+ ## 与 raw API 的关系
150
+
151
+ | 子命令 | 等价的 raw API |
152
+ |---|---|
153
+ | `gen get <id>` | `arkcli api arkruntime.get_content_generation_task --params '{"id":"<id>"}'` |
154
+ | `gen list ...` | `arkcli api arkruntime.list_content_generation_tasks --params '{"page_num":1,"filter":{...}}'` |
155
+ | `gen delete <id>` | `arkcli api arkruntime.delete_content_generation_task --params '{"id":"<id>"}'` |
156
+
157
+ ### gen gallery
158
+
159
+ `gen gallery` 只操作本地状态目录,不访问控制面:
160
+
161
+ ```bash
162
+ arkcli gen gallery list
163
+ arkcli gen gallery clean --older-than 168h --yes
164
+ arkcli gen gallery clean --all --yes
165
+ ```
166
+
167
+ | flag | 说明 |
168
+ |---|---|
169
+ | `--older-than <duration>` | 删除早于该时长的文件(Go duration,例如 `168h`;不支持 `30d`) |
170
+ | `--all` | 删除 gallery 内全部普通文件;必须与 `--older-than` 二选一 |
171
+ | `--yes` | 跳过交互确认;非交互场景必须显式传入 |
172
+
173
+ CLI 子命令是 raw API 的人类友好包装;命令更短、flag 更直观。raw API 仍然是兜底通道。
174
+
175
+ ## 与 `+gen` 的协作
176
+
177
+ - `+gen` 自身轮询超时时会回带 `task_id` 和提示 —— 用 `gen get <task-id>` 接着追,比重新跑 `+gen` 划算(重新跑会再创建一个新任务并扣一次配额)。轮询到 `succeeded` 的那次 `gen get` 会顺手把产物下载到本地,不必再手动 curl `output_url`。
178
+ - 异步提交(不带 `--wait`)+ `gen get` 轮询是视频的主流用法:`arkcli +gen ... --modality video` 拿到 `task_id` → 反复 `gen get <id>` 直到 `succeeded` → 产物自动落地。带 `--wait` 则是同步阻塞版,两条路径的落地行为一致——**但 `--wait` 有上限**:最多阻塞 `--timeout`(默认 10m),长视频请显式调大(如 `--timeout 30m`);撞上限时任务仍在跑,用 `gen get <task-id>` 接着轮询,**不要重跑 `+gen`**。
179
+ - `gen list` 可排查账号下有哪些历史任务,但当前列表项不保证返回可用于关联本轮请求的
180
+ name/prompt/content。提交后没有 `task_id` 时,把结果记为 `UNKNOWN` 并停止自动创建;可以查看
181
+ `gen list` 辅助人工调查,但“相同 model + 最近 status”不能据此唯一认领任务,也不能证明任务未创建。
182
+ 只有已经拿到明确 task ID,才进入 `gen get` 轮询;不要为了补 ID 重新执行收费的 `+gen`。