Skip to content

成本追踪 (cost-tracker.ts)

cost-tracker.tscostHook.ts 实现实时的 AI API 调用成本追踪,支持多模型差异化定价。

成本追踪函数(非类)

注意

成本追踪使用 函数式 风格实现,而非 OOP 类模式。状态存储在 AppState 中。

typescript
// 核心函数(非 CostTracker 类)
function getStoredSessionCosts(sessionId: string): StoredCostState | undefined  // 获取存储的会话成本
function restoreCostStateForSession(sessionId: string): boolean  // 恢复会话成本状态
function saveCurrentSessionCosts(fpsMetrics?: FpsMetrics): void  // 保存当前会话成本
function addToTotalSessionCost(cost: number, usage: Usage, model: string): number  // 累加成本

模型定价

typescript
// utils/modelCost.ts
type ModelCosts = {
  inputTokens: number              // 每百万输入 token 价格 ($)
  outputTokens: number             // 每百万输出 token 价格 ($)
  promptCacheReadTokens: number    // 缓存读取价格
  promptCacheWriteTokens: number   // 缓存写入价格
  webSearchRequests: number        // 网页搜索请求价格
}

// 定价常量(按层级划分,非单一 Record)
const COST_TIER_3_15: ModelCosts = {      // Sonnet 系列
  inputTokens: 3,
  outputTokens: 15,
  promptCacheWriteTokens: 3.75,
  promptCacheReadTokens: 0.3,
  webSearchRequests: 0.01,
}

const COST_TIER_15_75: ModelCosts = {     // Opus 4/4.1
  inputTokens: 15,
  outputTokens: 75,
  promptCacheWriteTokens: 18.75,
  promptCacheReadTokens: 1.5,
  webSearchRequests: 0.01,
}
// 其他层级: COST_TIER_5_25 (Opus 4.5), COST_TIER_30_150 (Opus 4.6 fast), COST_HAIKU_35, COST_HAIKU_45

costHook.ts — React 集成

typescript
// 成本相关 Hook
function useCostSummary() {
  // 返回成本摘要信息(非 useCost/useTokenUsage)
}

StatusLine 集成

成本信息实时显示在 StatusLine 中:

 claude-sonnet-4  |  CTX: 45K/200K  |  $0.42  |  ↑2.1K ↓15.3K
  • CTX: 上下文使用量 / 模型限制
  • $0.42: 当前会话成本
  • ↑2.1K: 输入 token 数
  • ↓15.3K: 输出 token 数