@volcengine/ark-cli-darwin-arm64 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-arm64 +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,166 @@
1
+ ---
2
+ name: arkcli-usage
3
+ version: 1.3.5
4
+ description: "查询平台 Token/请求数、套餐额度快照、Agent Plan 按模型明细和团队席位用量。已发生调用的人民币金额、实际花费、用量折算费用优先转 arkcli-billing;目录询价转 pricing,明确要求按单价估算时才组合 usage 与 pricing。Coding Plan 只有额度快照,不提供按模型明细。席位列表/分配/轮换 Key 转 arkcli-plans;TTS/ASR 用量不支持查询。"
5
+ metadata:
6
+ requires:
7
+ bins: ["arkcli"]
8
+ cliHelp: "arkcli usage stats --help"
9
+ ---
10
+
11
+ # arkcli usage
12
+
13
+ **CRITICAL — 开始前 MUST 先用 Read 工具读取 [`../arkcli-shared/SKILL.md`](../arkcli-shared/SKILL.md),其中包含认证闸门、配置排查与共享安全规则**
14
+ **CRITICAL — `usage stats` 在执行之前,务必先用 Read 工具读取 [`references/arkcli-usage-stats.md`](references/arkcli-usage-stats.md),禁止直接盲目调用命令。**
15
+ **CRITICAL — `usage plan` 在执行之前,务必先用 Read 工具读取 [`references/arkcli-usage-plan.md`](references/arkcli-usage-plan.md),禁止直接盲目调用命令。**
16
+ **CRITICAL — `usage plan-details` 在执行之前,务必先用 Read 工具读取 [`references/arkcli-usage-plan-details.md`](references/arkcli-usage-plan-details.md),禁止直接盲目调用命令。**
17
+ **CRITICAL — Coding Plan / Coding Plan Team 当前不提供按模型套餐明细。这类问题只能用 `usage plan --product coding-plan`(团队版用 `--product coding-plan-team`)给 quota 快照并明说能力边界;禁止改跑 `usage stats` 后把 platform / Endpoint Token 统计冒充 Coding Plan 套餐按模型明细。**
18
+ **CRITICAL — 上述 Coding Plan 问题在本轮执行 `usage plan` 并说明边界后就停止。不主动追加 Endpoint / platform `usage stats`,因为它无法归因为 Coding Plan 套餐明细;只有用户在知道两者不同后另行明确要求「再看 platform / Endpoint 用量」,才开新查询。**
19
+ **CRITICAL — `usage balance` 在执行之前,务必先用 Read 工具读取 [`references/arkcli-usage-balance.md`](references/arkcli-usage-balance.md),禁止直接盲目调用命令。**
20
+ **CRITICAL — `usage seats` 在执行之前,务必先用 Read 工具读取 [`references/arkcli-usage-seats.md`](references/arkcli-usage-seats.md),禁止直接盲目调用命令。**
21
+
22
+ > **数据时效(务必先看):`usage stats` 走的是上游 BFF 的聚合管道,数据有 5–30 分钟延迟,定位为「日级 / 聚合分析」。** 不要把它用于实时预算监控、限流、实时告警等需要秒级精度的控制场景——这类场景请直接读 `+chat` / `+gen` 等推理命令返回里的 `.usage` 字段(per-request、零延迟,详见 [arkcli-chat](../arkcli-chat/SKILL.md) 与 [arkcli-gen](../arkcli-gen/SKILL.md))。
23
+
24
+ > **语音模型边界**:TTS / ASR / 配音 / 朗读 / 播客 / 音色 / 实时语音交互,或 `doubao-seed-tts-*` / `doubao-seed-asr-*` / `seedasr-*` 等广场语音模型,当前在 arkcli 只支持 `models search` 发现。不要用 `usage stats --model`、`usage plan-details` 或套餐/余额命令回答语音模型用量;直接说明 arkcli 不支持查询语音模型费用或用量。
25
+
26
+ > **stats / plan / plan-details / balance 区分:**
27
+ > - `stats` 出"按 token 计费的 inference 用量"(任何身份,5–30 分钟延迟)
28
+ > - `plan` 出"订阅套餐的 quota 快照"(AgentPlan / CodingPlan 个人版 + 团队版的"我用了几成 / 几号刷新")
29
+ > - `plan-details` 出"AgentPlan 按模型 / 套餐内外的时间序列调用明细"(AgentPlan 个人版 + 团队版,CodingPlan 没有按模型 endpoint)
30
+ > - `balance` 出"还剩多少 X"(余额视角,`--type free-quota / media-asset / plan` 三选一)
31
+ > - `seats` 出"团队席位**用量** admin 视角"(每个 seat 用了多少 / 套餐百分比;**只是用量视图**)。**席位的列表 / 绑定 / 分配 / API Key 轮换** 走 [`arkcli-plans`](../arkcli-plans/SKILL.md) 的 `plans team seat-list / seat-assign / rotate-apikey`。
32
+ >
33
+ > 用户问「我的套餐还剩多少额度」→ `plan` 或 `balance --type plan`(后者输出更精简);「我哪个模型用得最多」→ Agent Plan 用 `plan-details`,Coding Plan 只能用 `plan` 给 quota 快照并说明不支持按模型拆分;「我今天用了多少 token」→ `stats`;「我还剩多少免费额度 / 媒资库容量」→ `balance`;「**每个 seat 用了多少 / 团队席位用量分布**」→ `seats --with-usage`(纯管理类:谁绑了哪个 seat / 列出席位 / 分配席位 / 轮换 key → `arkcli-plans`)。
34
+
35
+ ## Step 0:先分金额、数量与额度,再确认身份
36
+
37
+ 先看用户要交付的单位;句子中出现“用量”不决定查询入口:
38
+
39
+ - **已发生用量折算人民币 / 实际花费 / 应付账单**:先读取 [`arkcli-billing`](../arkcli-billing/SKILL.md),按其日期、个人归属和 T+1 规则查实际应付。此分支在任何 `usage stats` 或价格查询之前执行。用户同时要调用量时再另查 Usage,分别交付。
40
+ - **模型 / 套餐目录多少钱、每 Token 单价**:读取 Pricing 做询价,不查个人账单或用量。
41
+ - **明确要求目录单价估算 / 预算预测**:才读取 Pricing,与用户指定范围的调用量组合;结果标“估算”,披露免费额度、折扣、缓存及结算差异。已有实际费用问题遇到 T+1 未出账时,报告未结算部分,不自动改成估算金额。
42
+
43
+ 用户已明确套餐名称时,直接用 `usage plan --product <plan>`;Agent Plan 按模型明细用 `usage plan-details --product <agent-plan|agent-plan-team> --start <日期>`。订阅属于账号/子用户,**不是由 active profile.type 决定**;platform profile 不等于没有套餐,也不需要为查询先切成 plan profile。
44
+
45
+ - 平台 Token / 请求数 → `usage stats --start <日期>`;用户说“我的”时首条就带 `--mine`,追加 `--by model|endpoint|apikey` 不能删掉范围限制。
46
+ - 套餐额度 → `usage plan` / `usage balance --type plan`;Agent Plan 明细 → `plan-details`;Coding Plan 只有 quota 快照,解释限制后停止,不补查平台桶冒充套餐明细。
47
+ - “我的用量”未指明口径时,结合本轮上下文确认是平台 Token 还是套餐额度;仍有歧义就问这一项。只有用户明确要合并查看时才查多个桶,并分开报告,不能把百分比、AFP、Token 直接相加。
48
+ - `subscribed:false` 只表示当前身份下该 SKU 没查到订阅,不证明其他身份无订阅,不触发自动切身份或平台查询。
49
+
50
+ 身份核对遵守当前宿主的共享协议;已有执行上下文可复用,缺少摘要且确需核实时用 `arkcli auth whoami --format json`。普通查询不调用可能同步/回写 Key 的 `profile show/list/keys list`。确需另一身份时先确认目标,不能静默切 Profile、Key、Project 或账号范围。
51
+
52
+ **时间与交付:** `stats` / `plan-details` 必带 `--start`,没有 CLI 默认“近 7 天”;按用户时间词补齐 `--start/--end`,无日期时说明按今天查。长窗口按当前 reference 的限制分片,边界不重叠,保留用户原请求范围;无法覆盖的日期明确标注,不静默改成最近 30 天。回答同时标明口径、身份/范围、时间窗和数据延迟。
53
+
54
+ ### 数值与范围交付
55
+
56
+ - `usage stats` 输出的顶层 `totals` 汇总本次所有返回记录;点名模型/品牌时按实际模型身份筛选并重新计算,不能把混合模型合计全归给目标模型。“我想查询”只是请求主语,不自动收窄为本人创建的资源;“我的用量/我创建的 Endpoint”才采用本人归属,且不改当前身份和 Project。
57
+ - 套餐逐项以 `items[].product/edition/tier/seat_id` 标识身份,以同一项 `periods[].label/used/total/percent/reset_at` 生成正文和卡片;提交前比对二者数值、单位和周期。团队版和个人版不能因为档位名相同就复用额度;静态价格/套餐目录不能覆盖实时 `total`。
58
+ - 排查套餐限额或交付额度快照时,按“套餐/版本/席位 → 周期 → 已用/总额/余量(原单位) → 已用百分比 → 重置时间(含时区)”逐项交付本轮返回值;卡片无法完整承载时用 Markdown 保留这些字段。只有同周期、同单位的真实 `used/total` 才计算余量;缺字段写未返回。不能只给百分比表而省略已有的绝对余量与重置时刻,也不能只摘一个健康窗口就宣称全部配额健康。
59
+ - Coding Plan 仅有百分比、缺少 `used/total` 时只展示已有百分比与重置时间,不推算绝对额度、次数或 Token。缺字段、失败项和零消耗分开,不从另一个 SKU 填数。历史限额报错与当前快照分开标明,不能把当前未耗尽反推为历史报错不可能发生。
60
+
61
+ ### 限额报错:历史事实、当前快照与恢复条件
62
+
63
+ 用户贴出 `AccountQuotaExceeded` 或带重置时刻的套餐限额报错时,先保留原错误码、时间和已知套餐;需要错误目录解释时可转 [`arkcli-doctor`](../arkcli-doctor/SKILL.md),近似错误码不能冒充原码。用 `usage plan` 查当前快照,按上方字段交付;查询失败或某桶失败时保留未知。
64
+
65
+ - 原重置时刻已过去,只能说明那次窗口已经过去;当前快照未耗尽,只能证明本轮所查身份和套餐的额度状态。仍有新报错时需要它的时间、错误码、套餐/调用上下文;没有客户端日志,不把“自动重试旧请求”“客户端缓存”当成已知原因,也不由额度正常保证调用必然成功。
66
+ - 恢复建议按实际 `product/edition` 区分。等待时引用对应窗口真实 `reset_at`;升配时转 [`arkcli-plans`](../arkcli-plans/SKILL.md) 并按该套餐文档说明生效条件,不把 Coding Plan 的时效规则推广到 Agent Plan。Agent Plan 文档中的“超额后付费”是有资格、服务开通和计费条件的恢复选项,不能笼统说所有套餐“只能等待”;Coding Plan 不自动继承该选项。
67
+ - `usage plan` 的额度字段和 `plans get` 的订阅状态都不包含超额后付费开关,不能由这些返回值宣称已开启或已关闭。说明该选项会产生额外费用、需用户自行决定;本轮排障不启用开关、不升配、不切换收费路径,也不发送推理请求试探额度是否恢复。当前未超限时无需执行恢复操作。
68
+
69
+ ### 空结果与归属排查
70
+
71
+ 1. 区分命令失败、成功但空、存在 records 但合计为零;三者不能互相代替。
72
+ 2. 核对日期/时区、聚合延迟、所选口径、身份以及实际生效的 Project/过滤条件。近期记录未进入聚合不代表调用未发生;账号全范围不等于有所有资源权限,也不能先断言是 Project 隔离。
73
+ 3. Volc 个人平台统计仅在成功为空,或 CLI 明确报告本人没有 Endpoint 时,保留原日期/过滤条件改查 `--mine --mine-by=apikey`;已显式选 API Key 维度就不重复。鉴权、权限、网络错误不是空结果。CLI 提示 `omit --mine` 只列出另一种命令范围,不代表用户同意扩大查询。第二层为空或资源筛选失败时停在本人范围,分别报告空结果或未能取得结果;仅在用户另行明确要求后查询账号全量。无法获得新回复时保留范围和未知项,不用他人用量补齐。
74
+ 4. 平台 `records` 的 `ModelEndpoint` 可交给 `infer endpoint get <id>`;`AuthToken` 是 Key 掩码标识,可用 `apikey.list` 的元数据核对归属,后缀有冲突时报告歧义,不取明文、不轮换 Key。
75
+ 5. Agent Plan `plan-details` 不提供 Endpoint / API Key 级归属,查到模型/Harness 消耗即到边界;Coding Plan 无模型/Harness 明细。不能跨口径拼出不存在的调用归属,也不因 CLI 报错改用记忆/检索结果充当账号数据。
76
+
77
+ ## 适用场景
78
+
79
+ - 查看当日或指定日期范围的推理用量(**接受 5–30 分钟延迟**)
80
+ - 看订阅套餐(AgentPlan / CodingPlan)的配额消耗 / 重置时间
81
+ - 看 AgentPlan 套餐内 vs 套餐外的按模型拆分明细
82
+ - 按模型、接入点、API Key 维度分组统计(stats)
83
+ - 分析 Token 消耗趋势、出对账报表
84
+ - **不适用于语音模型用量**:用户问 TTS / ASR / 语音模型用了多少、剩余额度、调用次数时,不执行本 skill,转 `arkcli-models` 说明只支持广场发现
85
+
86
+ ## 业务定位
87
+
88
+ - 本 skill 对应"看存量调用结果和消耗"的场景,是**离线 / 准实时**分析入口
89
+ - 它通常发生在两类后置链路之后:
90
+ - Endpoint 已经存在,想按 endpoint 看使用情况
91
+ - 模型已经在被调用,想按 model / API Key 分析消耗
92
+ - 或:订阅了套餐,想看额度还剩多少
93
+ - 它不是创建 Endpoint 的入口,也不是试用模型的入口
94
+ - **它不是实时预算 / 限流 / 告警的数据源**——实时控制请走 per-request `.usage` 字段(见上方 banner)
95
+
96
+ ## 快速决策
97
+
98
+ - 用户问"我的套餐还剩多少 / 用了几成 / 几号刷新 / 我有几个套餐":
99
+ - `arkcli usage plan`(默认探所有 4 个 SKU:personal × 2 + team × 2,subscribed 桶才下发 usage 请求)
100
+ - `arkcli usage plan --all`:不探订阅,4 桶全跑(诊断 / Excel)
101
+ - `arkcli usage plan --product=X`:跳过探测,单查
102
+ - **跟 `balance --type plan` 是同一份数据**;`usage plan` 输出完整(带 `subscribed` / `updated_at`),`balance --type plan` 精简(去掉元字段)。一般默认走 `usage plan`,只有用户明确把套餐余额跟"免费额度 / 媒资库容量"一起对账时,才走 `balance --type plan`(三 type 一起跑节省心智)
103
+ - 用户问"我哪个模型用得最多 / 套餐内套餐外各占多少 / 团队某个子用户用得多":
104
+ - `arkcli usage plan-details --start <YYYY-MM-DD>`(Day 粒度,Agent Plan personal;显式补日期)
105
+ - `arkcli usage plan-details --product=agent-plan-team`(团队版,自动找 caller seat 或显式 `--seat <id>`)
106
+ - **Coding Plan 例外**:不执行 `plan-details` 或 `stats`;只执行 `arkcli usage plan --product coding-plan`(团队版用 `coding-plan-team`),并明确该结果只是 quota 快照、不是本周按模型明细,然后停止。用户未另行要求 platform / Endpoint 用量时,不主动补跑 `usage stats`。
107
+ - 用户问"我的用量 / 我今天用了多少 token / 我的 endpoint 消耗":
108
+ - 先按 Step 0 确定口径;明确的平台 Token / Endpoint 问题直接查下述平台桶,不因 profile.type 自动追加套餐查询。
109
+ - 如果用户点名的是语音模型或 TTS / ASR 场景 → **不要继续查 usage**;当前 arkcli 只承认语音模型广场发现,不支持语音模型用量查询
110
+ - **火山:** 先 `arkcli usage stats --start <YYYY-MM-DD> --mine`(默认 endpoint 维度)
111
+ - 返回 `data_count > 0` → 直接从 `totals` 取合计
112
+ - 返回 `data_count=0`(用户没有 Endpoint 或近期未通过 Endpoint 调用)→ 立即重试 `arkcli usage stats --start <YYYY-MM-DD> --mine --mine-by=apikey`
113
+ - 不自动退化为账号全量;第二层也成功为空时,可询问用户是否另查整个账号。明确同意后按 [stats 的第三层流程](references/arkcli-usage-stats.md#空结果的完整排查链) 保留其他参数、只移除 mine 限定,并标明“账号全量,可能包含其他用户”。这不是个人用量,也不授权切身份。
114
+ - 用户问"我每个 APIKey 用了多少":
115
+ - **火山:** `arkcli usage stats --start <YYYY-MM-DD> --mine --mine-by=apikey`,从 `records[].AuthToken` 拆分
116
+ - 用户问"我账上还有多少免费 token / 模型免费额度 / 媒资库还能存多少":
117
+ - `arkcli usage balance --type free-quota`(模型免费推理额度)
118
+ - `arkcli usage balance --type media-asset`(素材库容量)
119
+ - 用户问"团队席位**用了多少** / 每个 seat 消耗 / 套餐百分比 by seat"(admin 用量视角):
120
+ - `arkcli usage seats --product agent-plan-team --with-usage`(列席位 + 每个 seat 的 AFP 用量)
121
+ - 不带 `--with-usage` 也行,但只有基础元数据,没有用量数字
122
+ - **路由分工**:本命令**只**回答"用量",不负责 seat 管理。"**列席位 / 谁绑了哪个 seat / 给员工分配席位 / 轮换席位 APIKey**" 全部走 [`arkcli-plans`](../arkcli-plans/SKILL.md) 的 `plans team seat-list / seat-assign / rotate-apikey`。Agent 路由这条问句先看动词:**"用了 / 消耗 / 多少"** 留这边,**"绑 / 列 / 分 / 轮换"** 跳过去 plans。
123
+ - 数据看起来不对:先查认证和 profile,再怀疑数据本身
124
+
125
+ ## Agent 快速执行顺序
126
+
127
+ 1. 先按 Step 0 选定金额、数量或额度入口;需要核对缺失的身份摘要时遵循共享协议。
128
+ 2. 先做最小查询,再逐步加时间范围和分组条件
129
+ 3. 结果异常时,先检查 profile / region / API Key 来源是否正确,再怀疑数据本身
130
+ 4. 如果用户要按 endpoint 看 usage,最好先确认 endpoint-id 已知
131
+
132
+ ## 常见降级
133
+
134
+ - 鉴权错误:转 [`../arkcli-auth/SKILL.md`](../arkcli-auth/SKILL.md)
135
+ - 查询范围或环境不对:转 [`../arkcli-config/SKILL.md`](../arkcli-config/SKILL.md)
136
+ - 用户其实还没有 Endpoint,只是在准备正式接入:转 [`../arkcli-deploy/SKILL.md`](../arkcli-deploy/SKILL.md)
137
+ - 用户想看套餐**价格**(不是用量):转 [`../arkcli-pricing/SKILL.md`](../arkcli-pricing/SKILL.md)(`pricing plans` 出 catalog 询价,`usage plan` 出 quota 快照,两者是不同视角)
138
+ - 用户想看**结算金额 / 账单 / 花了多少钱**(不是 token 用量):转 [`../arkcli-billing/SKILL.md`](../arkcli-billing/SKILL.md)(数据源是火山计费中心, T+1 出账; usage stats 是 BFF 推理聚合, 近实时)
139
+ - 用户问语音模型 / TTS / ASR 的用量或额度:转 [`../arkcli-models/SKILL.md`](../arkcli-models/SKILL.md) 只说明广场可搜与 arkcli 不支持用量查询,不转 pricing / billing
140
+
141
+ ## 命令一览
142
+
143
+ | 命令 | 说明 |
144
+ |------|------|
145
+ | [`usage stats`](references/arkcli-usage-stats.md) | 查询推理用量(Token / 请求数,按日 / 小时聚合,按 token 计费的 inference 视角) |
146
+ | [`usage plan`](references/arkcli-usage-plan.md) | 查询订阅套餐的额度快照(AgentPlan / CodingPlan,5h / weekly / monthly / session 周期的"用了多少 / 还剩多少 / 几号刷新")。默认探所有 4 个 SKU |
147
+ | [`usage plan-details`](references/arkcli-usage-plan-details.md) | 查询 AgentPlan **个人版 + 团队版** 按模型 / Harness 的时间序列调用明细(套餐内 vs 套餐外拆分)。必传 `--start`,`--product=agent-plan-team` 切团队版 |
148
+ | [`usage balance`](references/arkcli-usage-balance.md) | 余额视角统一入口 `--type free-quota / media-asset / plan`(模型免费推理额度 / 素材库容量 / 套餐余额) |
149
+ | [`usage seats`](references/arkcli-usage-seats.md) | **Admin 视角** 列举企业版套餐下所有席位(SeatID / 绑定子用户 / billing 状态)。子用户调通常 AccessDenied |
150
+
151
+ ## 自然语言触发词表
152
+
153
+ | 用户怎么说 | 对应命令 |
154
+ |---|---|
155
+ | "按模型明细 / 哪个模型用得最多 / 模型维度拆分 / 按模型时序 / 套餐内套餐外按模型" | `arkcli usage plan-details` |
156
+ | "coding plan 按模型明细 / coding plan 套餐内套餐外" | `arkcli usage plan --product coding-plan`,并明说只支持 quota 快照、不支持按模型时序明细;禁止用 `usage stats` 冒充 |
157
+ | "配额还剩多少 / 余额 / 还能用多少 / 用了几成 / 套餐额度" | `arkcli usage plan` 或 `arkcli usage balance --type plan` |
158
+ | "免费额度还有多少 / 模型免费额度 / 免费 token" | `arkcli usage balance --type free-quota` |
159
+ | "AFP 消耗 / 今日 AFP / 本周 AFP" | `arkcli usage plan`(AFP 就是套餐额度单位) |
160
+ | "我的用量 / 我今天用了多少 token / 推理用量 / token 消耗" | `arkcli usage stats --start <YYYY-MM-DD> --mine` |
161
+
162
+ ## 参考
163
+
164
+ - [arkcli-deploy](../arkcli-deploy/SKILL.md) -- 先创建 Endpoint,再按 endpoint 看 usage
165
+ - [arkcli-pricing](../arkcli-pricing/SKILL.md) -- catalog 询价(`pricing plans`),跟 `usage plan` quota 快照互补
166
+ - [arkcli-shared](../arkcli-shared/SKILL.md) -- 认证和全局参数
@@ -0,0 +1,217 @@
1
+ # usage balance
2
+
3
+ > **前置条件:** 先阅读 [`../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md) 了解认证、全局参数和安全规则。
4
+
5
+ > **跟 `stats` / `plan` 的区别(务必先看):**
6
+ > - `stats` / `plan-details` — **消耗视角**(已经发生的 token / 调用)
7
+ > - `plan` — 订阅套餐的 quota **快照**(已用 / 总额 / 重置时间)
8
+ > - `balance` — **余额视角**,统一三类"还剩多少 X"的查询入口
9
+ >
10
+ > 用户问「我账上还有多少 X」时走 `balance`,根据 `--type` 分流到三类数据源。
11
+ >
12
+ > **`balance --type plan` 跟 `usage plan` 是同一份数据的两个入口**(都调 `QueryPlanUsage`,默认探所有 4 个 SKU,flag 完全一致)。区别只在投影:
13
+ > - `balance --type plan` 精简版(去掉 `subscribed` / `updated_at`,补 `"not subscribed"` hint)
14
+ > - `usage plan` 完整版(带 `subscribed: true/false`、CodingPlan 的 `updated_at` 等元字段)
15
+ >
16
+ > 用余额视角(配 free-quota / media-asset 一起看)走 `balance --type plan`;直接看套餐 quota 快照(配 stats / plan-details 一起看)走 `usage plan`。
17
+
18
+ `arkcli usage balance` 是一个 dispatcher,`--type` 决定数据源。三类目的差异显著,**`--type` 必传**。
19
+
20
+ ## 命令
21
+
22
+ ```bash
23
+ # 各模型的免费推理额度 / 资源包余额(走 ListModelChargeItems)
24
+ arkcli usage balance --type free-quota
25
+ arkcli usage balance --type free-quota --model doubao-seed-1-6
26
+ arkcli usage balance --type free-quota --modality LLM --page-size 20
27
+
28
+ # 媒资库容量(走 /open/GetAssetQuota)
29
+ arkcli usage balance --type media-asset
30
+ arkcli usage balance --type media-asset --project my-project
31
+
32
+ # 订阅套餐余额(走 QueryPlanUsage,精简版输出)
33
+ arkcli usage balance --type plan
34
+ arkcli usage balance --type plan --product agent-plan
35
+ arkcli usage balance --type plan --all
36
+ ```
37
+
38
+ ## 参数白名单
39
+
40
+ `--type` 是必填,其它 flag **按 type 分组**;跨 type 误传会报 `ErrValidation`(不静默忽略,避免用户以为过滤生效了但实际没生效)。
41
+
42
+ | `--type` | 允许的额外 flag |
43
+ |---|---|
44
+ | `free-quota` | `--model` `--modality` `--page-number` `--page-size` |
45
+ | `media-asset` | `--project` |
46
+ | `plan` | `--product` `--all` `--seat` |
47
+
48
+ ### `--type free-quota`
49
+
50
+ | 参数 | 类型 | 说明 |
51
+ |---|---|---|
52
+ | `--model` | string | 单基础模型名;不传 = 列全量已开通模型 |
53
+ | `--modality` | string | 后端 `FoundationModelDomain` 枚举:`LLM` / `ComputerVision` / `Audio` / `Embedding` / `Router`(**不接受别名**) |
54
+ | `--page-number` | int | 页码,1-based |
55
+ | `--page-size` | int | 每页条数,默认 50 |
56
+
57
+ ### `--type media-asset`
58
+
59
+ | 参数 | 类型 | 说明 |
60
+ |---|---|---|
61
+ | `--project` | string | 项目名;不传走当前 profile.ProjectName |
62
+
63
+ ### `--type plan`
64
+
65
+ | 参数 | 类型 | 说明 |
66
+ |---|---|---|
67
+ | `--product` | string | `agent-plan` / `coding-plan` / `agent-plan-team` / `coding-plan-team` |
68
+ | `--all` | bool | 查所有个人版 plan 即使未订阅(跟 `--product` 互斥) |
69
+ | `--seat` | string | 仅 team 版,过滤单席位 |
70
+
71
+ ## 返回值
72
+
73
+ ### `--type free-quota`
74
+
75
+ ```json
76
+ {
77
+ "page_number": 1,
78
+ "page_size": 50,
79
+ "total_count": 7,
80
+ "items": [
81
+ {
82
+ "model": "doubao-seed-1-6",
83
+ "display_name": "Doubao Seed 1.6",
84
+ "vendor": "Doubao",
85
+ "state": "Available",
86
+ "is_overdue": false,
87
+ "free_usage": { "total": 500000, "consumed": 12345, "remaining": 487655 },
88
+ "resource_packs": [
89
+ {
90
+ "type": "FreeInference",
91
+ "total": 500000, "consumed": 12345, "remaining": 487655,
92
+ "reclaimed": 0, "sync_time": "2026-06-04T12:00:00Z"
93
+ }
94
+ ]
95
+ }
96
+ ]
97
+ }
98
+ ```
99
+
100
+ **关键口径**:
101
+
102
+ - `free_usage.remaining = total - consumed`,**已经算好**,不要让 agent 自己算
103
+ - 没有任何余额信息(`free_usage` 和 `resource_packs` 都空)的模型行**不会输出**——`pricing models` 才出全表
104
+ - `resource_packs[].type` 当前火山只有两个值:`FreeInference`(免费推理) / `DataPermission`(数据权限)。**没有 finetune 资源包**,`Finetune` / `LoraFinetune` 是定价单价(`pricing models` 的 `ChargeItems.Type`),不是余额维度
105
+ - 资源包 `remaining` **可能为负**(过期降档时 `consumed > total`),不要 clamp
106
+
107
+ ### `--type media-asset`
108
+
109
+ ```json
110
+ {
111
+ "tier": "advanced_monthly",
112
+ "assets": { "total": 100000, "used": 23456, "remaining": 76544, "percent": 23.456 },
113
+ "asset_groups":{ "total": 100, "used": 12, "remaining": 88, "percent": 12.0 },
114
+ "shared_pool": { "total": 1000000,"used": 0, "remaining": 1000000,"percent": 0 },
115
+ "write_qpm": 600,
116
+ "capabilities": { "liveness_writable": true, "aigc_readable": true },
117
+ "projects": [
118
+ { "project_name": "default", "used": 23456, "allocated": false, "allocation": 0 }
119
+ ],
120
+ "updated_at_ms": 1717488000123
121
+ }
122
+ ```
123
+
124
+ **关键口径**:
125
+
126
+ - `tier` 取值:`free` / `advanced` / `premium` / `advanced_monthly` / `premium_monthly`(月付与年付共用展示)。空值意味着账号没订阅媒资库 → 后端返 free tier 零容量
127
+ - **`used > total` 是合法状态**(过期降档时 `tier` 降到 `free` 但 `used` 保留旧值),`percent` 可 > 100,`remaining` 可为负 — **不 clamp**
128
+ - `shared_pool` 在没启用共享池的账号下被省略(全 0 不输出)
129
+ - `capabilities` 只列**已开启**的能力,空 map 意味着所有能力都关
130
+ - `projects[]` 只在**项目级配额分配生效**的企业账号下有数据,个人账号通常空数组
131
+
132
+ ### `--type plan`
133
+
134
+ ```json
135
+ {
136
+ "viewer": {
137
+ "auth_method": "sso",
138
+ "user_id": "12345",
139
+ "user_name": "alice",
140
+ "is_root": false,
141
+ "profile": "my-profile",
142
+ "tenant": "volc",
143
+ "region": "cn-beijing"
144
+ },
145
+ "items": [
146
+ {
147
+ "product": "agent-plan",
148
+ "edition": "personal",
149
+ "tier": "small",
150
+ "periods": [
151
+ { "label": "5h", "used": 10, "total": 100, "percent": 10, "reset_at": "2024-06-04T17:00:00+08:00" },
152
+ { "label": "weekly", "used": 50, "total": 1000, "percent": 5, "reset_at": "2024-06-11T08:00:00+08:00" }
153
+ ]
154
+ },
155
+ {
156
+ "product": "agent-plan-team",
157
+ "edition": "team",
158
+ "tier": "large",
159
+ "seat_id": "seat-001",
160
+ "periods": [
161
+ { "label": "5h", "used": 50, "total": 200, "percent": 25, "reset_at": "2024-06-04T17:00:00+08:00" },
162
+ { "label": "weekly", "used": 800, "total": 5000, "percent": 16, "reset_at": "2024-06-11T08:00:00+08:00" },
163
+ { "label": "monthly", "used": 4000, "total": 20000, "percent": 20, "reset_at": "2024-06-29T05:06:40+08:00" }
164
+ ]
165
+ },
166
+ {
167
+ "product": "coding-plan",
168
+ "edition": "personal",
169
+ "error": "not subscribed"
170
+ }
171
+ ]
172
+ }
173
+ ```
174
+
175
+ **关键口径**:
176
+
177
+ - **顶层 `viewer`**:身份摘要(子用户 vs root,SSO/AKSK/APIKey)。让 agent 区分"我看的是自己的 vs 主账号的 vs 别人"。详见 [`usage plan` 文档的 viewer 章节](arkcli-usage-plan.md#viewer-字段身份摘要)
178
+ - **默认探所有 4 个 SKU**(personal × 2 + team × 2)— 一次拉全你账号下的所有套餐余额。要单查传 `--product=X`
179
+ - 比 `usage plan` **精简**:去掉 `subscribed` / `update_timestamp` 元字段;`error` 保留(用于区分"未订阅" / "AccessDenied" / "no seat bound")
180
+ - `error: "not subscribed"` 是 balance 层补的 hint,后端原始是 `Subscribed=false` + 空 periods,直接展示对用户不可读
181
+ - **Team 套餐自动找 caller seat**:不传 `--seat` 时 service 层自动调 `GetSeatInfo` 找你绑定的席位。订了套餐但没分到席位时返 `error: "no seat bound to caller for ..."`(区分于"未订阅")
182
+ - `coding-plan` 后端只返 `percent`,`used` / `total` 字段缺(JSON `omitempty` 不出现)
183
+ - `periods[].reset_at` 跟 `usage plan` 同 schema,输出 **RFC3339 北京时间(UTC+08:00)**;周期内无数据时不输出该字段
184
+
185
+ ## Agent 决策
186
+
187
+ | 用户问法 | 命令 |
188
+ |---|---|
189
+ | 我哪些模型还有免费额度 | `arkcli usage balance --type free-quota` |
190
+ | 模型 X 还能用多少 token | `arkcli usage balance --type free-quota --model X` |
191
+ | 媒资库还能上传多少 / 容量满了吗 | `arkcli usage balance --type media-asset` |
192
+ | 我的套餐还能用多少 / 几号刷新 | `arkcli usage balance --type plan`(自动探所有订阅) |
193
+ | 我特定 product 的套餐余额 | `arkcli usage balance --type plan --product agent-plan-team` |
194
+ | Admin 视角看其他席位用量 | `arkcli usage balance --type plan --product agent-plan-team --seat <id>` |
195
+
196
+ ## 常见错误
197
+
198
+ | 错误 | 原因 | 处理 |
199
+ |---|---|---|
200
+ | `--type is required` | 没传 `--type` | 三选一:`free-quota` / `media-asset` / `plan` |
201
+ | `--product is not valid for --type free-quota` | 跨 type flag | 检查 flag 跟 `--type` 是否匹配(见上表) |
202
+ | `tier` 为空 + 全部 0 | 账号没订阅媒资库 | 后端返 free tier 零容量,没问题;要订阅请走火山方舟控制台 |
203
+ | `foundation model "X" not found in pricing list` (exit=2) | `--model X` 名字打错或不在 pricing list | 检查拼写;或不传 `--model` 拉全量看支持的名字 |
204
+ | `free-quota` 返回 `items: []` | `--modality` 传了别名(`text` / `video`)而不是后端枚举(没传 `--model` 时才会走到这条) | 翻译成 `LLM` / `ComputerVision` 再传 |
205
+ | plan 行 `error: "no seat bound"` | 团队版订了但 caller 没分到席位 | 联系 admin 分配席位,或传 `--seat <id>` 显式指定 |
206
+
207
+ ## 跟其它命令的关系
208
+
209
+ - 想看**单价**(每千 token 多少钱)→ [`arkcli pricing models`](../../arkcli-pricing/references/arkcli-pricing-models.md)
210
+ - 想看**已经消耗**(token / 调用次数)→ [`stats`](arkcli-usage-stats.md) / [`plan-details`](arkcli-usage-plan-details.md)
211
+ - 想看**订阅套餐 quota 快照(完整版,带 subscribed / 时间戳)**→ [`usage plan`](arkcli-usage-plan.md)
212
+
213
+ ## 参考
214
+
215
+ - [arkcli-usage](../SKILL.md) — usage skill 概览
216
+ - [arkcli-shared](../../arkcli-shared/SKILL.md) — 认证和全局参数
217
+ - [arkcli-pricing](../../arkcli-pricing/SKILL.md) — 定价目录视角
@@ -0,0 +1,136 @@
1
+ # usage plan-details
2
+
3
+ > **硬边界:本命令仅支持 `agent-plan` / `agent-plan-team`。Coding Plan 问题不得调本命令,也不得改跑 `usage stats` 后把 platform / Endpoint Token 统计表述成 Coding Plan 套餐明细;只能用 `arkcli usage plan --product coding-plan`(团队版用 `--product coding-plan-team`)返回 quota 快照,并向用户说明当前没有按模型时序明细能力。**
4
+
5
+ > **前置条件:** 先阅读 [`../arkcli-shared/SKILL.md`](../../arkcli-shared/SKILL.md) 了解认证、全局参数和安全规则。
6
+
7
+ > **跟 `usage plan` / `usage stats` 的关系(务必先看):**
8
+ > - `usage plan` — AgentPlan / CodingPlan **额度快照**(5h / weekly / monthly 用了多少 / 还剩多少 / 几号刷新)
9
+ > - `usage plan-details` — **AgentPlan 个人版**按模型 / Harness 的**时间序列调用明细**(每个 ObjectName 在每个时间桶的 token / 张数,以及套餐内 vs 套餐外计费)
10
+ > - `usage stats` — 按 token 计费的 inference 用量(任意身份,跟订阅无关)
11
+ >
12
+ > 用户问「我哪个模型用得最多 / 套餐内用了多少 / 套餐外又用了多少」走 plan-details;问"还剩多少额度"走 plan。
13
+
14
+ 查询 AgentPlan 套餐的 Model / Harness 调用明细时间序列。**支持个人版 (默认) + 团队版**(`--product=agent-plan-team`)。CodingPlan 后端没暴露按模型的明细 API,传 `coding-plan` 类 product 直接 ErrValidation。
15
+
16
+ ## 命令
17
+
18
+ ```bash
19
+ # 个人版,默认近 7 天 Day 粒度
20
+ arkcli usage plan-details
21
+
22
+ # 指定时间范围
23
+ arkcli usage plan-details --start 2026-05-01 --end 2026-05-31
24
+
25
+ # Hour 粒度 (单次范围 ≤ 31 天约束不变)
26
+ arkcli usage plan-details --start 2026-06-01 --end 2026-06-04 --interval Hour
27
+
28
+ # 过滤到特定模型 (--model 可重复)
29
+ arkcli usage plan-details --model doubao-1-5-pro
30
+
31
+ # === 团队版 ===
32
+ # 自动找 caller 绑定的 seat,跟 usage plan team 一样
33
+ arkcli usage plan-details --product agent-plan-team
34
+
35
+ # 显式指定一个或多个 seat (admin 视角看其他 seat,可重复)
36
+ arkcli usage plan-details --product agent-plan-team --seat seat-001
37
+ arkcli usage plan-details --product agent-plan-team --seat seat-001 --seat seat-002
38
+
39
+ # 全队聚合 (admin 全景视图,自动 ListSeatInfos 列全队后批量查)
40
+ arkcli usage plan-details --product agent-plan-team --all-seats
41
+
42
+ # Admin server-side 按子用户过滤 (后端 Filter,跟 --all-seats 配套用最方便)
43
+ arkcli usage plan-details --product agent-plan-team --all-seats --seat-user-name alice
44
+ arkcli usage plan-details --product agent-plan-team --all-seats --seat-user-id 12345
45
+ ```
46
+
47
+ ## 参数
48
+
49
+ | 参数 | 必填 | 类型 | 说明 |
50
+ |------|------|------|------|
51
+ | `--start` | **是** | string | 开始日期(`YYYY-MM-DD`)。后端约束: 单次范围 ≤ 31 天 / 历史 ≤ 6 个月 |
52
+ | `--end` | 否 | string | 结束日期(`YYYY-MM-DD`,闭区间)。默认今天 |
53
+ | `--interval` | 否 | string | 查询粒度: `Day`(默认) / `Hour`。大小写不敏感 |
54
+ | `--model` | 否 | []string | 对客模型 / Harness 名称,可重复 |
55
+ | `--product` | 否 | string | `agent-plan`(默认,个人版,OpenAPI)\| `agent-plan-team`(团队版,**OpenAPI**,AK/SK + SSO 都行) |
56
+ | `--seat` | 否 | []string | **仅团队版**;SeatID 可重复(单次最多 1000)。不传时默认 `GetSeatInfo` 找 caller 单 seat |
57
+ | `--all-seats` | 否 | bool | **仅团队版,admin 视角**;先 `ListSeatInfos` 列全队 SeatIDs 再批量查。`--seat` 显式给值时优先,`--all-seats` 被覆盖 |
58
+ | `--seat-user-id` | 否 | []string | **仅团队版,admin 视角**;server-side 按子用户 ID 过滤(可重复) |
59
+ | `--seat-user-name` | 否 | []string | **仅团队版,admin 视角**;server-side 按子用户名过滤(可重复) |
60
+
61
+ ### 后端约束(client-side 校验)
62
+
63
+ - **单次范围 ≤ 31 天**(`end - start`):超出立即 ErrValidation 不发请求
64
+ - **历史窗口 ≤ 6 个月**(`end` 离 now 不能超过 ~180 天):超出立即 ErrValidation
65
+ - **end ≥ start**:反向时间范围立即 ErrValidation
66
+ - 时间格式必须 `YYYY-MM-DD`,其它格式立即 ErrValidation
67
+
68
+ ## 返回值
69
+
70
+ JSON 形态:
71
+
72
+ ```json
73
+ {
74
+ "details": [
75
+ {
76
+ "time": 1717000000000,
77
+ "object_name": "doubao-1-5-pro",
78
+ "usage": 1024,
79
+ "unit": "Tokens",
80
+ "billing_type": "WithinPlan"
81
+ },
82
+ {
83
+ "time": 1717000000000,
84
+ "object_name": "doubao-1-5-pro",
85
+ "usage": 256,
86
+ "unit": "Tokens",
87
+ "billing_type": "OutsideOfPlan",
88
+ "seat_id": "seat-001"
89
+ }
90
+ ]
91
+ }
92
+ ```
93
+
94
+ ### 字段说明
95
+
96
+ | 字段 | 说明 |
97
+ |---|---|
98
+ | `time` | 时间桶起点,**epoch ms**(后端 IDL 标 ms,跟 `usage plan` 的 CodingPlan ResetTimestamp 不同,这里不需要换算) |
99
+ | `object_name` | 对客展示的模型 / Harness 名称(如 `doubao-1-5-pro`) |
100
+ | `usage` | 该 (time, object_name, billing_type) 三元组的用量。整数,单位看 `unit` |
101
+ | `unit` | `Tokens` / `Images` / 其它(后端按模型类型决定) |
102
+ | `billing_type` | `WithinPlan`(套餐内,免费配额消耗)/ `OutsideOfPlan`(套餐外,走基础按 token 计费) |
103
+ | `seat_id` | **仅团队版**填充(`SeatUsageDetails[]` 展平时附带);个人版不出此字段 |
104
+
105
+ > **聚合提示**: 同一时间点可能 `WithinPlan` + `OutsideOfPlan` 两行并列。对接时:
106
+ > - 想看「这个模型今天总共调用了多少 token」→ 同 object_name 行 `usage` 累加
107
+ > - 想看「套餐内 vs 套餐外的用量比」→ 按 `billing_type` 分组合计
108
+
109
+ ## V1 限制
110
+
111
+ - **仅 AgentPlan 个人版**(`profile.Type=agent-plan` 或当前身份名下有 AgentPlan personal 订阅时数据非空)。AgentPlan 团队版(席位维度明细)对应后端 endpoint `GetSeatUsageDetails`,V1 未实装
112
+ - **不依赖 `ListAgentPlanModelMappingMeta`**: 控制台用它做"模型下拉框 + 'all models' 时塞全量 ObjectName 列表",CLI V1 简化掉:不传 `--model` 就让后端返聚合行,要拆模型自己传 `--model`
113
+ - **没有 PlanType filter**: 后端支持按套餐档位过滤(small/medium/large/max),CLI V1 没暴露;通常按身份当前生效订阅自动返,用户没有跨档位查询的必要
114
+ - **CodingPlan 不支持**: CodingPlan 后端没有按模型的调用明细 API(其 `GetCodingPlanUsage` 只返周期 `Percent`),这条命令对 CodingPlan profile 也只能查 AgentPlan,**故不开 `--product` flag**
115
+
116
+ ## AI Agent 决策路径
117
+
118
+ - 用户问「我哪个模型用得最多 / 套餐内套餐外各占多少」→ `arkcli usage plan-details`(默认近 7 天聚合)
119
+ - 用户问「上周哪天 token 消耗最大」→ `--start 2026-05-26 --end 2026-06-01`,output 按 `time` 排序
120
+ - 用户问「按小时看 5/15 当天的调用」→ `--start 2026-05-15 --end 2026-05-15 --interval Hour`
121
+ - 用户问「`doubao-1-5-pro` 的趋势」→ `--model doubao-1-5-pro`(单模型时间序列,套餐内+套餐外两行/桶)
122
+ - 用户问「我的套餐用了百分之几 / 几号刷新」→ 这条命令是**逐次累加视角**,看 quota 快照走 [`usage plan`](arkcli-usage-plan.md)
123
+ - 用户问「按 token 计费的 inference 用量,不是套餐」→ 转 [`usage stats`](arkcli-usage-stats.md)
124
+
125
+ ## 错误降级
126
+
127
+ - **未订阅 AgentPlan**: 后端返 Result=nil,CLI 输出 `{"details":[]}`(空数组而非 null)。要确认是不是订阅问题,先跑 `arkcli usage plan --product=agent-plan` 看 `subscribed` 字段
128
+ - **AccessDenied**: 通常是 sub-user 没 AgentPlan 权限,转 [arkcli-auth](../../arkcli-auth/SKILL.md) 排查身份
129
+ - **范围错误**: 看 ErrValidation 提示(31 天限 / 6 月历史窗口 / YYYY-MM-DD 格式)直接修 flag
130
+
131
+ ## 调用面对齐
132
+
133
+ - 个人版调 OpenAPI **`/open/GetUsageDetails`**(AK/SK + SSO 都支持);arkcli 用公网 OpenTOP 不带 AgentPlan 前缀的入口
134
+ - 团队版调 OpenAPI **`/open/GetSeatUsageDetails`** + **`/open/GetSeatInfo`**(找 caller seat),都是公网入口,AK/SK + SSO 都行
135
+ - 默认窗口 `今天 - 6 天 ~ 今天`
136
+ - 后端 31 天 / 6 月窗口约束 client-side 前置校验,不发请求,把错误暴露在 CLI 层