Skip to content

Token Stats:成本視角的統計口徑與圖表解讀

你已經把客戶端接進 Antigravity Tools 了,但「到底誰在燒錢、貴在哪、是不是某個模型突然飆了」通常很難靠直覺判斷。這一課只做一件事:把 Token Stats 頁裡的資料口徑講清楚,並教你用圖表快速定位成本問題。

學完你能做什麼

  • 說清楚 Token Stats 的資料來自哪裡(什麼時候會記錄、什麼情況下會缺失)
  • 按小時/日/週切換觀察視窗,避免「只看一天」導致誤判
  • 在「按模型/按帳號」兩種視圖下,用趨勢圖找異常峰值
  • 用 Top 列表鎖定最貴模型/帳號,再回到請求日誌追根因

你現在的困境

  • 你感覺調用變貴了,但不知道是模型變了、帳號變了,還是某天突然量大
  • 你看到了 X-Mapped-Model,但不確定統計到底按哪個模型口徑算
  • Token Stats 裡偶爾是 0 或「暫無資料」,不知道是沒流量還是沒統計到

什麼時候用這一招

  • 你要做成本優化:先把「誰最貴」量化出來
  • 你在排查突發限流/異常:用峰值時間點去對照請求日誌
  • 你在做模型路由/配額治理配置變動後,想驗證成本是否按預期下降

什麼是 Token Stats?

Token Stats是 Antigravity Tools 的本地用量統計頁:代理在轉發請求後,會嘗試從響應 JSON 或流式資料中提取 usage/usageMetadata 裡的 token 數,並把每次請求按帳號與模型寫入本機 SQLite(token_stats.db),最後在 UI 裡按時間/模型/帳號彙總展示。

先說明一個容易踩的點

Token Stats 的「模型」口徑來自你請求裡的 model 欄位(或 Gemini 的 /v1beta/models/<model> 路徑解析),不等於路由後的 X-Mapped-Model

🎒 開始前的準備

  • 你已經跑通過一次代理調用(不會只停留在 /healthz 探活)
  • 你的上游響應會返回可解析的 token 用量欄位(否則統計會缺失)

推薦搭配閱讀

如果你正在用模型映射把 model 路由到別的物理模型,建議先看 模型路由:自訂映射、萬用字元優先順序與預設策略,再回來看「統計口徑」會更直觀。

核心思路

Token Stats 的資料鏈路可以拆成三段:

  1. 代理中介軟體嘗試從響應裡提取 token 用量(相容 usage/usageMetadata,流式也會解析)
  2. 如果同時拿到了 account_email + input_tokens + output_tokens,就寫入本機 SQLite(token_stats.db
  3. UI 透過 Tauri invoke(get_token_stats_*) 拉取聚合資料,按小時/日/週展示

跟我做

第 1 步:先確認你「有流量」

為什麼 Token Stats 統計來自真實請求。只啟動代理但沒發過一次模型請求,頁面就會顯示「暫無資料」。

做法:複用你在 啟動本地反代並接入第一個客戶端 裡已經驗證成功的那種調用方式,發 1-2 次請求。

你應該看到:Token Stats 頁面從「載入中/暫無資料」變成有圖表或列表。

第 2 步:選對時間視窗(小時/日/週)

為什麼 同一份資料在不同視窗下看到的「峰值/趨勢」完全不一樣。UI 裡三種視窗對應的取數範圍也不同:

  • 小時:最近 24 小時
  • 日:最近 7 天
  • 週:最近 4 週(趨勢視圖會按最近 30 天聚合)

你應該看到:切換後,趨勢圖橫軸粒度變化(小時顯示到「時」,日顯示到「月/日」,週顯示到「年-W週號」)。

第 3 步:先看頂部總覽,確定「成本規模」

為什麼 總覽卡片能先回答 3 個問題:總量大不大、輸入/輸出佔比是否異常、參與的帳號/模型是不是突然變多。

重點看這幾項:

  • 總 Token(total_tokens
  • 輸入/輸出 Token(total_input_tokens / total_output_tokens
  • 活躍帳號數(unique_accounts
  • 使用模型數(UI 直接用「分模型統計列表」的長度)

你應該看到:如果「活躍帳號數」突然飆高,通常意味著你在短時間內跑了更多帳號(例如切換到輪換策略)。

第 4 步:用「分模型/分帳號使用趨勢」抓異常峰值

為什麼 趨勢圖是最適合抓「突然變貴」的入口。你不用先知道原因,先把「哪天/哪小時飆了」圈出來。

做法:

  1. 在趨勢圖右上角切換「按模型 / 按帳號」
  2. 滑鼠懸停(Tooltip)看 Top 值,優先關注「突然衝到第一的那條」

你應該看到

  • 按模型:某個模型在某個時間段突然抬升
  • 按帳號:某個帳號在某個時間段突然抬升

第 5 步:用 Top 列表把「最貴目標」鎖死

為什麼 趨勢圖告訴你「什麼時候異常」,Top 列表告訴你「誰最貴」。把這兩個交叉,就能快速定位排障範圍。

做法:

  • 在「按模型」視圖下,看「分模型詳細統計」表格的 total_tokens / request_count / 佔比
  • 在「按帳號」視圖下,看「帳號詳細統計」表格的 total_tokens / request_count

你應該看到:最貴模型/帳號排在前面,且 request_count 能幫你區分「單次特別貴」還是「次數特別多」。

第 6 步(可選):找到 token_stats.db,做備份/核對

為什麼 當你懷疑「統計缺失」或想做離線分析時,直接拿 SQLite 檔案最靠譜。

做法:進入 Settings 的 Advanced 區域,點擊「打開資料目錄」,你會在資料目錄裡找到 token_stats.db

你應該看到:檔案列表裡有 token_stats.db(檔名由後端寫死)。

檢查點 ✅

  • 你能說清楚 Token Stats 統計是「從響應裡的 usage/usageMetadata 提取後落到本地 SQLite」,不是雲端計費
  • 你能在「按模型/按帳號」兩種趨勢視圖下,指出一個具體的峰值時間段
  • 你能用 Top 列表給出一個可執行的排查結論:先查哪個模型或帳號

踩坑提醒

現象常見原因你可以怎麼做
Token Stats 顯示"暫無資料"你確實沒產生模型請求;或上游響應沒帶可解析的 token 欄位先複用已驗證可用的客戶端發請求;再看響應裡是否包含 usage/usageMetadata
統計按"模型"看起來不對統計口徑使用請求裡的 model,不是 X-Mapped-Model把模型路由當成"請求模型 -> 映射模型";統計看的是"請求模型"
帳號維度缺失只有拿到 X-Account-Email 且解析到 token 用量時才會寫入確認請求確實走到了帳號池;再對照請求日誌/響應標頭
啟用 Proxy Monitor 後統計資料偏大當 Proxy Monitor 啟用時,每次請求的 token 會被記錄兩次這已知的實作細節,不影響相對趨勢分析;如果需要精確值,可以暫時停用 Monitor 後重測

本課小結

  • Token Stats 的核心價值是「把成本問題量化」,先定位,再優化
  • 統計寫入時,帳號和 token 用量是必須的;模型缺失時會被記錄為 "unknown"(不會阻止寫入)
  • 想做更精細的成本控制,下一步通常會回到模型路由或配額治理

下一課預告

下一課我們解決長會話裡的「隱性穩定性問題」:長會話穩定性:上下文壓縮、簽名快取與工具結果壓縮

你會學到:

  • 三層漸進式上下文壓縮分別在做什麼
  • 為什麼「簽名快取」能減少 400 簽名錯誤
  • 工具結果壓縮會刪掉什麼、保留什麼

附錄:原始碼參考

點擊展開查看原始碼位置

更新時間:2026-01-23

功能檔案路徑行號
---------
Token Stats UI:時間視窗/視圖切換與取數src/pages/TokenStats.tsx49-166
Token Stats UI:空資料提示("暫無資料")src/pages/TokenStats.tsx458-507
Token 用量提取:從請求解析 model、從響應解析 usage/usageMetadatasrc-tauri/src/proxy/middleware/monitor.rs32-120
Token 用量提取:流式與 JSON 響應解析 usage 欄位src-tauri/src/proxy/middleware/monitor.rs122-336
Token Stats 寫入點:拿到帳號+token 後寫入 SQLitesrc-tauri/src/proxy/monitor.rs79-136
資料庫檔名與表結構:token_stats.db / token_usage / token_stats_hourlysrc-tauri/src/modules/token_stats.rs58-126
寫入邏輯:record_usage(account_email, model, input, output)src-tauri/src/modules/token_stats.rs128-159
查詢邏輯:小時/日/週、按帳號/按模型、趨勢與總覽src-tauri/src/modules/token_stats.rs161-555
Tauri 命令:get_token_stats_* 對前端暴露src-tauri/src/commands/mod.rs791-847
應用啟動時初始化 Token Stats DBsrc-tauri/src/lib.rs50-56
設定頁:取得/打開資料目錄(用於找到 token_stats.dbsrc/pages/Settings.tsx76-143