返回技能市场
企业经营 安全

千问AI-用量与账单

@qianwen-ai/qianwen-usage

管理账户认证并查询用量、账单和订阅。适用场景:登录、退出登录、检查用量、查看账单、免费额度、Token Plan 状态、按量付费成本、已结算账单、模型成本明细、调用日志(哪些请求失败、4xx/5xx 错误、请求延迟、近期调用的模型、按请求 ID 查询)、订阅状态、订单历史、团队席位、PAYG 支出限额。不适用场景:浏览模型、支付/充值(使用 qianwen-payment)、与账户无关的任务。

千问AI平台 热度 586v0.0.2

千问AI平台用量

千问AI平台账户、用量、账单和订阅的统一入口:身份验证状态、用量汇总、免费额度、Token Plan、按量付费、已结算账单、模型成本明细、订阅状态、订单历史、团队席位和 PAYG 消费限额。

前提条件

  • 千问AI平台 CLI 必须已安装。运行以下命令进行验证:
qianwen version

如果尚未安装,请运行:

npm install -g @qianwenai/qianwen-cli

要求 Node.js 版本 >= 18。

  • 身份验证:首次使用时无需配置。CLI 会自动处理非 TTY 环境检测和安全登录(请参见下文“身份验证流程”)。

环境变量

| 变量 | 说明 | |---------------------------|----------------------------------------------------------------------------------------------| | QIANWEN_KEYRING | 将其设置为 plaintextno0falseoff,可选择不使用 OS 钥匙串存储凭据。 | | QIANWEN_CREDENTIALS_DIR | 覆盖基于文件的凭据目录(默认值:~/.qianwen/credentials)。 |

执行基准

以下规则适用于此 skill 中的每条命令:

  • CLI 版本基准:1.3.0。 执行前,检查 qianwen version。如果已安装的版本低于 1.3.0,则不得调用可能缺失的命令(尤其是 billingsubscription 命令组);应说明已安装的 CLI 早于该基准版本,并等待用户确认升级后再继续。(这是每次运行时进行的执行前检查,与下文“CLI 更新检查”部分不同;后者仅适用于用户明确询问 CLI 更新的情况。)
  • 仅限白名单。 只能运行本文档中记录的命令和参数。不得拼接任意 shell 字符串,也不得将未经检查的用户输入传入命令行。
  • 统一的结果状态。 每条命令的结果都必须映射为以下五种状态之一:success / partial / empty / confirmation_required / error。不得使用模拟数据填补缺失或失败的结果——应如实报告实际情况。
  • 仅使用 CLI 输出中的 URL。 仅展示 CLI 返回的 URL(例如 verification_url)。禁止根据名称或猜测编造 URL。

认证流程(适用于 Agents)

CLI 会自动检测非 TTY 环境并安全降级,无需包装脚本。

TL;DR — 3 步认证流程

  1. qianwen auth status --format jsonauthenticated: true → 直接执行命令
  2. qianwen auth login --init-only --format json → 提取 verification_url → 在浏览器中打开
  3. qianwen auth login --complete --format json → 轮询直至出现 success 事件

快速检查:是否已登录?

qianwen auth status --format json

如果 authenticated: true 且令牌未过期,则完全跳过登录。

推荐:两阶段登录

适用于所有环境(桌面、无头、远程容器)。

步骤 1 — 初始化登录(非阻塞):

qianwen auth login --init-only --format json

命令会立即退出。解析 stdout 输出的 JSON 中的 events 数组:

  • already_authenticated → 用户已登录,直接执行命令
  • device_code → 提取 verification_url 并展示给用户

在带浏览器的桌面环境中,为用户打开该 URL:

open "$VERIFICATION_URL"          # macOS
xdg-open "$VERIFICATION_URL"      # Linux
start "" "$VERIFICATION_URL"      # Windows

步骤 2 — 立即开始轮询(不得等待用户确认):

qianwen auth login --complete --format json

解析 stdout 输出的 JSON 中的 events 数组:

  • success → 登录完成,继续执行命令
  • expired → 设备代码已过期,返回步骤 1
  • error → 报告失败

TTY 环境(交互式终端)

如果 agent 运行在 TTY 中(例如用户的终端),只需运行:

qianwen auth login

CLI 会自动打开浏览器并持续轮询,直至授权完成。

JSON 事件结构

--init-only--complete 均输出一个 JSON 文档:

{
  "events": [
    {"event": "device_code", "verification_url": "...", "expires_in": 300},
    {"event": "success", "authenticated": true, "user": {"aliyunId": "..."}}
  ]
}

事件类型:already_authenticateddevice_codesuccessexpirederrorpending

严禁:

  • ❌ 在运行 --complete 前询问用户“您是否已完成授权?”
  • ❌ 轮询前等待用户确认——展示 URL 后必须立即运行 --complete
  • ❌ 未完成登录流程便重新运行 --init-only(这会创建新的设备代码,并使之前的代码失效)

用法

所有命令均支持使用 --format json 输出结构化、可供机器解析的结果(建议默认使用),也支持使用 --format text 输出简洁的纯文本结果。

供 agent 使用时,始终优先选择 --format json,并解析 JSON 响应。仅当用户明确要求人类可读的纯文本时,才改用 --format text

禁止以编程方式解析 table 格式——其中包含 ANSI 代码和 Unicode 边框。

身份验证命令

qianwen auth status — 检查当前身份验证状态

qianwen auth status --format json

qianwen auth logout — 撤销服务端会话并清除本地凭据

⚠️ 需要确认:登出会使当前会话失效。必须先征得用户确认(confirmation_required 状态);只有在用户明确确认后才能运行该命令。

qianwen auth logout

用量命令

qianwen usage summary — 查看用量汇总(免费额度、Token Plan、按量付费)

qianwen usage summary                      # Current month
qianwen usage summary --period last-month  # Last month
qianwen usage summary --from 2026-03-01 --to 2026-03-31
qianwen usage summary --format json        # JSON output

周期预设值todayyesterdayweekmonth(默认值)、last-monthquarteryearYYYY-MM

qianwen usage breakdown — 查看模型用量明细

qianwen usage breakdown --model qwen3.6-plus --days 7
qianwen usage breakdown --model qwen3.5-plus --period 2026-03
qianwen usage breakdown --model qwen-plus --period 2026-03 --granularity month
qianwen usage breakdown --model qwen3.6-plus --format json

qianwen usage free-tier — 查看免费额度详情

qianwen usage free-tier
qianwen usage free-tier --format json

qianwen usage payg — 查看按量付费计费详情

显示按量付费的实时、尚未结算消费。对于已最终确定并结算的账期,请使用 qianwen billing summary(请参阅下文的账单命令)。

qianwen usage payg
qianwen usage payg --format json
qianwen usage payg --period month --format json   # Recommended: current month real-time PAYG

qianwen usage logs — 浏览分页调用日志(逐请求历史记录),可按时间、模型和状态筛选

此命令用于处理请求级问题——“哪些调用失败了?”、“显示 4xx/5xx 错误”、“这些请求耗时多久?”、“我最近调用了哪些模型?”、“查询此请求标识符”。这与 usage summary/breakdown(汇总词元/费用)不同——失败诊断、延迟和调用历史问题应交由此命令处理,而不是交给汇总/明细命令。

qianwen usage logs --period month --format json
qianwen usage logs --period 24h --status 4xx --status 5xx --format json   # recent client/server errors
qianwen usage logs --model qwen-plus --page 2 --page-size 50 --format json
qianwen usage logs --from 2026-07-25 --to 2026-08-07 --format json         # explicit range (must be ≤ 14 days)
qianwen usage logs --request-id 8c81644f-... --format json                # exact lookup

选项:

  • --from / --to — 日期范围(YYYY-MM-DD 或 RFC3339)
  • --period <preset>1h24h7dtodayyesterdayweekmonth,…(与 usage summary 属于同一预设系列)
  • --model <id> — 按模型筛选;可重复指定(可传入多个 --model 选项以包含多个模型)
  • --status <type> — 按状态筛选:0(已取消)、2xx(成功)、4xx(客户端错误)、5xx(服务器错误);可重复指定
  • --request-id <id> — 精确匹配请求标识符;设置后,将忽略所有其他筛选条件
  • --page <n>(默认值为 1)/ --page-size <n>(1..100)

⚠️ 14 天范围限制:解析后的时间范围必须不超过 14 天。任何超过 14 天的范围(无论通过 --from/--to 还是较长的 --period 指定)都会返回 INVALID_ARGUMENT(exit 4,"Time range cannot be longer than 14 days.")。要扫描更长的历史记录,请依次调用 --from/--to,以滑动一个不超过 14 天的窗口。这不同于可接受跨多月范围的 usage summary/breakdown

分页:结果按页返回。要遍历一个窗口内的完整历史记录,请从 --page 1 --page-size 100 开始,只要 page × pageSize < totalCount 成立,就持续递增 --page,直到取回 totalCount 所表示的全部条目。

JSON 结构(根据 CLI 源码——顶层包含 totalCount / page / pageSize / period / items;在 items[] 中,只有失败的调用才有 errorCodeusages 包含每次请求的词元/字符消耗量,失败/已取消的调用中该字段为空):

{
  "totalCount": 4,
  "page": 1,
  "pageSize": 20,
  "period": { "from": "2026-07-25", "to": "2026-08-07" },
  "items": [
    { "requestId": "8c81644f-...", "model": "wan3.0-video", "statusCode": 403, "durationMs": 548, "errorCode": "Forbidden.NoPermission", "usages": [] },
    { "requestId": "8e3a2c02-...", "model": "qwen3.8-max", "statusCode": 200, "durationMs": 956, "usages": [ { "type": "tokens", "total": 1820 } ] }
  ]
}

period.from / period.to 会回显解析后的时间窗口:日历型预设和显式指定的 --from/--to 日期以 YYYY-MM-DD 格式呈现,而滚动预设(1h24h7d)以 RFC3339 时间戳呈现。当没有匹配的调用时,CLI 会返回 totalCount: 0 和空的 items: []——将其映射为 empty 状态(不是错误)。

字段:requestId(用于关联服务端跟踪信息)、modelstatusCode(HTTP 风格的状态码——2xx 表示成功,4xx 表示客户端错误,5xx 表示服务器错误,0 表示已取消)、durationMs(调用延迟)、errorCode(失败原因,仅在非 2xx 调用中存在)、usages(每次请求的消耗量;失败/已取消的调用中为空)。使用 statusCode + errorCode 进行失败诊断,使用 durationMs 进行延迟分析。

明细参数:如何理解这些参数

三个相互独立的维度——可自由组合:

--model(必填)+ 日期范围 + 粒度

模型范围:

  • --model <id> — 单个模型(例如 qwen3.5-plus);用于用量明细查询时必填

日期范围 — 三种模式,根据用户描述时间段的方式选择:

| 模式 | 适用场景 | 工作方式 | |---|---|---| | --period YYYY-MM | 用户指定具体月份(“3 月”“去年 4 月”) | 完整的自然月,从月初到月末 | | --period <preset> | 用户描述相对时间段 | last-month = 上一个完整自然月;month = 本月至今;quarter = 本自然季度至今 | | --days N | 用户说“过去 N 天” | 以今天为起点向前回溯的滚动窗口,可自然跨越月份边界 | | --from YYYY-MM-DD --to YYYY-MM-DD | 用户给出明确日期,或指定某个季度/时间范围 | 可完全控制,在其他模式不适用时使用 |

粒度 — 决定结果的分组方式,而非时间范围:

  • day(默认)— 每天一行;适合发现用量峰值
  • month — 每个自然月一行;适合查看跨月趋势
  • quarter — 每季度一行;适合进行季度环比分析

典型示例:

# Single model, single month, daily detail
qianwen usage breakdown --model qwen3.5-plus --period 2026-03

# Single model, last 3 months, monthly summary
qianwen usage breakdown --model qwen3.5-plus --days 90 --granularity month

# Single model, specific quarter, quarterly rollup
qianwen usage breakdown --model qwen3.5-plus --from 2026-01-01 --to 2026-03-31 --granularity quarter

# Single model, this month, daily breakdown
qianwen usage breakdown --model qwen3.6-plus --period month

账单命令

qianwen billing summary — 首尾均包含的 YYYY-MM 账期范围内的已结算账单总额

qianwen billing summary --from 2026-05 --to 2026-07 --format json
qianwen billing summary --charge-type payg --format json   # payg | subscription | all (default)

返回已结算账单(已最终确定的账期)。这与 qianwen usage payg 不同,后者显示当前账期的实时、尚未结算用量 — 要查询“截至目前花了多少钱”,使用 usage payg;要查询“过去账期结算了多少费用”,使用 billing summary

cycles 按顺序覆盖 --from..--to 范围内的每个月,中间没有遗漏。每个账期都包含 billingCycleaftertaxAmountsettled 标志。chargeType 是内部值 — all 表示全部,订阅对应 prepaid,payg 对应 postpaid;金额均为十进制字符串。

读取 settled 以区分两种截然不同的状态:

  • settled: true → 该周期存在实际已结算的账单。aftertaxAmount 是实际金额,而 "0.000000" 表示账单金额确实为零(CLI 将其显示为 ¥0)。应将其报告为实际金额,而不是“无账单”。
  • settled: false → 服务器返回该月无账单;aftertaxAmountnull。CLI 将该月显示为 No bill;应报告为该月无账单,严禁报告为 ¥0

totals.aftertaxAmount 仅对已结算周期求和(未结算月份不计入)。

{
  "period": { "from": "2026-05", "to": "2026-08" },
  "chargeType": "all",
  "currency": "CNY",
  "cycles": [
    { "billingCycle": "202605", "aftertaxAmount": null, "settled": false },
    { "billingCycle": "202606", "aftertaxAmount": "3.710000", "settled": true },
    { "billingCycle": "202607", "aftertaxAmount": null, "settled": false },
    { "billingCycle": "202608", "aftertaxAmount": "0.000000", "settled": true }
  ],
  "totals": { "aftertaxAmount": "3.71" }
}

qianwen billing breakdown — 按模型(或 API 密钥)统计的消费额前 N 名

qianwen billing breakdown --period month --group-by model --top 10 --format json
qianwen billing breakdown --group-by api-key --top 10 --format json

选项:--group-by model|api-key(默认值为 model)、--top <n>(默认值为 10,最大值为 100)、--granularity day|month(默认值为 month)、--charge-type all|subscription|payg,以及 --period / --from / --to 日期范围。日粒度要求范围不超过 31 天;月粒度不超过 12 个月。

单周期查询的 JSON 结构(根据 CLI 源码,即原始 ConsumeBreakdown 对象):

{
  "groupBy": "model",
  "period": { "from": "2026-07-01", "to": "2026-07-29" },
  "chargeType": "all",
  "rows": [
    { "groupKey": "qwen3.6-plus", "groupLabel": "qwen3.6-plus", "amount": "5.20" },
    { "groupKey": "qwen-plus", "groupLabel": "qwen-plus", "amount": "1.80" }
  ],
  "totalRows": 12,
  "totalAmount": "9.80",
  "currency": "CNY"
}

当范围跨越多个周期(例如数个月)时,JSON 将改为按周期切片:{ "groupBy", "dateRange": { "from", "to" }, "granularity", "chargeType", "slices": [ { "period", "rows", "totalAmount" } ], "currency" }

qianwen billing limit — 按量付费消费限额和告警配置

qianwen billing limit --format json

只读 — 此命令仅显示 PAYG 支出限额;CLI 不支持修改该限额。如需更改,请引导用户前往控制台。

JSON 结构(根据 CLI 源码,即原始 UsageLimit 对象;未设置限额时,limitAmount 可能为 null):

{
  "status": "normal",
  "limitAmount": "500.00",
  "currency": "CNY",
  "alertThreshold": "80"
}

status 的取值:normal / active / exceeded / warning / unknown

订阅命令

qianwen subscription status — 汇总各套餐的订阅状态

qianwen subscription status --format json
qianwen subscription status --plan token --format json

JSON 结构(根据 CLI 源码:SubscriptionStatus 的字段加上 diagnosticsrecentOrders[].orderType.status 已映射为 Purchase / Paid 等显示标签;可空字段可能为 null,数组可能为空):

{
  "isGray": false,
  "plan": "Token Plan Team Edition",
  "period": { "start": "2026-07-01", "end": "2026-08-01" },
  "quota": { "remaining": 21000, "total": 25000, "usedPct": 16 },
  "autoRenew": true,
  "renewable": true,
  "remainingDays": 3,
  "seatTiers": [
    { "specType": "standard", "seats": 2, "totalCredits": 50000, "remainingCredits": 42000, "usedPct": 16, "nextCycleFlushTime": "2026-08-01" }
  ],
  "creditPacks": [
    { "instanceId": "cp-xxxxxxxx", "totalCredits": 10000, "remainingCredits": 8000, "expiresAt": "2026-12-31" }
  ],
  "recentOrders": [
    { "orderId": "20260701xxxx", "orderType": "Purchase", "orderTime": "2026-07-01 10:00:00", "amount": "199.00", "status": "Paid" }
  ],
  "diagnostics": []
}

状态由多个子调用的结果组合而成;部分失败会显示在 diagnostics 中(每个条目包含:apierrorCodeerrorMessage) — 应将此类结果映射为 partial 状态。如果 data 完全为 null,命令将以退出码 1 退出(error 状态)。

⚠️ 只有当 autoRenew 为 true 时,nextCycleFlushTime 才表示配额重置。autoRenewfalse(自动续订明确为 OFF)时,CLI 会为每个席位等级返回 nextCycleFlushTime: null,因此非空值可理解为“额度会在此日期恢复为满额”。如果 autoRenewnull(续订状态未知),该字段仍可能包含日期 — 不得将其表述为一定会重置。除非 autoRenewtrue,否则严禁告诉用户“您的额度将在 <date> 重置”。当 autoRenewfalse 时,应将 period.end 日期表述为到期日期,例如“您的订阅将于 <date> 到期;自动续订已关闭,因此如不续订,该套餐将失效” — 而不是重置日期。

qianwen subscription orders — 订单历史(购买 / 续订 / 升级)

qianwen subscription orders --page 1 --page-size 100 --format json
qianwen subscription orders --from 2026-01-01 --to 2026-06-30 --type purchase --format json

选项:--page <n>(默认值为 1)、--page-size <n>(默认值为 20,最大值为 100)、--type purchase|renew|upgrade--from / --toYYYY-MM-DD)。

分页:结果采用分页方式返回。要获取完整历史记录,请从 --page 1 --page-size 100 开始,然后在 pagination.page × pagination.pageSize < pagination.total 成立时不断递增 --page,直到检索到全部 pagination.total 个订单。

JSON 结构(根据 CLI 源码:orderType / status 为显示标签;amount 为包含货币符号的显示字符串):

{
  "orders": [
    { "orderId": "20260701xxxx", "orderType": "Purchase", "orderTime": "2026-07-01 10:00:00", "amount": "¥199.00", "currency": "CNY", "status": "Paid" }
  ],
  "pagination": { "page": 1, "pageSize": 100, "total": 231 },
  "diagnostics": []
}

qianwen subscription tokenplan status — Token Plan 实例详情(周期、自动续费、席位摘要)

qianwen subscription tokenplan status --format json

JSON 结构(根据 CLI 源码;对应的子调用失败时,period / autoRenew / renewable / seatSummary 的值为 null,请检查 diagnostics;额度值为十进制字符串):

{
  "product": "Token Plan Team Edition",
  "period": { "start": "2026-07-01", "end": "2026-08-01", "remainingDays": 3 },
  "autoRenew": { "enabled": true, "period": 1, "periodUnit": "M" },
  "renewable": { "canRenew": true, "interceptCode": null },
  "seatSummary": {
    "groups": [
      { "specType": "standard", "seats": 2, "assigned": 1, "totalValue": "50000", "surplusValue": "42000", "unit": "Credits", "nextCycleFlushTime": "2026-08-01" }
    ],
    "total": { "seats": 2, "totalValue": "50000", "surplusValue": "42000", "unit": "Credits" }
  },
  "diagnostics": []
}

如果四个数据字段均为 null,命令将以退出码 1 退出(error 状态)。

⚠️ 只有当 autoRenew.enabled 为 true 时,seatSummary.groups[].nextCycleFlushTime 才表示额度重置。autoRenew.enabledfalse(自动续费已明确设为 OFF)时,CLI 会为每个组返回 nextCycleFlushTime: null。如果 autoRenew 本身为 null(状态未知),仍可能存在日期——不得将其视为必定会重置。只有当 autoRenew.enabledtrue 时,才能说“额度将在 <date> 重置”;当其为 false 时,应将 period.end 表述为到期日期,除非续订,否则该套餐将在此日期后失效。

qianwen subscription tokenplan seats — 各席位详情和剩余额度(团队席位)

qianwen subscription tokenplan seats --page 1 --page-size 100 --format json
qianwen subscription tokenplan seats --spec-type standard --format json   # pro | standard

选项:--page <n>(默认值为 1)、--page-size <n>(默认值为 20,最大值为 100)、--spec-type pro|standard。分页规则与订单相同:在 page.current × page.size < page.total 成立时,不断递增 --page

JSON 结构(根据 CLI 源码;cycle / config 可能为 nullcycle.surplusValue 是该席位在当前周期的剩余额度):

{
  "page": { "current": 1, "size": 100, "total": 2 },
  "filter": { "specType": null },
  "items": [
    {
      "instanceCode": "tp-xxxxxxxx",
      "specType": "standard",
      "status": "NORMAL",
      "memberId": "12xxxxxxxxxxxx34",
      "assignable": true,
      "assignment": "assigned",
      "payMode": "Subscription",
      "productType": "TokenPlan",
      "cycle": { "startTime": "2026-07-01", "endTime": "2026-08-01", "totalValue": "25000", "surplusValue": "21000", "unit": "Credits" },
      "config": { "planType": "standard", "creditValue": 25000, "seatNum": 1, "quotaCycle": "MONTH" }
    }
  ],
  "diagnostics": []
}

输出与 Agent 展示规则

在 agent/管道环境中,CLI 命令默认返回 JSON(auto 格式:TTY → 表格,管道 → JSON)。 JSON 是 agents 的主要输出模式 — 必须始终显式传入 --format json,解析结构化响应,然后向用户展示易于阅读的摘要。

JSON 输出示例(--format json

qianwen usage summary --period month --format json

返回包含三个部分的结构化 JSON:

{
  "period": { "from": "2026-04-01", "to": "2026-04-24" },
  "free_tier": [
    { "model_id": "qwen3.6-plus", "quota": { "remaining": 850000, "total": 1000000, "unit": "tokens", "used_pct": 15 } }
  ],
  "token_plan": {
    "subscribed": true,
    "planName": "Token Plan Team Edition",
    "status": "valid",
    "totalCredits": 25000,
    "remainingCredits": 21000,
    "usedPct": 16,
    "resetDate": "2026-05-01",
    "addonRemaining": 8000
  },
  "pay_as_you_go": {
    "models": [
      { "model_id": "qwen3.6-plus", "usage": { "tokens_total": 480000 }, "cost": 0.38, "currency": "CNY" },
      { "model_id": "qwen-plus", "usage": { "tokens_total": 460000 }, "cost": 0.13, "currency": "CNY" }
    ],
    "total": { "cost": 0.51, "currency": "CNY" }
  }
}
关于 token_plan 的说明:中国站(千问AI平台 CLI)会返回上文所示的 token_plan 分支。编程套餐是国际站(qwencloud)的概念——中国站不会生成编程套餐展示分支。

文本输出示例(--format text

qianwen usage summary --period month --format text
Usage Summary  ·  2026-04-10

-- Free Tier Quota -------------------------------------------------------
Model                Remaining      Total          Progress
qwen3.6-plus         850K tokens    1M tokens      85% left
wan2.6-t2i           38 images      50 images      76% left
--------------------------------------------------------------------------

-- Token Plan  ·  Token Plan Team Edition - Standard Seat  ·  valid-------
Usage:      25K / 25K Credits
Quota Left: 100%
Status:     valid
Resets:     2026-06-01
--------------------------------------------------------------------------

-- Pay-as-you-go · 2026-04-01 → 2026-04-10 -------------------------------
Model                Usage              Cost
qwen3.6-plus         480K tok           $0.38
qwen-plus            460K tok           $0.13
--------------------------------------------------------------------------
Total                —                  $0.51

⚠️ 关键:如何向用户呈现输出

使用 --format json 时(建议 agents 使用):

  1. 解析 JSON,并提取与用户问题相关的数据
  2. 提供便于用户理解的摘要 — 不得将原始 JSON 直接输出给用户
  3. 在摘要之后添加分析 — 使用 --- 清晰分隔

使用 --format text 时:

  1. 原封不动地显示 CLI 输出 — 不做任何修改或重新格式化
  2. 保留所有格式 — 对齐、空格、进度条和分隔线
  3. 仅在输出之后添加分析 — 使用 --- 清晰分隔

严禁:

  • ❌ 未经解读便将原始 JSON 输出给用户
  • ❌ 重新格式化或总结文本/表格输出
  • ❌ 添加“以下是您的使用情况:”之类的前缀
  • ❌ 将文本/表格输出转换为项目符号列表

✅ 正确(JSON 模式):

Your QianWen usage for April:

**Free Tier**: qwen3.6-plus has 85% remaining (850K / 1M tokens), wan2.6-t2i has 76% remaining (38 / 50 images).
**Token Plan (PRO)**: 8% used this month (82.5K / 90K requests).
**Pay-as-you-go**: $0.51 total — qwen3.6-plus $0.38, qwen-plus $0.13.

---

**💡 Analysis**: Your qwen3.6-plus free tier is 85% remaining...

✅ 正确(文本模式):

[CLI text output - exactly as-is]

---

**💡 Analysis**: Your qwen3.6-plus free tier is 85% remaining...

❌ 错误:

Here's your usage:
- qwen3.6-plus: 850K tokens remaining (85% left)

退出码

| 代码 | 含义 | |------|----------------------| | 0 | 成功 | | 1 | 常规错误/用法错误 | | 2 | 身份验证错误 | | 3 | 网络错误 | | 4 | 配置错误 | | 130 | 已中断 |

  • 退出码非零时,仍应先尝试解析 stdout 中的任何结构化 JSON — 其中可能包含可用的错误载荷或部分结果。
  • 当退出码为 2(身份验证错误)时:引导用户完成身份验证流程,然后最多重试一次原任务。禁止反复尝试登录。

CLI 更新检查

当用户明确要求检查 CLI 更新时(例如“检查 CLI 更新”“检查 CLI 版本”“CLI 有新版本吗”):

  1. 运行:qianwen version --check
  2. 报告结果。

千问AI平台 CLI 原生支持更新通知;此 skill 无需额外处理 stderr 信号。

实现说明

  • 按量付费:API 仅返回总用量(不区分输入/输出)
  • Token Plan:在套餐层级汇总请求数(不按模型细分)
  • logout:撤销服务端会话并清除本地凭据(密钥链和文件)。服务端调用采用尽力而为的方式——本地登出始终成功。
  • 身份验证:使用带有 PKCE 的 OAuth 2.0 设备授权许可。系统会在可用时将凭据存储在 OS 密钥链中,并以加密文件作为后备方案。
  • breakdown --model 为必填项:与之前的 Python 实现不同,CLI 要求为 breakdown 指定 --model。如需查询所有模型的用量,请改用 qianwen usage summary
qianwen skills install @qianwen-ai/qianwen-usage