@volcengine/ark-cli-darwin-arm64 0.0.0-stage → 1.0.46-prerelease.2e2d76ea86c4
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/LICENSE +201 -0
- package/bin/arkcli-darwin-arm64 +4 -0
- package/manifest.json +37 -0
- package/package.json +20 -4
- package/skills/arkcli-agent/SKILL.md +197 -0
- package/skills/arkcli-agent/references/activation.md +23 -0
- package/skills/arkcli-agent/references/agent.md +442 -0
- package/skills/arkcli-agent/references/byok.md +74 -0
- package/skills/arkcli-agent/references/context-management.md +61 -0
- package/skills/arkcli-agent/references/debug-export.md +27 -0
- package/skills/arkcli-agent/references/dream.md +91 -0
- package/skills/arkcli-agent/references/evals.md +215 -0
- package/skills/arkcli-agent/references/events-chat.md +192 -0
- package/skills/arkcli-agent/references/interfaces-gaps.md +55 -0
- package/skills/arkcli-agent/references/mcp-vault.md +111 -0
- package/skills/arkcli-agent/references/model-config.md +46 -0
- package/skills/arkcli-agent/references/self-hosted.md +47 -0
- package/skills/arkcli-agent/references/session-files.md +157 -0
- package/skills/arkcli-agent/references/session-upgrade.md +64 -0
- package/skills/arkcli-agent/references/skills.md +94 -0
- package/skills/arkcli-agent/references/todo-write.md +37 -0
- package/skills/arkcli-agent/references/vision-agent.md +92 -0
- package/skills/arkcli-api-explorer/SKILL.md +114 -0
- package/skills/arkcli-api-explorer/references/arkcli-api.md +185 -0
- package/skills/arkcli-api-explorer/references/evals.md +92 -0
- package/skills/arkcli-auth/SKILL.md +127 -0
- package/skills/arkcli-auth/references/api-key-query.md +74 -0
- package/skills/arkcli-auth/references/arkcli-auth-init-volc.md +58 -0
- package/skills/arkcli-auth/references/arkcli-auth-login.md +125 -0
- package/skills/arkcli-auth/references/arkcli-auth-status.md +41 -0
- package/skills/arkcli-auth/references/arkcli-auth-whoami.md +128 -0
- package/skills/arkcli-auth/references/auth-modes.md +101 -0
- package/skills/arkcli-auth/references/identity-resolution.md +74 -0
- package/skills/arkcli-auth/references/realname-gate.md +23 -0
- package/skills/arkcli-auth/scripts/key-metadata.jq +34 -0
- package/skills/arkcli-billing/SKILL.md +105 -0
- package/skills/arkcli-billing/references/arkcli-billing-list.md +247 -0
- package/skills/arkcli-billing/references/evals.md +50 -0
- package/skills/arkcli-chat/SKILL.md +229 -0
- package/skills/arkcli-chat/references/arkcli-chat.md +300 -0
- package/skills/arkcli-chat/references/caching-thinking.md +138 -0
- package/skills/arkcli-chat/references/chat-meta.md +77 -0
- package/skills/arkcli-chat/references/evals.md +60 -0
- package/skills/arkcli-chat/references/stream-events.md +163 -0
- package/skills/arkcli-chat/references/text-format.md +160 -0
- package/skills/arkcli-chat/references/tools.md +130 -0
- package/skills/arkcli-code-example/SKILL.md +73 -0
- package/skills/arkcli-code-example/assets/demo-code/examples.json +14 -0
- package/skills/arkcli-code-example/assets/demo-code/go/main.go +53 -0
- package/skills/arkcli-code-example/assets/demo-code/python.py +26 -0
- package/skills/arkcli-code-example/references/arkcli-code-example.md +146 -0
- package/skills/arkcli-code-example/references/evals.md +12 -0
- package/skills/arkcli-config/SKILL.md +129 -0
- package/skills/arkcli-config/references/arkcli-config-init.md +49 -0
- package/skills/arkcli-config/references/arkcli-config-profile.md +54 -0
- package/skills/arkcli-config/references/evals.md +87 -0
- package/skills/arkcli-connect/SKILL.md +62 -0
- package/skills/arkcli-connect/references/arkcli-connect.md +129 -0
- package/skills/arkcli-connect/references/evals.md +117 -0
- package/skills/arkcli-custommodel/SKILL.md +177 -0
- package/skills/arkcli-custommodel/references/arkcli-custommodel-available-quantizations.md +28 -0
- package/skills/arkcli-custommodel/references/arkcli-custommodel-delete.md +36 -0
- package/skills/arkcli-custommodel/references/arkcli-custommodel-get.md +45 -0
- package/skills/arkcli-custommodel/references/arkcli-custommodel-list.md +72 -0
- package/skills/arkcli-custommodel/references/arkcli-custommodel-quantize.md +58 -0
- package/skills/arkcli-custommodel/references/arkcli-custommodel-update.md +47 -0
- package/skills/arkcli-custommodel/references/arkcli-custommodel-upload.md +60 -0
- package/skills/arkcli-custommodel/references/evals.md +58 -0
- package/skills/arkcli-datasets/SKILL.md +41 -0
- package/skills/arkcli-datasets/references/commands.md +91 -0
- package/skills/arkcli-datasets/references/evals.md +30 -0
- package/skills/arkcli-deploy/SKILL.md +128 -0
- package/skills/arkcli-deploy/references/arkcli-deploy.md +138 -0
- package/skills/arkcli-deploy/references/evals.md +117 -0
- package/skills/arkcli-docs/SKILL.md +232 -0
- package/skills/arkcli-docs/references/commands.md +225 -0
- package/skills/arkcli-docs/references/evals.md +200 -0
- package/skills/arkcli-docs/references/failure-modes.md +77 -0
- package/skills/arkcli-doctor/CONTRIBUTING.md +202 -0
- package/skills/arkcli-doctor/SKILL.md +302 -0
- package/skills/arkcli-doctor/references/error-codes.md +504 -0
- package/skills/arkcli-doctor/references/evals.md +70 -0
- package/skills/arkcli-doctor/references/scope-account.md +205 -0
- package/skills/arkcli-doctor/references/scope-cli.md +217 -0
- package/skills/arkcli-doctor/references/scope-infer-endpoint.md +214 -0
- package/skills/arkcli-doctor/references/scope-metrics.md +197 -0
- package/skills/arkcli-doctor/references/scope-model.md +241 -0
- package/skills/arkcli-doctor/references/scope-report.md +242 -0
- package/skills/arkcli-doctor/references/verify-origin.md +142 -0
- package/skills/arkcli-gen/SKILL.md +348 -0
- package/skills/arkcli-gen/references/arkcli-gen-audio.md +125 -0
- package/skills/arkcli-gen/references/arkcli-gen.md +297 -0
- package/skills/arkcli-gen/references/evals.md +93 -0
- package/skills/arkcli-gen/references/gen-meta.md +182 -0
- package/skills/arkcli-gen/references/image-stream.md +105 -0
- package/skills/arkcli-gen/references/intent-and-validation.md +177 -0
- package/skills/arkcli-helper/SKILL.md +233 -0
- package/skills/arkcli-helper/references/arkcli-helper.md +372 -0
- package/skills/arkcli-helper/references/evals.md +110 -0
- package/skills/arkcli-infer-endpoint/SKILL.md +141 -0
- package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-create.md +142 -0
- package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-delete.md +68 -0
- package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-get.md +60 -0
- package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-list.md +142 -0
- package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-start.md +34 -0
- package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-stop.md +34 -0
- package/skills/arkcli-infer-endpoint/references/arkcli-infer-endpoint-update.md +76 -0
- package/skills/arkcli-infer-endpoint/references/evals.md +24 -0
- package/skills/arkcli-models/SKILL.md +314 -0
- package/skills/arkcli-models/references/arkcli-models-activate.md +110 -0
- package/skills/arkcli-models/references/arkcli-models-get.md +100 -0
- package/skills/arkcli-models/references/arkcli-models-list.md +73 -0
- package/skills/arkcli-models/references/arkcli-models-performance.md +32 -0
- package/skills/arkcli-models/references/arkcli-models-scenario-table.md +83 -0
- package/skills/arkcli-models/references/arkcli-models-search.md +208 -0
- package/skills/arkcli-models/references/evals.md +88 -0
- package/skills/arkcli-onboard/SKILL.md +81 -0
- package/skills/arkcli-onboard/references/evals.md +107 -0
- package/skills/arkcli-plans/SKILL.md +208 -0
- package/skills/arkcli-plans/references/arkcli-plans-agreement-signing.md +74 -0
- package/skills/arkcli-plans/references/arkcli-plans-buy.md +209 -0
- package/skills/arkcli-plans/references/arkcli-plans-get.md +96 -0
- package/skills/arkcli-plans/references/arkcli-plans-harness-status.md +149 -0
- package/skills/arkcli-plans/references/arkcli-plans-model-apply.md +56 -0
- package/skills/arkcli-plans/references/arkcli-plans-model-list.md +119 -0
- package/skills/arkcli-plans/references/arkcli-plans-personal-rotate-apikey.md +83 -0
- package/skills/arkcli-plans/references/arkcli-plans-renew.md +134 -0
- package/skills/arkcli-plans/references/arkcli-plans-team-rotate-apikey.md +108 -0
- package/skills/arkcli-plans/references/arkcli-plans-team-seat-assign.md +142 -0
- package/skills/arkcli-plans/references/arkcli-plans-team-seat-list.md +115 -0
- package/skills/arkcli-plans/references/evals.md +224 -0
- package/skills/arkcli-pricing/SKILL.md +125 -0
- package/skills/arkcli-pricing/references/arkcli-pricing-models.md +260 -0
- package/skills/arkcli-pricing/references/arkcli-pricing-plans.md +147 -0
- package/skills/arkcli-profile/SKILL.md +188 -0
- package/skills/arkcli-profile/references/arkcli-profile-create.md +101 -0
- package/skills/arkcli-profile/references/arkcli-profile-keys.md +100 -0
- package/skills/arkcli-profile/references/arkcli-profile-set-default.md +81 -0
- package/skills/arkcli-profile/references/evals.md +5 -0
- package/skills/arkcli-resources/SKILL.md +122 -0
- package/skills/arkcli-resources/references/arkcli-resources-list.md +140 -0
- package/skills/arkcli-shared/SKILL.md +236 -0
- package/skills/arkcli-shared/references/execution-context.md +108 -0
- package/skills/arkcli-shared/references/global-flags.md +45 -0
- package/skills/arkcli-shared/references/profile-defaults.md +57 -0
- package/skills/arkcli-shared/references/troubleshooting.md +36 -0
- package/skills/arkcli-shared/references/update.md +72 -0
- package/skills/arkcli-train-finetune/SKILL.md +123 -0
- package/skills/arkcli-train-finetune/references/ark-finetune-sdk.md +133 -0
- package/skills/arkcli-train-finetune/references/create.md +262 -0
- package/skills/arkcli-train-finetune/references/download.md +44 -0
- package/skills/arkcli-train-finetune/references/evals.md +14 -0
- package/skills/arkcli-train-finetune/references/export-deploy.md +177 -0
- package/skills/arkcli-train-finetune/references/job-configuration.md +122 -0
- package/skills/arkcli-train-finetune/references/list.md +78 -0
- package/skills/arkcli-train-finetune/references/manage.md +128 -0
- package/skills/arkcli-train-finetune/references/rl-plugins.md +77 -0
- package/skills/arkcli-train-finetune/references/testing-debug-monitoring.md +137 -0
- package/skills/arkcli-understand/SKILL.md +131 -0
- package/skills/arkcli-understand/references/arkcli-understand-asr.md +53 -0
- package/skills/arkcli-understand/references/arkcli-understand.md +268 -0
- package/skills/arkcli-understand/references/evals.md +119 -0
- package/skills/arkcli-understand/references/sub-skills.md +141 -0
- package/skills/arkcli-usage/SKILL.md +166 -0
- package/skills/arkcli-usage/references/arkcli-usage-balance.md +217 -0
- package/skills/arkcli-usage/references/arkcli-usage-plan-details.md +136 -0
- package/skills/arkcli-usage/references/arkcli-usage-plan.md +166 -0
- package/skills/arkcli-usage/references/arkcli-usage-seats.md +194 -0
- package/skills/arkcli-usage/references/arkcli-usage-stats.md +195 -0
- package/skills/arkcli-usage/references/evals.md +30 -0
- package/README.md +0 -3
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# `arkcli doctor model`(单模型诊断)
|
|
2
|
+
|
|
3
|
+
> 这是 [`arkcli-doctor`](../SKILL.md) 的 **model domain reference**。当用户/Agent 拿到一个**模型名**(如 `doubao-pro-32k` / `doubao-seedance-1-0-pro`),问『这模型整体怎么样 / 限流是模型级还是接入点级 / 哪个 endpoint 把模型配额吃了 / 模型级 RPM/TPM 配额还有多少 / 生视频的排队压力 / 生视频生成耗时分布 / LLM 首 token 慢吗 / 模型在跨接入点维度上整体出错严重吗』时读这里。
|
|
4
|
+
>
|
|
5
|
+
> **CRITICAL — 开始前 MUST 先用 Read 工具读取**:
|
|
6
|
+
> - [`../../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md)(认证闸门、命令选择顺序)
|
|
7
|
+
> - [`../SKILL.md`](../SKILL.md)(doctor 总入口与路径决策表)
|
|
8
|
+
|
|
9
|
+
## 它解决什么
|
|
10
|
+
|
|
11
|
+
`arkcli doctor model <model-name>` 是把"这个模型在我账号下整体什么情况"答出来的命令——modality、endpoint 总数与状态、用量、错误率、模型级配额压力、按模态自适应的延迟与生成时长指标,一屏看清。**关键定位**:跨接入点的聚合视角,不是单 endpoint。
|
|
12
|
+
|
|
13
|
+
| 用户场景 | Agent 跑什么 |
|
|
14
|
+
|------------------------------------------------------|------------------------------------------------------------------------------|
|
|
15
|
+
| 「`doubao-pro-32k` 整体怎么样」 | `arkcli doctor model doubao-pro-32k` |
|
|
16
|
+
| 「我的生视频模型卡了」 | `arkcli doctor model <video-gen-name>`(重点看 queue_time + gen_time + 配额)|
|
|
17
|
+
| 「为什么模型报 `ContentRiskBlocked` / 大量 ModelAccessDenied」 | 同上 + 按 top error code 加载错误码 reference |
|
|
18
|
+
| 「seed-2.0 模型限流是多少 / 怎么提配额」 | `arkcli doctor model <name>` + 提配额引导 |
|
|
19
|
+
| 「哪个 endpoint 把这个模型的配额吃光了」 | `arkcli doctor model <name>` 看 top endpoint by usage |
|
|
20
|
+
| 「跨接入点对比错误情况」 | 同上看 top endpoint by error rate |
|
|
21
|
+
|
|
22
|
+
## 边界:不做什么
|
|
23
|
+
|
|
24
|
+
- 不替代单接入点级诊断("`ep-xxx` 为什么 429")—— 走 [`scope-infer-endpoint.md`](scope-infer-endpoint.md)
|
|
25
|
+
- 不替代单条请求 trace(暂无 request 粒度反查)
|
|
26
|
+
- 不读跨账号大盘 / 不跨账号横比
|
|
27
|
+
- 不替代用户 SLO 评价("50ms 算不算慢"由用户自己设 target)
|
|
28
|
+
- 不做效果评估和改进建议("我的模型效果如何 / 怎么改进"——本 reference 只看运行健康度)
|
|
29
|
+
|
|
30
|
+
## 第一步:跑诊断
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
arkcli doctor model <model-name>
|
|
34
|
+
# 自定义时间窗(默认 24h):
|
|
35
|
+
arkcli doctor model <model-name> --window 1h
|
|
36
|
+
# JSON 输出:
|
|
37
|
+
arkcli doctor model <model-name> --format json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
> 调用决策树(doctor 内部):
|
|
41
|
+
> ```
|
|
42
|
+
> model exists?
|
|
43
|
+
> ↓ no → fail,让用户检查模型名拼写或换 profile region
|
|
44
|
+
> ↓ yes → 拿到 modality(LLM / 生图 / 生视频 / ...)
|
|
45
|
+
> VMP preflight 通过?
|
|
46
|
+
> ↓ no → blocking_dependency.vmp.* → 引导 account scope 修 VMP 三段
|
|
47
|
+
> ↓ yes
|
|
48
|
+
> 查 VMP(按 modality 选 PromQL):
|
|
49
|
+
> 通用:error_count + count_total + qps_peak + tpm_peak (或 ipm_peak)
|
|
50
|
+
> modality-specific:见下表
|
|
51
|
+
> → doctor 侧算 error_rate + 配额压力 + top endpoint → 错误码 enrich + 输出
|
|
52
|
+
> ```
|
|
53
|
+
|
|
54
|
+
> 如果 VMP preflight 失败(doctor 输出 `error.blocking_dependency.vmp.*`),先去修账号级的 VMP 三段授权——由 `arkcli doctor account` 输出引导,配合 [`../../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md) / [`../../arkcli-auth/SKILL.md`](../../arkcli-auth/SKILL.md) 处理。VMP 没通的时候模型性能段拿不到数据。
|
|
55
|
+
|
|
56
|
+
## 第二步:读输出(6 段)
|
|
57
|
+
|
|
58
|
+
### ① 模型基础信息
|
|
59
|
+
|
|
60
|
+
| Check ID | 看什么 | 解读 |
|
|
61
|
+
|-------------------------|--------------------------------------|------------------------------------------------------------------|
|
|
62
|
+
| `model.exists` | 模型存在 + **modality 识别** | modality 决定后面看哪些专属指标——必读,没有这个其它都是无用功 |
|
|
63
|
+
| `model.source` | 平台基础模型 / 自传 / 精调 | 自传或精调(`cm-xxx`)走的代码路径与基础模型略有不同,问题排查时区分 |
|
|
64
|
+
|
|
65
|
+
> 不存在 → fail。让用户核对模型名(`arkcli models list` / `arkcli models custommodel list`)或换 profile region。
|
|
66
|
+
|
|
67
|
+
### ② 接入点分布
|
|
68
|
+
|
|
69
|
+
| Check ID | 看什么 |
|
|
70
|
+
|-----------------------------------------|--------------------------------------------------------------------------|
|
|
71
|
+
| `model.endpoint_total` | 当前模型下接入点总量 |
|
|
72
|
+
| `model.endpoint_state_distribution` | 状态分布占比:`Running` / `Failed` / `Pending` / ... |
|
|
73
|
+
| `model.top_endpoint_by_usage` | Top 5 接入点按调用次数排(用量"吃料"分析) |
|
|
74
|
+
| `model.top_endpoint_by_error_rate` | Top 5 接入点按错误率排(错误集中分析) |
|
|
75
|
+
|
|
76
|
+
**用 top endpoint 干嘛**:
|
|
77
|
+
|
|
78
|
+
- **用量集中**:一个 endpoint 占了模型用量 70%+ → 配额压力主要由它产生,提配额前看是否能客户端分流
|
|
79
|
+
- **错误集中**:一个 endpoint 错误率远高于其它 → 不是模型问题,是该 endpoint 的配置 / 上游问题,跳到 [`scope-infer-endpoint.md`](scope-infer-endpoint.md) 单查那个 ep
|
|
80
|
+
- **均匀分布**:所有 endpoint 错误率都高 → 模型级问题(账号未开通 / 模型配额撞顶 / 平台侧故障)
|
|
81
|
+
|
|
82
|
+
### ③ 用量统计
|
|
83
|
+
|
|
84
|
+
| Check ID | 看什么 |
|
|
85
|
+
|---------------------------|------------------------------------------------|
|
|
86
|
+
| `model.usage` | 调用次数 + token 用量(input / output 分开),1h 与 24h 双窗口 |
|
|
87
|
+
|
|
88
|
+
仅展示,不告警。但与配额压力(§⑤)、错误率(§④)联动判断"是不是真的需要提配额"。
|
|
89
|
+
|
|
90
|
+
### ④ 错误率与错误码分布
|
|
91
|
+
|
|
92
|
+
| Check ID | 看什么 |
|
|
93
|
+
|---------------------------|---------------------------------------------------------------------------|
|
|
94
|
+
| `model.error_rate` | 错误率(按模态分流,与 `quota_pressure` 同款思路;默认阈值 5% warn)。LLM (`base_model` 维度) / 生图 (`base_model` 维度,注意 `model_service_type` 是服务类型 i2i/t2v/r2v 等不是模型名) → `overall.rate_percent`;生视频 → `request.rate_percent`(CreateContentGenTask 调用,`ark_model` 维度)+ `task.rate_percent`(异步任务执行,`foundation_model_name` 维度,从成功率取 `1 - rate`)|
|
|
95
|
+
| `model.errors` | 错误码分布(按模态分流,与 `error_rate` 同款思路)。LLM/生图 → `errors.overall.by_error_code[]`(`code` + `http_status_code` 拆桶;LLM 用 `code` 标签,生图用 `volc_error_code`,统一成 `code` 字段);生视频 → `errors.task.by_error_code[]`(仅任务执行失败,无 `http_status_code` 维度,tmp.md 没给请求侧分布 PromQL) |
|
|
96
|
+
|
|
97
|
+
主导错误码 → 加载对应错误码 reference([`error-codes.md`](error-codes.md))。常见路由:
|
|
98
|
+
|
|
99
|
+
| 主导错误码 | 加载 |
|
|
100
|
+
|-----------------------------------------------|---------------------------------------------------------------------------------------------------------------------|
|
|
101
|
+
| `ModelAccessDenied` / `ModelNotOpen` / `AccessDenied` | [`error-codes.md` §1.2](error-codes.md#12-modelaccessdenied) |
|
|
102
|
+
| `RateLimitExceeded.*` / `ModelAccount{Rpm,Tpm,Ipm}…` | [`error-codes.md` §1.3](error-codes.md#13-ratelimitexceeded) |
|
|
103
|
+
| 生视频 `Output*SensitiveContentDetected*` | [`error-codes.md` §1.1.4 / §1.1.5](error-codes.md#11-生视频特有seedance) |
|
|
104
|
+
| 其它 | `arkcli doctor error <code>` 查表,按返回的 `subtype` 跳节 |
|
|
105
|
+
|
|
106
|
+
### ⑤ 模型级配额压力
|
|
107
|
+
|
|
108
|
+
| Check ID | 看什么 |
|
|
109
|
+
|-----------------------------------|------------------------------------------------------------------------------------|
|
|
110
|
+
| `model.account_quota_pressure` | 账号下该模型的 RPM / TPM / IPM 实际峰值 vs 配额上限 |
|
|
111
|
+
|
|
112
|
+
**阈值**(与 [`../SKILL.md`](../SKILL.md) "配额压力阈值"段一致):
|
|
113
|
+
|
|
114
|
+
| 占比 | severity | 表现 |
|
|
115
|
+
|-----------|----------|-------------------------------------|
|
|
116
|
+
| `≥95%` | fail | 已经/即将限流,立即提配额 |
|
|
117
|
+
| `≥80%` | warn | 高压,建议提配额或调流量分布 |
|
|
118
|
+
| `≥50%` | info | 健康但有空间 |
|
|
119
|
+
| `<50%` | pass | 充裕 |
|
|
120
|
+
|
|
121
|
+
**模型级 vs 接入点级判定**(与 §② top endpoint 联动):
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
模型级配额压力高(≥80%)?
|
|
125
|
+
├─ 是 ──► 哪些 endpoint 吃料?
|
|
126
|
+
│ ├─ 一两个 endpoint 占大头 → 客户端 sharding,把流量分给其它 endpoint;分不开再提配额
|
|
127
|
+
│ └─ 流量均匀 ──► 真的需要提配额
|
|
128
|
+
└─ 否 ──► 限流是单 endpoint 自己的事,跳到 doctor infer-endpoint 看那个 ep
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### ⑥ 模态专属指标(按 § ① modality 自适应)
|
|
132
|
+
|
|
133
|
+
doctor 拿到 modality 后追加专属 check 段。**首先看 § ① 的 modality 字段**,然后只关注那个模态的指标:
|
|
134
|
+
|
|
135
|
+
| Modality | 主指标 | 看什么 | 用于 |
|
|
136
|
+
|------------|----------------------------------------------------------------|---------------------------------------------------------|-----------------------------------------------|
|
|
137
|
+
| **LLM** | `model.ttft.{p50, p99}` | 首 token 延迟分位 | 流式对话 UX 核心 |
|
|
138
|
+
| | `model.tpot.{p50, p99}` | 每 token 延迟分位 | 长文输出体验 |
|
|
139
|
+
| **生图** | `model.gen_time.{avg, p99}` | 平均生成时间 / p99(无 TTFT/TPOT 概念) | 生图主指标——慢就是这个数大 |
|
|
140
|
+
| **生视频** | `model.queue_time.{avg, p99}` | 平均排队时长 / p99 | **生视频独有**:GPU/TPU 紧张时排队是主延迟 |
|
|
141
|
+
| | `model.gen_time.{avg, p99}` | 排队后实际生成耗时 | 与 queue_time 拼起来才是端到端 |
|
|
142
|
+
| | `model.video_duration_distribution` | 生成时长分布(5s / 10s / 30s 等) | 计费 + 业务行为画像 |
|
|
143
|
+
|
|
144
|
+
**怎么解读**:
|
|
145
|
+
|
|
146
|
+
- **LLM `ttft.p99` 慢**:通常与 QPS 同步上升 = 拥塞;与 QPS 无关的尖峰 = 上游 / 下游某次抖动;持续偏高 = 模型 / 版本变化
|
|
147
|
+
- **LLM `tpot.p99` 慢**:长文体验差,用户感觉"打字越来越慢"
|
|
148
|
+
- **生图 `gen_time.p99` 慢**:生成本身慢;看是否所有 endpoint 都慢(模型问题)还是个别 endpoint(resource starve)
|
|
149
|
+
- **生视频 `queue_time.p99` 高 + `gen_time.p99` 正常**:GPU 紧张,排队是主延迟。提配额或换时段
|
|
150
|
+
- **生视频 `gen_time.p99` 高但 `queue_time` 正常**:模型 / 输入复杂度变了(如分辨率提高 / 视频时长变长)
|
|
151
|
+
- **生视频 `video_duration_distribution`**:业务结构画像。30s 视频占比高 → 计费 + GPU 占用都重;可与用户讨论是否切短
|
|
152
|
+
|
|
153
|
+
> doctor 输出里如果某段缺失(比如 ttft / tpot 当前未提供),如实告诉用户该指标暂不可用,**不要假装能给数字**。
|
|
154
|
+
|
|
155
|
+
## 第三步:聚合 vs 原始时序(跨 endpoint 维度)
|
|
156
|
+
|
|
157
|
+
doctor 默认输出聚合统计值;底层是 VMP Prometheus 时序流,必要时拿原始时序做更深分析。**模型级**的原始时序与单 endpoint 的有差别——它聚合了所有 endpoint 的流量,能告诉你**跨 endpoint 的时间格局**。
|
|
158
|
+
|
|
159
|
+
> 当前 `doctor model` 只返回聚合结果,不提供原始时序切换参数。用户确实需要按时间点分析时,转到 [`scope-metrics.md`](scope-metrics.md) 核对具名查询或 raw 查询能力;不要承诺本命令会返回 `series.<metric>[]`。
|
|
160
|
+
|
|
161
|
+
### 决策规则
|
|
162
|
+
|
|
163
|
+
| 用户问什么 | 用哪种 | 原因 |
|
|
164
|
+
|--------------------------------------------------------|-------------------|--------------------------------------------------------------|
|
|
165
|
+
| 「模型整体怎么样」 | 聚合(默认) | 一个数判断"要不要进一步查" |
|
|
166
|
+
| 「错误是哪个时段集中爆发的」 | 原始时序 | 聚合把尖峰平均掉了 |
|
|
167
|
+
| 「`<endpoint>` 是从什么时候开始吃模型配额的」 | 原始时序(按 endpoint 维度) | 看具体 endpoint 流量曲线 vs 总量 |
|
|
168
|
+
| 「模型升级 / 切换流量后效果变化」 | 原始时序 | 与变更时间点对齐找因果 |
|
|
169
|
+
| 「业务高峰时段是什么时候 / 是否周期性」 | 原始时序 | 看曲线形状判断是否周期、是否需要提前扩容 |
|
|
170
|
+
|
|
171
|
+
### 跨 endpoint 时序模式 → 推断
|
|
172
|
+
|
|
173
|
+
| 模式 | 推断 |
|
|
174
|
+
|------------------------------------------------------------------------|------------------------------------------------------------------------------|
|
|
175
|
+
| 一个 endpoint 流量稳步上升、其它平稳 | 业务方有新功能上线带量;如果模型级配额因此撞顶,提前规划 |
|
|
176
|
+
| 多个 endpoint 同时段错误率上升 | 模型 / 平台侧问题(不是 endpoint 配置问题) |
|
|
177
|
+
| 一个 endpoint 错误率周期性高、其它正常 | 该 endpoint 的客户端有定时任务或异常重试 |
|
|
178
|
+
| `queue_time` 跨所有 endpoint 同步上升 | GPU 池资源紧张(所有 endpoint 共用);提配额或换时段 |
|
|
179
|
+
| `tpm_peak` 长期 50-70% 偶尔顶 95% | 业务有脉冲;副本数够但单副本会撞顶 |
|
|
180
|
+
|
|
181
|
+
> 给用户的输出里**不要直接贴一长串原始时序数据**。多模态 agent 应该消化时序后给一句结论性描述("错误集中在 14:05-14:08,主要由 endpoint `ep-xxx` 贡献"),并附前后聚合对比。
|
|
182
|
+
|
|
183
|
+
## 常见 Finding → 修复路径
|
|
184
|
+
|
|
185
|
+
| Finding | severity | 修复方向 |
|
|
186
|
+
|--------------------------------------------------------------------------|----------|------------------------------------------------------------------------------------------|
|
|
187
|
+
| 模型不存在 / `model.exists = fail` | fail | 让用户核对模型名 / profile region |
|
|
188
|
+
| 模型级 RPM/TPM/IPM ≥95% | fail | 见 [`error-codes.md` §1.3](error-codes.md#13-ratelimitexceeded) 修复 A:提配额 |
|
|
189
|
+
| 模型级配额 80-95% + 流量集中在 1-2 个 endpoint | warn | 客户端 sharding 分流;不必立即提配额 |
|
|
190
|
+
| 主导错误码 `ModelAccessDenied` | fail | 加载 [`error-codes.md` §1.2](error-codes.md#12-modelaccessdenied):账号未开通该模型 / 子账号缺权限 |
|
|
191
|
+
| 主导错误码 `ContentRiskBlocked` / `Output*SensitiveContentDetected*` | warn | 加载 [`error-codes.md` §1.1.x](error-codes.md#11-生视频特有seedance)(生视频专属) |
|
|
192
|
+
| 一个 endpoint 错误率远高于其它(>10x) | warn | 跳 [`scope-infer-endpoint.md`](scope-infer-endpoint.md) 单查那个 ep |
|
|
193
|
+
| 生视频 `queue_time.p99` 高 + `gen_time.p99` 正常 | warn | GPU 紧张:提配额或换时段;客户端可加重试退避 |
|
|
194
|
+
| 生视频 `gen_time.p99` 持续偏高 + 业务无变化 | info | 模型 / 版本变化或输入复杂度上升;与业务方核对近期 prompt / 视频时长是否调整 |
|
|
195
|
+
| LLM `ttft.p99` 持续偏高 | info | 当前未提供延迟指标时不要假装;如指标提供,看是否与 QPS 同步 |
|
|
196
|
+
|
|
197
|
+
## 给用户看的话术
|
|
198
|
+
|
|
199
|
+
读完输出后按以下顺序:
|
|
200
|
+
|
|
201
|
+
1. **整体结论一句话**:modality + 总用量 + 错误率水平 + 配额压力等级
|
|
202
|
+
2. **关键问题**:摘最关键的 finding(fail 优先;多 fail 按 error_code Top 排),并附**一条**已加载好的 error reference 里的修复方案
|
|
203
|
+
3. **跨 endpoint 上下文**:top endpoint by usage / by error rate 给一行——是不是某个 endpoint 主导了模型级问题
|
|
204
|
+
4. **下一步建议命令**:执行类(重新 deploy / `+gen` 重试)的命令**先给用户看、等确认**,不替按
|
|
205
|
+
|
|
206
|
+
## 安全与边界
|
|
207
|
+
|
|
208
|
+
- **只读优先**:`arkcli doctor model` 默认只读,不消耗推理 token、不重新发请求
|
|
209
|
+
- **修复路径由输出与 reference 给出**:例如提配额工单引导;doctor 进程不直接调 IAM / 改控制面
|
|
210
|
+
- **越权边界**:只读用户 AK/SK 能拿到的 Ark API + VMP 数据;不读平台内部 trace / 调度数据;不跨账号横比
|
|
211
|
+
|
|
212
|
+
## 何时 _不_ 用本 reference
|
|
213
|
+
|
|
214
|
+
- 单接入点报错 / 慢 / 状态异常 → [`scope-infer-endpoint.md`](scope-infer-endpoint.md)
|
|
215
|
+
- 账号级问题(实名 / 欠费 / IAM 策略 / VMP 三段)→ `arkcli doctor account` + [`../../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md)
|
|
216
|
+
- 想看用量明细(不带"为什么 / 异常"判断)→ [`../../arkcli-usage/SKILL.md`](../../arkcli-usage/SKILL.md)
|
|
217
|
+
- 想看模型基础元信息(参数 / 价格 / 支持参数)→ [`../../arkcli-models/SKILL.md`](../../arkcli-models/SKILL.md)(公共模型)
|
|
218
|
+
- 想给模型提升配额(明确意图 + 知道要多少)→ 直接走控制台工单流程;本 reference 只诊断 + 引导
|
|
219
|
+
|
|
220
|
+
## Seedance 2.x 效果问题上报路由
|
|
221
|
+
|
|
222
|
+
用户只描述 Seedance 2.x 效果问题,或**同时要求检查 / 诊断 / 排查 / 分析原因和上报**时,必须先完整执行本 `doctor model` 诊断,不能直接转 `doctor report`。诊断意图优先于上报意图;只有不含任何诊断诉求的纯上报请求才可能走 `scope-report.md` 的 Path B。诊断输出里的 `report_suggestion.model_supported=true` 只表明模型落在客户端已知的 seedance 2.x 家族前缀内(`doubao-seedance-2-*`),是**诊断后的发现提示**;家族内该具体版本是否受理、以及 task 的存在性 / 归属 / 完成状态 / 重复提交都由服务端校验(见 `reason` 字段)。是否询问用户由 agent 二次判定,按下面这张分流表来:
|
|
223
|
+
|
|
224
|
+
| 用户诉求 / 诊断信号 | 是否属于"效果类" | agent 行为 |
|
|
225
|
+
|--------------------------------------------------------------------------------|------------------|------------------------------------------------------------------|
|
|
226
|
+
| 角色 ID 漂移 / 字幕拼写错 / 水印 / 风格漂移 / 闪烁 / 拼接跳变 / 角色重复 / 音频尾部杂音 / 中文发音错 / 音色参考错 | ✅ 效果类 | **完成本次诊断后**一句话意向探询;用户明确同意才参数收集并跑 report |
|
|
227
|
+
| 视频生成失败 / task expired / 429 / ModelAccessDenied / ContentRiskBlocked / 用量高 / 错误率高 | ❌ 错误码 / 运行类 | **不要**提上报,按错误码分布 / [`error-codes.md`](error-codes.md) 处理 |
|
|
228
|
+
| 用户没有描述具体问题("看看这个模型") | 未知 | **不要**主动提上报,先看诊断输出再决定要不要追问 |
|
|
229
|
+
|
|
230
|
+
判定原则:**上报接口只处理"生成成功但效果差"的 case**——服务端 case-platform 会异步拉视频 / 输入帧做效果分析,对失败或不受支持模型的 task 会拒绝。所以诊断建议依赖**用户原始诉求 + doctor 输出的 error_rate / errors 分布**,而不是 `model_supported` 一个 bool;错误码路径与 badcase 路径互斥。
|
|
231
|
+
|
|
232
|
+
**分工原则**:Agent 层做**一句话意向探询 + 参数收集**(不做仪式感的重复确认),CLI 层弹**结构化 prompt** 做唯一决定性确认。**不要**替用户擅自上报,也不要伪造 task_id。上报流程、命令细节、11 个 badcase_type 枚举都在 [`scope-report.md`](scope-report.md)。
|
|
233
|
+
|
|
234
|
+
## 参考
|
|
235
|
+
|
|
236
|
+
- [`../SKILL.md`](../SKILL.md) — 总入口与路径决策
|
|
237
|
+
- [`scope-infer-endpoint.md`](scope-infer-endpoint.md) — 单接入点诊断(联动看具体 ep)
|
|
238
|
+
- [`scope-report.md`](scope-report.md) — seedance 2.x 效果问题上报(badcase report)
|
|
239
|
+
- [`error-codes.md`](error-codes.md) — 错误码总册(含 §1.2 ModelAccessDenied / §1.3 RateLimitExceeded / §1.1 生视频)
|
|
240
|
+
- [`../../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md) — 共享执行协议
|
|
241
|
+
- [`../../arkcli-models/SKILL.md`](../../arkcli-models/SKILL.md) — 模型元信息查询
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
# scope-report — Seedance 2.x 效果问题上报(badcase report)
|
|
2
|
+
|
|
3
|
+
> 这是 [`arkcli-doctor`](../SKILL.md) 的 **report scope reference**。只有两种情况读这里:① `doctor model` / `doctor infer-endpoint` 已返回 `report_suggestion`,确认是 Seedance 2.x 效果类问题,需要向用户询问是否上报;② 用户已经明确要求“直接上报 / 提交 badcase / 反馈到方舟”,**没有同时要求检查、诊断、排查或分析原因**,且上下文确认是 Seedance 2.x 效果类问题。**只描述效果差,或同时要求先诊断再上报时,不得直接进入本 scope,必须先走 model / infer-endpoint 诊断。**
|
|
4
|
+
>
|
|
5
|
+
> **CRITICAL — 开始前 MUST 先用 Read 工具读取**:
|
|
6
|
+
> - [`../../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md)(认证闸门、命令选择顺序)
|
|
7
|
+
> - [`../SKILL.md`](../SKILL.md)(doctor 总入口与路径决策表)
|
|
8
|
+
|
|
9
|
+
## 它解决什么
|
|
10
|
+
|
|
11
|
+
火山方舟 Seedance 2.x 家族(当前家族包括 `doubao-seedance-2-0-260128` / `doubao-seedance-2-0-fast-260128` 等已知版本,具体清单以服务端为准)在生视频时可能命中效果类问题:角色 ID 漂移、字幕生成错、水印、风格漂移、闪烁、拼接跳变、角色重复、音频尾部杂音、中文发音错、音色参考错等。方舟平台为这些**效果类问题**(不是错误码 / 生成失败)提供了**badcase 上报**接口,把 task_id 送到排障平台异步分析。
|
|
12
|
+
|
|
13
|
+
`arkcli doctor report` 就是这一步的执行入口。
|
|
14
|
+
|
|
15
|
+
| 用户场景 | Agent 跑什么 |
|
|
16
|
+
|----------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
|
|
17
|
+
| 「我这次 seedance 2.x 生成的视频角色脸变形了 / 字幕拼错了」 | **未明确说上报,不直达 report**;有模型名走 `doctor model`,有 ep-id 走 `doctor infer-endpoint` |
|
|
18
|
+
| 「先检查这次 seedance 2.x 字幕错的原因,再帮我上报」 | **诊断意图优先**;先走 `doctor model` / `doctor infer-endpoint`,完成后按 Path A 询问并上报 |
|
|
19
|
+
| 「帮我上报下这次 seedance 2.x 字幕错的 badcase / 提交到方舟」 | **明确上报**;确认家族 + 效果类门槛后,按 Path B 参数收集并直达 `doctor report` |
|
|
20
|
+
| 「刚跑完 doctor model seedance-2-0,看到 report_suggestion」 | 按 Path A 二次分流;确认是效果类后询问用户,用户同意才进入 `doctor report` |
|
|
21
|
+
| 「seedream-4-0 生图效果不对,能上报吗」 | ❌ **不属于本 reference** —— 只覆盖 seedance 2.x 家族视频,生图 / 1.x seedance 一律不能上报,转告用户 |
|
|
22
|
+
| 「seedance 生视频报了 60002 / 429 / expired」 | ❌ **不属于本 reference** —— 错误码类走 [`error-codes.md`](error-codes.md),不走 badcase 通道 |
|
|
23
|
+
|
|
24
|
+
> 边界:**只覆盖 Seedance 2.x 家族**(客户端按前缀 `doubao-seedance-2-` 匹配触发建议),家族内某个具体版本受不受理由服务端 60002 判定;家族外的 task 提交会被服务端 60002 拒绝。
|
|
25
|
+
|
|
26
|
+
## 触发条件
|
|
27
|
+
|
|
28
|
+
`doctor report` 只有以下两个合法入口。无论哪条入口,**执行 report 时都必须已经有用户明确的上报意图**:Path A 的意图来自诊断后的询问与用户确认;Path B 的意图来自用户原始请求。**诊断意图始终优先于上报意图**:用户同时要求“检查 / 诊断 / 排查 / 分析原因 / 看健康 / 看指标”和“上报”时,必须先走 Path A 的上游诊断,不得直达 Path B。
|
|
29
|
+
|
|
30
|
+
**Path A — 上游 doctor 诊断完成后的上报确认(保留 model / infer-endpoint 检查链路)**
|
|
31
|
+
|
|
32
|
+
跑 `arkcli doctor model doubao-seedance-2-0-260128` 或 `arkcli doctor infer-endpoint <ep-id>`(endpoint 关联的 model 命中 seedance 2.x 家族前缀)时,输出 JSON 里会浮出:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"report_suggestion": {
|
|
37
|
+
"model_supported": true,
|
|
38
|
+
"reason": "doubao-seedance-2-0-260128 落在 seedance 2.x 家族内, 可尝试 badcase 上报; 具体 task_id 是否可受理由服务端校验",
|
|
39
|
+
"model_name": "doubao-seedance-2-0-260128",
|
|
40
|
+
"supported_models": ["doubao-seedance-2-*"],
|
|
41
|
+
"docs": "https://www.volcengine.com/docs/82379/2389900",
|
|
42
|
+
"report_command": "arkcli doctor report --task-id <cgt-xxx> --feedback \"<问题现象描述>\" [--badcase-type <enum>]"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Path A **必须以真实执行过 model / infer-endpoint 诊断并拿到上述字段为前提**,不得根据用户一句“效果不好”自行虚构 `report_suggestion` 或跳过诊断。`model_supported=true` 只表示诊断到的模型落在客户端已知的 seedance 2.x 家族前缀内;`supported_models` 是 pattern 提示(如 `doubao-seedance-2-*`),**不是穷举白名单**;家族内某个具体版本是否受理、以及具体 `task_id` 的存在性 / 账号归属 / 完成状态 / 重复提交,**全部由服务端校验**(见 `reason` 字段)。**不得把 `model_supported=true` 解释成某个具体 task 已通过资格校验。** 是否建议上报仍由 agent 二次分流:
|
|
48
|
+
|
|
49
|
+
1. **判定问题类别**(agent 结合用户原始诉求 + 诊断输出的 error_rate / errors 分布)
|
|
50
|
+
- ✅ **效果类**:角色 ID 漂移 / 字幕生成错 / 水印 / 风格漂移 / 闪烁 / 拼接跳变 / 角色重复 / 音频尾部杂音 / 中文发音错 / 音色参考错 —— 走本 reference
|
|
51
|
+
- ❌ **错误码 / 运行类**:task 失败 / 429 / ModelAccessDenied / ContentRiskBlocked / expired / 状态异常 / 错误率高 —— 走 [`error-codes.md`](error-codes.md),**不要**提上报
|
|
52
|
+
- ❓ **未知**:用户没描述具体现象 —— 先看诊断输出,可以追问用户"是效果不对还是接口报错",**不要**主动提上报
|
|
53
|
+
|
|
54
|
+
2. **判定为效果类后,用一句话告知用户此通道**(意向探询,不是仪式感的确认门):
|
|
55
|
+
|
|
56
|
+
> "这类效果类问题可以上报到方舟让排障团队分析,需要我帮你上报吗?"
|
|
57
|
+
|
|
58
|
+
用户表达意向后即可进入下一步;如果用户没兴趣说"算了",自然结束。**不要**在这一步做仪式感的"确认要上报吗 [y/N]"式反复追问 —— 决定性确认由 CLI 层完成。
|
|
59
|
+
|
|
60
|
+
3. **进入参数收集**(自然对话,不算确认):agent 从用户上下文里做**参数意图识别**(见下方"参数意图识别契约"段),能识别到的字段直接带上;必填字段(task_id / feedback)识别不到才向用户追问,可选字段识别不到就**不带**、**不问**。参数齐后**告知用户即将执行的命令**(预告,让用户知道 CLI 还会弹一次结构化确认让他核对参数),然后直接跑 `arkcli doctor report`。
|
|
61
|
+
|
|
62
|
+
4. **CLI 层弹出结构化确认**(唯一决定性确认):CLI 会打印合规声明 + 本次实际外发的参数列表 + 是否上报?[y/N],由**用户点头**才真发请求。**Agent 不需要模拟或预知 CLI 输出**——拼好命令跑就行,实际文案见运行结果。**不要**替用户擅自上报,也不要伪造 task_id。
|
|
63
|
+
|
|
64
|
+
> 为什么把决策集中到 CLI 层:case-platform 只处理"生成成功但效果差"的 case,服务端会异步拉视频 / 输入帧做效果分析。对失败 task(task 未 completed)上报会被 40004 拒;对非 seedance 2.0 会被 60002 拒。错误码 / 运行类问题走上报是浪费用户时间。Agent 层做一次意向探询 + 参数收集,让 CLI 结构化 prompt 承担唯一决定性确认,避免重复问同一个问题。
|
|
65
|
+
|
|
66
|
+
**Path B — 用户只要求直接上报且没有诊断意图(唯一允许跳过 model / infer-endpoint 诊断的直达路径)**
|
|
67
|
+
|
|
68
|
+
用户直接说"这次 seedance 2.0 效果不对,帮我上报"、"提个 badcase"、"上报到方舟",且没有要求先检查、诊断、排查或分析原因时,才可能进入 Path B。若用户说“先检查为什么字幕错并上报”或任何同义混合请求,必须先走 `doctor model` / `doctor infer-endpoint`,完成诊断后按 Path A 处理。进入 Path B 后,agent **不能只凭意图关键词就抽参数跑命令**;必须先从对话上下文里确认两个门槛条件,缺哪个哪个追问,明显不符合的直接拒绝并转告边界:
|
|
69
|
+
|
|
70
|
+
1. **家族门槛 —— 模型是 seedance 2.x 家族**(`doubao-seedance-2-*` 前缀,含 fast 变体):
|
|
71
|
+
- 用户明说 seedance 2.x / 2.0 / 2.1 / `doubao-seedance-2-*` 系列模型 → 门槛过
|
|
72
|
+
- 用户没提模型 / 只给 task_id → **追问**:"这个 task 是哪个模型跑的?(本通道只覆盖 seedance 2.x 家族)"
|
|
73
|
+
- 用户明说 1.x / seedream / 其他视频模型 → **拒绝**:"这条通道只覆盖 seedance 2.x 家族视频;你这个是 xxx,走 `arkcli doctor model` / 反馈原路径"
|
|
74
|
+
2. **效果类门槛 —— 问题是效果类**(角色漂移 / 字幕错 / 水印 / 风格漂移 / 闪烁 / 拼接跳变 / 角色重复 / 音频尾部杂音 / 中文发音错 / 音色参考错等):
|
|
75
|
+
- 用户描述里明显是效果类现象 → 门槛过
|
|
76
|
+
- 用户没描述具体现象 / 只说"上报 badcase" → **追问**:"具体是效果不对(比如角色变形、字幕拼错)还是接口报错(比如 429 / task expired)?"
|
|
77
|
+
- 用户描述是错误码 / 运行类(生成失败 / 429 / expired / ContentRiskBlocked 等) → **拒绝**:"错误码类不走 badcase 通道,请走 `arkcli doctor error <code>` 或 [`error-codes.md`](error-codes.md)"
|
|
78
|
+
|
|
79
|
+
两个门槛都过后,才进入下方"参数意图识别契约"抽 task_id + feedback + 可选字段,跑 `arkcli doctor report`。**agent 不能靠"上报"关键词单独触发** —— 意图 + 家族 + 效果类三个信号都得凑齐,缺哪个追问哪个,明显不符的直接拒绝转告。
|
|
80
|
+
|
|
81
|
+
> 为什么不再"信任意图直接提交": 之前设计相信"服务端 60002 兜底"就够, 但会把用户带进"我要上报 → 提交 → 被 60002 拒 → 才知道通道不覆盖"的绕行, 浪费一次交互。前置两门槛让 agent 提前告知用户边界, 用户少走弯路。同时 CLI 层不做客户端家族闸门 —— 门槛只在 agent 层, 服务端仍是最终权威。
|
|
82
|
+
|
|
83
|
+
## 参数意图识别契约
|
|
84
|
+
|
|
85
|
+
Agent 应从用户自然语言 / 命令上下文里对 **6 个 CLI 参数**全部做意图识别,识别到就带上;用户明确指定了值(直接写 flag 或明确说"用 xxx")以用户为准。缺失时按下表处理:
|
|
86
|
+
|
|
87
|
+
| CLI flag | 必填? | 用户可能的表达 | 未识别到时的行为 |
|
|
88
|
+
|----------|-------|---------------|-----------------|
|
|
89
|
+
| `--task-id` | **是** | `cgt-*` 格式 id、"任务 id 是 xxx"、"这次生成的 task"(从对话历史里的 `+gen` / `gen list` 输出提取) | **询问用户**:"能给我这次生成的 task_id 吗?可以从 `arkcli gen list` 拿" |
|
|
90
|
+
| `--feedback` | **是** | 用户对现象的描述("主角脸变形"、"字幕拼错"、"续写接缝跳变")—— 直接摘用户原话 | **询问用户**:"能描述下具体是哪里效果不对吗?" |
|
|
91
|
+
| `--badcase-type` | 否 | 用户明说"这是角色漂移" / 或 agent 从 feedback 推断出某个枚举 | 不追问;如推断出候选枚举可**主动推荐 + 等用户确认**再带上 |
|
|
92
|
+
| `--contact-info` | 否 | "留邮箱 xxx@yy"、"回访电话 138xxx"、"联系方式 xxx"—— **只在用户主动提供时提取** | **绝不主动问**(PII,避免过度收集) |
|
|
93
|
+
| `--source` | 否 | 用户明说"来源 huoshan / huosu / qianzhi / case_import" | 不追问,走服务端默认 |
|
|
94
|
+
| `--account-id` | 否 | 用户明说"上报到 account xxx"(罕见) | 不追问,Bearer 路径服务端自动反查 |
|
|
95
|
+
|
|
96
|
+
**核心原则**:
|
|
97
|
+
|
|
98
|
+
- **必填缺失 → 主动追问**(不能编、不能猜、不能跳过)
|
|
99
|
+
- **可选缺失 → 不带、不问**(不做过度收集,尤其 PII)
|
|
100
|
+
- **用户明确指定 → 以用户为准**(不要 agent 覆盖或"修正"用户传的值,比如用户说 `--source huoshan`,就用 huoshan,不要改成 case_import)
|
|
101
|
+
- **带上的可选字段 → CLI confirm prompt 会展示**(视觉透明,让用户知道所有外发内容)
|
|
102
|
+
|
|
103
|
+
## 命令用法
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
arkcli doctor report \
|
|
107
|
+
--task-id cgt-20260501132104-tfm9v \ # 必填, 1-50 个, 可 --task-id 多次或用逗号 / 空格 / 换行分隔
|
|
108
|
+
--feedback "人物手部扭曲, 且嘴型和中文配音对不上" \ # 必填, 1-2000 字符
|
|
109
|
+
--badcase-type character_id_drift \ # 可选, 见下方枚举
|
|
110
|
+
--contact-info "user@example.com" \ # 可选, 联系方式, ≤255 字符
|
|
111
|
+
--source case_import # 可选, 默认 case_import
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
`--dry-run` 会打印完整请求预览而不真正上报——排查参数拼写的推荐方式。
|
|
115
|
+
|
|
116
|
+
## `--badcase-type` 枚举(可选,但强烈建议填)
|
|
117
|
+
|
|
118
|
+
| 枚举值 | 中文含义 | 典型现象 |
|
|
119
|
+
|--------|----------|----------|
|
|
120
|
+
| `character_id_drift` | 角色 ID 漂移 | 主角脸/身份在片子里逐渐变形,或跟输入图不一致 |
|
|
121
|
+
| `subtitle_generation_error` | 字幕生成错误 | 视频里自动生成的字幕拼写、格式、位置有问题 |
|
|
122
|
+
| `logo_watermark_generated` | 生成 logo / 水印 | 画面里冒出了不该有的品牌 logo、水印 |
|
|
123
|
+
| `style_drift` | 风格漂移 | 前后帧的画风、色调、光影出现明显跳变 |
|
|
124
|
+
| `regular_flickering` | 规律性闪烁 | 出现规律的闪烁、明暗跳变 |
|
|
125
|
+
| `extended_video_joint_jump` | 续写视频接缝跳变 | 使用视频续写能力时接缝处画面跳变 |
|
|
126
|
+
| `duplicate_character_appearance` | 角色重复出现 | 同一角色在同一帧出现多次 |
|
|
127
|
+
| `audio_end_noise` | 尾部音频杂音 | 音频结尾出现杂音 / 爆音 / 静默 |
|
|
128
|
+
| `chinese_pronunciation_error` | 中文发音错误 | 生成的中文语音发音有误 |
|
|
129
|
+
| `voice_tone_reference_error` | 音色参考错误 | 生成音色与参考音频不符 |
|
|
130
|
+
| `other` | 其他 | 上述都不适用 |
|
|
131
|
+
|
|
132
|
+
**Agent 应主动帮用户匹配**:读到 feedback 描述后可以推荐一个 `--badcase-type`,但**要等用户确认**才加上。
|
|
133
|
+
|
|
134
|
+
## 鉴权
|
|
135
|
+
|
|
136
|
+
**只支持 Ark API Key (Bearer) 鉴权**。
|
|
137
|
+
|
|
138
|
+
- 缺 API Key 时命令会明确报错并引导 `arkcli auth apikey`。
|
|
139
|
+
- 不需要子账号挂 `CasePlatformAccess` 策略(那是 AKSK 路径的要求,一期不做)。
|
|
140
|
+
- API Key 只负责 Bearer 鉴权,不能代替 project scope。`ProjectName` 由 transport
|
|
141
|
+
从当前 profile 解析,作为 URL query 公共参数发送;
|
|
142
|
+
**绝不能放进 JSON body**,否则 CasePlatform 的 Pydantic `extra_forbid` 校验会拒绝。
|
|
143
|
+
- 当前 scope 是「账号全部资源」时省略 `ProjectName`;具体 project(包括
|
|
144
|
+
`default`)按 query 发送。业务 service 不读、不保存 project。
|
|
145
|
+
|
|
146
|
+
## 二次确认门(HeadlessConfirm)
|
|
147
|
+
|
|
148
|
+
上报会导致方舟平台异步拉取视频 / 输入帧用于排障——属于**用户数据外发**,走高危二次确认门:
|
|
149
|
+
|
|
150
|
+
- **TTY 交互**:默认弹 Y/N 提示(`--yes` 可跳过)。
|
|
151
|
+
- **非交互 / Agent / CI**:`--yes` 被无视,必须显式设 `ARKCLI_ALLOW_HEADLESS_REPORT=1` 才放行。这是 arkcli 对**用户数据外发类操作**的通用护栏(参考 delete / open service 同款做法),防止 agent 反射性静默上报。
|
|
152
|
+
|
|
153
|
+
Agent 在 headless 环境下**必须先展示 prompt 内容给用户确认**再设 env,不要自作主张把 env 塞进 shell。
|
|
154
|
+
|
|
155
|
+
## 服务端错误码翻译(`arkcli doctor report` 自带 hint)
|
|
156
|
+
|
|
157
|
+
| Code | 含义 | 处理 |
|
|
158
|
+
|------|------|------|
|
|
159
|
+
| `40002` | task_id 不存在或不属于当前账号 | 确认 task_id 拼写 + 当前 profile 与 task 所属账号一致 |
|
|
160
|
+
| `40003` | task_id 已经上报过 badcase | 不要重复上报 |
|
|
161
|
+
| `40004` | task 仍在生成中 | 等任务 completed 后再来 |
|
|
162
|
+
| `40005` | 单请求内重复 task_id | 去重 |
|
|
163
|
+
| `60002` | 不在 seedance 2.x 上报支持范围内 | 覆盖方舟 Seedance 2.x 家族的部分版本;具体清单以服务端为准,文档 `https://www.volcengine.com/docs/82379/2389900` |
|
|
164
|
+
| `60003` | 请求 ModelId 与 task_id 反查模型不一致 | 检查 task_id 是否对应 seedance 2.x 家族的正确版本 |
|
|
165
|
+
| `40006` | AccountId 缺失(AKSK 路径) | Bearer 路径不会撞这个;撞了说明 APIKey 未生效 |
|
|
166
|
+
| `40007-40011` | 各种字段前置校验 | 按 hint 补齐 |
|
|
167
|
+
|
|
168
|
+
## Output schema
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"submission_id": "badcase-sub-...",
|
|
173
|
+
"total": 2,
|
|
174
|
+
"accepted": [
|
|
175
|
+
{"task_id": "cgt-a", "case_id": "instance-...", "message": "Success"}
|
|
176
|
+
],
|
|
177
|
+
"rejected": [
|
|
178
|
+
{"task_id": "cgt-b", "code": "40003", "reason": "task_id 已经提交过 badcase", "hint": "..."}
|
|
179
|
+
],
|
|
180
|
+
"processing_hint": "case 已进入 processing 状态; 后台异步转存视频与输入帧, 完成后 case 翻成 completed",
|
|
181
|
+
"request_id": "..."
|
|
182
|
+
}
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Agent 拿到之后应把 `accepted` 的 case_id 展示给用户,`rejected` 里的每条把 `reason` + `hint` 展示(不用重复原始错误码)。
|
|
186
|
+
|
|
187
|
+
## 反例(不要做)
|
|
188
|
+
|
|
189
|
+
- ❌ 用户只描述 Seedance 2.x 字幕错 / 角色漂移等效果问题,Agent 跳过 `doctor model` / `doctor infer-endpoint` 直接跑 report。**不能**;用户未明确说要上报时必须先诊断。
|
|
190
|
+
- ❌ 用户说“先检查 / 诊断 / 排查这个 Seedance 2.x 效果问题并上报”,Agent 因为看见“上报”就直达 report。**不能**;混合意图必须先完成 `doctor model` / `doctor infer-endpoint`,再按 Path A 询问并上报。
|
|
191
|
+
- ❌ Agent 读到 `report_suggestion` 后不询问用户,直接跑 report。**不能**;Path A 必须等用户明确同意上报。
|
|
192
|
+
- ❌ 用户没说要上报、Agent 也没读到真实诊断返回的 `report_suggestion` → 主动跑 report。**不能**。
|
|
193
|
+
- ❌ 用户只说"帮我上报 badcase"但没提模型 / 没描述现象 → agent 直接抽 task_id 就跑命令。**不能**,Path B 有家族门槛和效果类门槛,缺哪个追问哪个,不许无脑靠意图关键词触发。
|
|
194
|
+
- ❌ 用户明说是 1.x / seedream / 其他视频模型 → 硬走上报路径想让服务端 60002 兜底。**不能**,agent 层就要拒绝并转告边界,不要浪费用户一次交互。
|
|
195
|
+
- ❌ 把 `model_supported=true` 当作具体 task 已通过资格校验 → 它只表示模型落在家族前缀内;具体 task 必须由 report 服务端校验。
|
|
196
|
+
- ❌ **在 agent 层做一次"确认要上报吗 [y/N]"式仪式门,跑 CLI 后用户又被 CLI 层弹的 prompt 问一次相同的事** → 两次问同一个问题冗余。Agent 层只做一句话意向探询 + 参数收集,决定性确认交给 CLI 层的结构化 prompt。
|
|
197
|
+
- ❌ 用户反馈"生成失败 / 报错 / task expired / 429" → agent 建议上报 badcase。**不能**,那是运行类问题,服务端 40004 / 60002 会拒;错误码类走 error / doctor error 路径。
|
|
198
|
+
- ❌ 用户 task_id 不清楚 → agent 编一个 fake 走 dry-run 之外的路径。**不能**。
|
|
199
|
+
- ❌ 必填参数(task_id / feedback)缺失时**不追问**、瞎猜 / 编 / 用占位符跑命令。**必填未识别到 MUST 询问用户**。
|
|
200
|
+
- ❌ **主动询问用户 contact-info**("给我你的邮箱吧") → 违反过度收集原则。仅在用户主动提供联系方式时才提取并带上。
|
|
201
|
+
- ❌ 用户明确说"用 `--source huoshan`" agent 又擅自改成 case_import。**以用户为准**。
|
|
202
|
+
- ❌ 用 1.x 或 seedance 家族外的 task_id 提交,然后忽略 60002 拒绝。**要转告用户**。家族前缀匹配只是发现提示,具体 task 由服务端判。
|
|
203
|
+
- ❌ headless 环境替用户静默设 `ARKCLI_ALLOW_HEADLESS_REPORT=1`。**不能**,先向用户展示要上报的内容。
|
|
204
|
+
|
|
205
|
+
## 给用户看的话术
|
|
206
|
+
|
|
207
|
+
Agent 拿到 `arkcli doctor report` 输出后按以下模板回信,**不复述完整 JSON、不重复原始错误码**:
|
|
208
|
+
|
|
209
|
+
1. **全部 accepted**(happy path):
|
|
210
|
+
> "已上报,方舟排障平台会异步分析。case_id:`instance-xxx`(可留作后续跟进)。分析完成后 case 会翻到 completed。"
|
|
211
|
+
|
|
212
|
+
2. **部分 accepted / 部分 rejected**:
|
|
213
|
+
- 先说 accepted 的 case_id
|
|
214
|
+
- 逐条说 rejected:`task_id + reason + hint`(hint 已由 CLI 翻译成人类可读中文,直接展示)
|
|
215
|
+
> "上报了 3 个 task:`cgt-a` 已受理(case_id: instance-1);`cgt-b` 被拒——已经上报过 badcase,不用重复提;`cgt-c` 被拒——task 还在生成中,等 completed 后再上报。"
|
|
216
|
+
|
|
217
|
+
3. **全部 rejected**:
|
|
218
|
+
> "全部被拒。原因:"逐条列 `reason + hint`;给出下一步(等 completed / 换正确 task_id / 别重复上报)。
|
|
219
|
+
|
|
220
|
+
4. **未定案 case**(Accepted 里 `processing_hint` 非空):
|
|
221
|
+
- 转告 processing 语义:"case 已进入 processing 状态,后台异步转存视频与输入帧,完成后翻成 completed"
|
|
222
|
+
- **不承诺**具体完成时间
|
|
223
|
+
|
|
224
|
+
**触发上报前**(Path A 意向探询后 / Path B 参数收集完成后)也有话术:
|
|
225
|
+
- Path A 意向探询:"这类效果类问题可以上报到方舟让排障团队分析,需要我帮你上报吗?"
|
|
226
|
+
- 参数缺失追问:见"参数意图识别契约"表最后一列
|
|
227
|
+
|
|
228
|
+
## 何时 _不_ 用本 reference
|
|
229
|
+
|
|
230
|
+
- 用户跑的是 **seedream / 1.x seedance / 其他生视频模型** 的 task → **不支持上报**,直接转告用户并转 [`scope-model.md`](scope-model.md) 或 [`error-codes.md`](error-codes.md)
|
|
231
|
+
- 用户反馈是 **task 生成失败 / expired / 429 / ContentRiskBlocked / ModelAccessDenied** → 错误码 / 运行类问题,走 [`error-codes.md`](error-codes.md) 或 `doctor error <code>`
|
|
232
|
+
- 用户想看**模型整体健康度 / 错误率分布 / 用量** → [`scope-model.md`](scope-model.md)
|
|
233
|
+
- 用户想看**单接入点状态 / 用量 / 配额** → [`scope-infer-endpoint.md`](scope-infer-endpoint.md)
|
|
234
|
+
- 用户想**看视频结果 / 下载 mp4 / 查任务状态** → 不是诊断问题,走 `arkcli gen get <task_id>` / `arkcli gen list`
|
|
235
|
+
- 用户问 **`--contact-info` / API Key 是什么** → 认证类走 [`../../arkcli-auth/SKILL.md`](../../arkcli-auth/SKILL.md)
|
|
236
|
+
|
|
237
|
+
## 参考
|
|
238
|
+
|
|
239
|
+
- 接口文档:[火山方舟 CasePlatformV1BadcaseReport](https://www.volcengine.com/docs/82379/2389900)
|
|
240
|
+
- 上级:[`../SKILL.md`](../SKILL.md)
|
|
241
|
+
- 相邻 domain:[`scope-model.md`](scope-model.md)(`doctor model` 会输出 `report_suggestion` 触发本 domain)
|
|
242
|
+
- 相邻 domain:[`scope-infer-endpoint.md`](scope-infer-endpoint.md)(`doctor infer-endpoint` 同样会触发)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Ark 产物来源特征验证
|
|
2
|
+
|
|
3
|
+
## 1. 能力边界
|
|
4
|
+
|
|
5
|
+
命令:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
arkcli doctor +verify-origin <media-url> [media-url...] --format json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
用于验证 1-20 个公网图片或视频 URL 是否包含与 Ark 生成过程相关的技术特征。
|
|
12
|
+
|
|
13
|
+
它不能:
|
|
14
|
+
|
|
15
|
+
- 判断媒体内容是否真实、是否是假新闻;
|
|
16
|
+
- 判断版权、权属或法律责任;
|
|
17
|
+
- 构成官方认证、法律鉴定或权属认定;
|
|
18
|
+
- 判断内容安全、合规、画质或播放质量。
|
|
19
|
+
|
|
20
|
+
## 2. 输入与批量约束
|
|
21
|
+
|
|
22
|
+
- 一次输入 1-20 个 `http://` 或 `https://` URL;
|
|
23
|
+
- 图片和视频可在同一批中出现;
|
|
24
|
+
- 必须一次调用把整批 URL 交给 CLI;
|
|
25
|
+
- 禁止为每个 URL 分别启动 `arkcli`;
|
|
26
|
+
- 禁止使用 shell `for` 循环;
|
|
27
|
+
- 禁止直接调用 `CreateArkOfficialResultQuery` 或 `GetArkOfficialResult` Raw Action;
|
|
28
|
+
- 禁止 Agent 自己轮询。
|
|
29
|
+
|
|
30
|
+
超过 20 个 URL 时,把它们拆成多批,并且每一批都必须独立完成费用披露与确认。
|
|
31
|
+
|
|
32
|
+
## 3. 整批一次确认
|
|
33
|
+
|
|
34
|
+
首次调用不带 `--yes`:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
arkcli doctor +verify-origin \
|
|
38
|
+
"https://example.com/a.mp4" \
|
|
39
|
+
"https://example.com/b.png" \
|
|
40
|
+
--format json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
该调用必须:
|
|
44
|
+
|
|
45
|
+
- 不获取产物验证 invoker 或 STS;
|
|
46
|
+
- 不调用 Create;
|
|
47
|
+
- 不调用 Get;
|
|
48
|
+
- 返回一份覆盖整批的价格、数量与限额披露。
|
|
49
|
+
|
|
50
|
+
Agent 必须完整展示披露,然后等待用户在看到披露后明确确认。用户确认后,对原命令只追加一次 `--yes`:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
arkcli doctor +verify-origin \
|
|
54
|
+
"https://example.com/a.mp4" \
|
|
55
|
+
"https://example.com/b.png" \
|
|
56
|
+
--yes \
|
|
57
|
+
--format json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
这一个 `--yes` 覆盖当前批次中的全部 URL。禁止逐 URL 确认,禁止弹出 20 次确认。
|
|
61
|
+
|
|
62
|
+
计费事实:
|
|
63
|
+
|
|
64
|
+
- 每账号提供 20 次免费额度,但 CLI 不知道当前剩余额度;
|
|
65
|
+
- 免费额度用尽后 `0.1 CNY/call`;
|
|
66
|
+
- 成功得到 `True`、`False` 或 `Null` 都计费;
|
|
67
|
+
- 鉴权或限流失败不计费;
|
|
68
|
+
- 单日上限 1000 次;
|
|
69
|
+
- Create 与 Get 均按目标态 20 QPS 设计。
|
|
70
|
+
|
|
71
|
+
## 4. 执行与恢复
|
|
72
|
+
|
|
73
|
+
CLI 对每个 URL:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
CreateArkOfficialResultQuery
|
|
77
|
+
-> Result.QueryID
|
|
78
|
+
-> 每 5 秒 GetArkOfficialResult
|
|
79
|
+
-> running 继续
|
|
80
|
+
-> succeeded / failed 结束
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
每个 URL 最多 Create 一次。Create 超时不能证明服务端没有创建,因此 CLI 不自动重试 Create。
|
|
84
|
+
|
|
85
|
+
Get 发生可重试限流或临时服务错误时,只能保留同一个 QueryID 重试 Get,绝不能回到 Create。
|
|
86
|
+
|
|
87
|
+
如果命令中断,使用输出中的 QueryID 恢复:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
arkcli doctor +verify-origin \
|
|
91
|
+
--query-id "<query-id-1>" \
|
|
92
|
+
--query-id "<query-id-2>" \
|
|
93
|
+
--format json
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
恢复已有 QueryID 不重新 Create,也不重复询问同批费用确认。
|
|
97
|
+
|
|
98
|
+
## 5. 鉴权
|
|
99
|
+
|
|
100
|
+
该命令是控制面 OpenTOP workflow:
|
|
101
|
+
|
|
102
|
+
- 支持 SSO 派生 STS AK/SK/SessionToken;
|
|
103
|
+
- 支持长期 AK/SK;
|
|
104
|
+
- 不使用 Ark API Key;
|
|
105
|
+
- 不要传全局 `--api-key` 或 `--base-url`。
|
|
106
|
+
|
|
107
|
+
## 6. 最终结果必须完整转交
|
|
108
|
+
|
|
109
|
+
单条结果是完整 `GetArkOfficialResult` JSON envelope。批量结果是按输入顺序排列的数组,每个成功项的 `response` 都是完整 envelope。
|
|
110
|
+
|
|
111
|
+
Agent 的最终回复必须只包含 CLI stdout 的完整 JSON:
|
|
112
|
+
|
|
113
|
+
- 不添加总结;
|
|
114
|
+
- 不翻译;
|
|
115
|
+
- 不解释 `IsOfficial`;
|
|
116
|
+
- 不只摘 `Result`;
|
|
117
|
+
- 不只摘 `Message`;
|
|
118
|
+
- 不添加 Markdown 代码围栏;
|
|
119
|
+
- 不添加“结果如下”等前缀;
|
|
120
|
+
- 不使用 `--transform`;
|
|
121
|
+
- 不切换为 YAML、table、CSV 或 JSONL。
|
|
122
|
+
|
|
123
|
+
特别禁止:
|
|
124
|
+
|
|
125
|
+
- 把 `True` 说成“已官方认证由 Ark 生成”;
|
|
126
|
+
- 把 `False` 说成“确定不是 Ark 生成”;
|
|
127
|
+
- 把 `Null` 说成 `False`;
|
|
128
|
+
- 改写服务端免责声明。
|
|
129
|
+
|
|
130
|
+
## 7. Client Preview
|
|
131
|
+
|
|
132
|
+
用户只想预览执行计划时:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
arkcli doctor +verify-origin \
|
|
136
|
+
"https://example.com/a.mp4" \
|
|
137
|
+
"https://example.com/b.mp4" \
|
|
138
|
+
--dry-run \
|
|
139
|
+
--format json
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Preview 零网络,只展示每个 URL 的 Create/Get 图、5 秒轮询、QPS 和整批确认范围。Preview 不是费用确认,不能因为 preview 成功自动添加 `--yes`。
|