成本追踪与 Fast Mode Deep-Dive

May 22, 2026 · View on GitHub

用户如何了解 AI Agent 的实际花费?能否在速度和成本之间灵活切换?本文基于 Claude Code(v2.1.89 源码分析)和 Qwen Code(v0.16.0 开源)的源码分析,对比两者在成本追踪、Fast Mode 速度分级和并发会话管理方面的差异。


1. 架构总览

维度Claude CodeQwen Code
成本显示USD 金额 + 按模型分项 + cache 效率Token 计数 + 请求数 + cache 效率百分比;v0.16.0 起若配置 modelPricing 则显示 USD 估算
成本持久化按 session ID 存储在项目配置中无持久化
Fast Mode✅ Opus 4.6 标准/快速切换($5→$30/Mtok)❌(仅 --fast 指定备用模型)
并发 Session✅ PID 文件追踪 + 后台 Agent 脱附无跨终端追踪

2. Claude Code:USD 成本追踪

2.1 成本累计

// 源码: cost-tracker.ts
// 每次 API 响应后调用:
addToTotalSessionCost(model, usage)
calculateUSDCost(model, usage)     // 按定价表计算 USD
addToTotalModelUsage(model, usage)  // 按模型分项累计
getCostCounter().add(cost)          // OpenTelemetry 指标

2.2 /cost 命令输出

Total cost:            \$1.25
Total duration (API):  2m 45s
Total duration (wall): 5m 30s
Total code changes:    25 lines added, 8 lines removed

Usage by model:
  Opus 4.6:    100,000 input, 45,000 output, 5,000 cache read, 2,500 cache write (\$0.95)
  Sonnet 4.6:  50,000 input, 12,000 output (\$0.30)

关键信息

  • USD 金额精确到分
  • Cache read / write tokens 分开显示——用户可判断 prompt cache 效率
  • 按模型分项——用户可识别哪个模型消耗最多
  • API 时间 vs 总时间——区分网络延迟和工具执行时间

2.3 会话成本持久化

// 源码: cost-tracker.ts
// 保存到项目配置:
saveCurrentSessionCosts() → config.projects[projectPath] = {
  lastSessionId, lastCost, lastAPIDuration, lastModelUsage, lastLinesChanged
}
// --resume 恢复时:
restoreCostStateForSession() → 检查 sessionId 匹配后恢复累积成本

2.4 Fast Mode

// 源码: utils/fastMode.ts
// 切换: /fast 命令 或 设置 fastMode: true
// 定价: Opus 4.6 Standard \$5/\$25 → Fast \$30/\$150 per Mtok

// 冷却机制:
type FastModeState =
  | { status: 'active' }
  | { status: 'cooldown'; resetAt: number; reason: 'rate_limit' | 'overloaded' }

// 429 错误 → triggerFastModeCooldown(resetTimestamp, reason)
// 冷却结束 → 自动恢复 active

与重试集成(源码: services/api/withRetry.ts):

  • retry-after(<20s):保持 Fast Mode 重试(保留 cache)
  • retry-after:进入冷却,回退到 Standard
  • Overage rejection:永久禁用 Fast Mode

2.5 并发 Session 管理

// 源码: utils/concurrentSessions.ts
// PID 文件: ~/.claude/sessions/{pid}.json
{
  pid: 12345,
  sessionId: "abc-123",
  cwd: "/path/to/project",
  kind: "interactive" | "bg" | "daemon" | "daemon-worker",
  name: "background-session-name",
  startedAt: 1704067200000
}
// countConcurrentSessions() — 扫描 PID 文件,过滤已退出进程
// 自动清理: registerCleanup() 在退出时删除 PID 文件

3. Qwen Code:Token 统计

3.1 /stats 命令

// 源码: qwen-code/packages/cli/src/ui/components/StatsDisplay.tsx
// 显示内容:
// - Session ID、工具调用(成功/失败)、成功率
// - Wall time、Agent 活跃时间、API 时间占比
// - 按模型分项: 模型名、请求数、输入/输出 tokens
// - Cache 效率: "{cacheEfficiency.toFixed(1)}% of input from cache"

3.2 USD 成本估算(v0.16.0 新增,可选)

Qwen Code 的 /stats model 在 v0.16.0 中新增了 USD 成本估算能力。当用户在 settings 中配置 modelPricing(每百万 token 的输入/输出价格)时,/stats model 子命令会计算并显示估算成本:

// 源码: packages/cli/src/ui/commands/statsCommand.ts
const pricing = context.services.settings.merged.modelPricing;
const cost = calculateCost({
  inputTokens: modelMetrics.tokens.prompt,
  outputTokens: modelMetrics.tokens.candidates + modelMetrics.tokens.thoughts,
  pricing: pricing?.[modelName],
});
if (cost != null) {
  lines.push(`  Estimated cost: $${cost.toFixed(4)}`);
}
// 源码: packages/cli/src/utils/costCalculator.ts
export function calculateCost({ inputTokens, outputTokens, pricing }) {
  // 基于用户配置的 inputPerMillionTokens / outputPerMillionTokens 计算
  // 未配置定价 → 返回 null(不显示)
}

未配置 modelPricing 时仍只显示 token 数量和 cache 效率百分比。这解决了多 Provider(Google/Qwen/Anthropic/OpenAI)定价差异大的问题——用户自行配置各模型定价,无需工具内置固定价格表。

3.3 /model --fast

// 源码: qwen-code/packages/cli/src/ui/commands/modelCommand.ts
// /model --fast <modelName> → 设置后台任务的备用快速模型
// 与 Claude Code 的 Fast Mode 不同:
// - Claude: 同一模型的不同推理速度(相同 Opus 4.6,不同 QPS/价格)
// - Qwen: 指定另一个更快的模型(如用 Haiku 替代 Opus)

4. 对比

维度Claude CodeQwen Code
成本单位USD 金额Token 数量;配置 modelPricing 后显示 USD 估算(v0.16.0)
按模型分项✅ 含 cache read/write 分项✅ 含 cache 效率百分比
成本持久化✅ 跨 --resume 累加
Fast Mode✅ 同模型速度切换 + 冷却 + 重试集成⚠️ --fast 指定备用模型(非速度分级)
并发追踪✅ PID 文件 + 后台脱附
代码变更统计✅ lines added/removed

5. 关键源码文件

Claude Code

文件职责
cost-tracker.ts成本累计、持久化、/cost 格式化
utils/modelCost.ts定价表(7 个价格档)
utils/fastMode.tsFast Mode 状态机 + 冷却
commands/fast/fast.tsx/fast 命令 UI
commands/cost/cost.ts/cost 命令
utils/concurrentSessions.tsPID 追踪 + 并发计数

Qwen Code

文件职责
packages/cli/src/ui/components/StatsDisplay.tsx统计 UI
packages/cli/src/ui/commands/statsCommand.ts/stats 命令(v0.16.0 新增 USD 估算)
packages/cli/src/utils/costCalculator.tsUSD 成本计算函数(v0.16.0 新增)
packages/cli/src/ui/commands/modelCommand.ts/model --fast(v0.16.0 增加 auth-type 感知的模型切换)
packages/core/src/telemetry/metrics.tsOpenTelemetry 指标

免责声明: 以上分析基于 2026 年 Q1 初稿,2026-05-22 对照 v0.16.0 复核。