跳至主要內容
Mark Ku's Blog

前言:工具開一排,額度到底燒到哪去了

現在寫程式,同時開著 Claude Code、Codex、GitHub Copilot、Cursor 已經很正常。但工具一多,幾個問題就來了:

  • 快撞上限了嗎?通常都是跳警告才知道。
  • 錢花在哪個工具上?每家都有自己的後台,要比就得一個一個開。
  • 哪一台機器燒的?公司筆電、家裡桌機、伺服器上跑的 agent,各燒各的。

Token Monitor 就是在解這件事:一個桌面小視窗,讀你電腦上各家工具留下的紀錄,把用量、花費、剩餘額度全部收在同一個畫面,而且可以多台機器一起看。

Token Monitor 的 GitHub 專案首頁,支援 Windows、macOS、Linux
Token Monitor 的 GitHub 專案首頁,支援 Windows、macOS、Linux

這篇不是翻譯官方文件,是我自己在 Windows 上裝 v0.59.0 實際跑過一輪的紀錄。

先講結論

沒時間讀完的話,看這段就夠了。

✅ 值得裝。 本機用的話裝完就能用,不用設定,不用帳號。

✅ 它是開源的(MIT)。 原始碼完整放在 GitHub 上,程式分成四塊:桌面程式、背景收集器、Hub、Cloudflare Worker,各自獨立。想改哪一塊就只碰那一塊,不用讀懂整包。打包指令也現成(npm run dist:win),改完就能產出自己的安裝檔。所以非常適合自己拿來二次開發。

❌ 它沒有網頁版的 Dashboard。 這是目前最大的缺口。所有畫面都在桌面程式裡,想用瀏覽器開、想掛在大螢幕上、想做一個團隊共用的看板,都得自己做。

好消息是它把資料開得很大方:Hub 有一組完整的 API,資料撈出來自己畫就好,完全不用改到它的原始碼。我們就是這樣接的,後面會講。

⚠ 要讓整個團隊用,還有三個缺口要補。 資料現在存成 JSON 檔(不好查也不好擴充)、每台機器都要手動填 Hub 網址、自己 build 的版本沒有更新通道。這三件事跟功能無關,但決定你養不養得起來,細節在〈如果要正式採用,有三件事要先解決〉。

適不適合你,大概是這樣:

你的情況建議
同時用 3 個以上 AI 工具裝,馬上有感
有好幾台機器裝,這是它最強的地方
團隊想要共用看板可以做,但要自己接 API
想要「裝完就有網頁報表」會失望,它不做這件事

另外先說清楚我驗證到哪裡,免得你把我的結論放太大:安裝、簽章、預設設定、它讀哪些資料夾、對外連了哪裡,這些我都實際跑過。至於逐行看原始碼、對 Hub 做攻擊測試,我沒做。

它到底在讀什麼

一句話:它不看你的 prompt,也不看你的程式碼,只讀各家工具留在你電腦上的用量紀錄。

像 Claude Code 會把每次對話記在 ~/.claude/projects/,Codex 記在 ~/.codex/,Token Monitor 就是去讀這些檔案,把 token 數加一加、成本算一算。

它抓三種東西:

  • 用量:花了多少 token、多少錢、快取命中率
  • 額度:各家方案還剩多少、什麼時候重置
  • 單次對話明細:某一次對話裡,每則訊息各用了多少

目前支援 37 種以上的工具,常見的 Claude Code、Codex、Copilot、Cursor、Antigravity、OpenCode、Cline 都有。底層解析是用 tokscale 這個 Rust 專案(也是 MIT),Token Monitor 負責畫面跟同步。

兩種用法:一台機器,或多台一起

這兩種模式先搞懂,後面設定才不會亂:

Loading diagram…

重點只有兩個:

  • 預設就是一台機器的模式,裝完就會動,什麼都不用設。
  • 多台要同步的話,得先挑一個 Hub,所有機器連同一個。

安裝

到 GitHub Releases 抓 Token-Monitor-Setup-x.x.x.exe(約 113 MB),雙擊一路下一步就好。macOS 用 brew install --cask token-monitor,Linux 抓 .AppImage。

我有順手驗一下數位簽章(Get-AuthenticodeSignature),結果是 Valid,簽署者 SignPath Foundation,跟官方文件寫的一致,代表檔案沒被動過手腳。

裝完之後,設定跟資料會放在 %APPDATA%\Token Monitor\,之後想移除乾淨的話這個資料夾記得一起刪。

裝完之後長怎樣

一開起來,它馬上就開始讀了。從日誌看得出它在盯哪些資料夾:

[collector] Watching C:\Users\<you>\.claude\projects
[collector] Watching C:\Users\<you>\.copilot
[collector] Watching C:\Users\<you>\.gemini\antigravity

幾個觀察:

  • 只看你電腦上真的有的工具,沒裝的就不碰。
  • 用系統的檔案異動通知,不是傻傻掃整顆硬碟。
  • 開機時會自己去 GitHub 看有沒有新版。

預設會追 28 個工具,設定檔在 %APPDATA%\Token Monitor\settings.json。

多台機器同步:Hub URL 藏在哪

這是最多人卡住的地方,先講位置。

桌面程式右下角的 ⚙ 齒輪 → Multi-device Sync(多裝置同步) → 點「Connect to a hub(連接到 Hub)」那顆圓點

要先點那顆圓點,網址跟密碼的欄位才會跑出來。 沒點就只看到幾個選項,很多人以為「怎麼沒有地方填」,就是卡在這。

Hub 有三種選法,挑一個就好,所有機器連同一個:

方式適合誰缺點
用其中一台當 Hub家裡或公司有一台常開機的電腦那台程式關掉,大家就都不同步了
裝在 NAS 或伺服器上有常開的機器要下指令,稍微麻煩一點
Cloudflare Worker想從手機看、或跨不同網路要有 Cloudflare 帳號

最簡單的是第一種:在常開的那台選「Host hub on this device」,它會自己產生一組密碼,然後列出其他機器可以連的網址。其他機器就填那個網址加密碼。

跨網路的話,走 Tailscale 或 ZeroTier 會比開防火牆簡單,也安全得多。

它沒有網頁 Dashboard,所以我們自己做了一個

前面提過,這是它最大的缺口。所有畫面都鎖在桌面程式裡。

但 Hub 本身其實開了一組滿完整的 API,資料要多少有多少:

網址拿到什麼
/api/health確認 Hub 活著(這支不用密碼)
/api/stats全部統計:今日、本月、全部,含工具、模型、專案、額度
/api/stats/stream即時推播,有變動就推給你
/api/devices每台機器的狀況

用密碼的方式很單純,加一個 header 就好:

curl -H "Authorization: Bearer 你的密碼" http://127.0.0.1:17321/api/stats

所以我們就用這組 API,做了一個單一檔案的 dashboard.html,瀏覽器直接打開,填網址跟密碼就會動:

自製的 Hub Dashboard:今日、本月、全部、活躍四張卡片,底下是工具排行榜、Token 組成、每日趨勢跟各家方案的剩餘額度
自製的 Hub Dashboard:今日、本月、全部、活躍四張卡片,底下是工具排行榜、Token 組成、每日趨勢跟各家方案的剩餘額度

往下捲是每台機器的狀況:

Dashboard 下半部:兩台機器的系統、版本、最後回報時間,以及 28 個工具的追蹤狀態
Dashboard 下半部:兩台機器的系統、版本、最後回報時間,以及 28 個工具的追蹤狀態

這塊其實很實用,一眼就看得出哪台是背景跑的、哪台是有開視窗的、各自最後回報是什麼時候。如果某一台的「最後回報」停在幾小時前,通常就是同步出問題了。

要自己做的話,其實只要三件事:

  1. 做一個填網址跟密碼的表單
  2. 接 /api/stats/stream,有資料就重畫
  3. 把回來的 JSON 攤平成表格

不難,而且完全不用碰它的原始碼。

如果要正式採用,有三件事要先解決

上面那些都是「自己一個人裝來用」的層次。如果你打算讓整個團隊用,甚至打算 fork 一份自己維護,會遇到三個很現實的缺口。這三件事跟功能無關,是「能不能長期養下去」的問題。

一、資料不要再存在 JSON 檔裡

先看現在的樣子。我這台機器上,程式的資料夾裡是這幾個檔:

%APPDATA%\Token Monitor\
  collector-anchor.json        771 KB   收集器的進度紀錄
  daily-history-archive.json    49 KB   每日用量的備份
  settings.json                 13 KB   設定
  credentials.json              81 B    憑證

打開 daily-history-archive.json 會看到這種結構:

{
  "version": 1,
  "days": {
    "2025-08-17": {
      "observations": {
        "[\"kiro\",\"claude_sonnet_4_20250514_v1_0\"]": { }
      }
    }
  }
}

注意那個 key,它把「工具名稱+模型名稱」兩個欄位壓成一個字串塞進去當 key。這是典型的「拿 JSON 當資料庫」,短期最快,長期會痛在四個地方:

  • 改一個數字要整份重寫。 想更新今天的用量,得把整個檔讀進記憶體、改完再整份寫回去。檔案越大越慢,寫的中間斷電或程式被關掉,整份都有可能壞掉。
  • 想查東西只能自己攤平。 「上個月 Cursor 花了多少」這種問題,沒辦法直接問資料,要先把整包載進來、自己迴圈加總。多一個查詢角度就多寫一段程式。
  • 多台一起寫會互相蓋掉。 現在是單機所以還好,但 Hub 一旦同時收好幾台的回報,同一個檔案同時被寫就是在賭。
  • 欄位想改版很麻煩。 現在只有 "version": 1 這一個線索,改結構就得自己寫轉檔程式,還得處理「舊檔混新檔」的情況。

建議這樣換:

規模建議為什麼
自己或小團隊、Hub 跑在一台機器或 NASSQLite一個檔案、零維護、免裝伺服器,但該有的索引、交易、SQL 查詢都有
多團隊、要長期趨勢、要接 BIPostgreSQL(時序量大再加 TimescaleDB)多人同時寫、權限分層、備份工具成熟

資料表可以簡單分兩層,這樣查得快、又不怕原始資料被算錯:

  • 原始事件表:每一筆回報就 append 一列,不修改也不刪除。欄位攤平(日期、機器、工具、模型、token 數、費用),不要再把幾個值黏成一個 key。
  • 每日彙總表:用原始事件算出來的每日結果,畫圖跟看板都讀這張。算錯了可以整張重算,反正原始資料還在。

保留策略也一起想好:原始事件留三到六個月,彙總永久保留。這樣檔案不會無限長大,趨勢圖又不會斷。

搬家不用一次到位。實務上最穩的是先雙寫:Hub 同時寫 JSON 跟資料庫,跑一到兩週,每天比對兩邊的數字對不對得上,確認沒問題再把 JSON 那條拔掉。現有的歷史資料寫一支一次性的匯入程式倒進去就好。

怎麼算做完了:能用一句 SQL 回答「某個工具某個月的花費」、寫入不再整檔重寫、schema 有版本與轉檔腳本、備份就是複製一個檔或一份 dump。

二、別讓使用者自己填伺服器網址

現在要連 Hub,使用者得自己開 ⚙、點「Connect to a hub」那顆圓點、再手動貼上網址跟密碼。本文前面就提過,光是「那顆圓點要先點」就卡住不少人。

團隊導入的時候這會變成三個具體的麻煩:

  • 新人第一天就卡在設定,還得有人在旁邊教。
  • 網址跟密碼用貼的,少一個字元就連不上,而且錯誤訊息通常只說「連不上」。
  • Hub 換位置或換密碼,要一台一台重新設定。

由簡單到麻煩,有三種做法可以選,也可以疊著用:

做法一:出貨就帶好預設值。 既然都要自己 build 了,就把 Hub 網址寫進預設設定,使用者裝完直接連上。密碼不要寫死在原始碼裡,讓安裝檔旁邊放一份設定檔,或是從環境變數讀。最省力,適合機器都在自己掌控範圍內。

做法二:區網自動發現。 Hub 在區網廣播自己(mDNS,就是 AirPlay、印表機那套),客戶端一開起來就自己找到,然後跳一句「發現一台 Hub,要連嗎」。使用者只要按一次「好」。好處是 Hub 換 IP 也不用重設,缺點是跨網段就沒用。

做法三:一段式加入碼。 把網址跟憑證打包成一組短碼或 QR Code,使用者貼一次就完成。進階一點的話,讓 Hub 發的是一次性的加入碼,客戶端拿它換一組長期憑證,之後就算加入碼外流也沒用。

安全上有兩件事要一起做,不然只是把門檻換成風險:加入碼要能設有效期、也要能撤銷;每台機器拿到的憑證最好各自獨立,而不是全公司共用一組密碼(現在的 Hub 就是共用一組,這也是為什麼前面建議不要直接對外開埠)。

怎麼算做完了:一台新機器從裝完到看得到資料,兩分鐘內完成,而且過程中不需要看任何文件。

三、自己 build 的版本,要有自己的更新通道

這點最容易被忽略,但不處理的話後面很痛。我去翻了安裝目錄,更新設定寫在這裡:

# %LOCALAPPDATA%\Programs\Token Monitor\resources\app-update.yml
owner: "Javis603"
repo: "token-monitor"
provider: "github"
publisherName:
  - "SignPath Foundation"

看得出兩件事:它的更新是去上游的 GitHub Releases 抓,而且會檢查簽章是不是 SignPath Foundation。所以你 fork 之後自己 build,會遇到一個很尷尬的狀況:

  • 這個檔不改:你的程式開機會去抓上游的新版,然後把你自己的修改覆蓋掉。
  • 這個檔改了、但沒架自己的發佈來源:你的版本從此不會再更新,每次改動都要請大家手動重裝。而且 Windows 的安裝檔是 113 MB,全量下載,沒人會想每週來一次。

要補的東西不多,但一個都不能少:

要做的事具體怎麼做不做會怎樣
自己的發佈來源改掉 owner/repo(指向自己的 repo),或改成 provider: generic 指到自架的位置(NAS、S3、Cloudflare R2 都可以)抓到上游的版本,改動被蓋掉
自動打包用 CI:推 tag 就跑 npm run dist:win 並把產物上傳到發佈來源發版靠手動,久了就沒人發
差分更新electron-builder 產的 blockmap 本來就支援,確認發佈時有一起上傳每次都下載 113 MB
程式碼簽章Windows 用 EV 憑證或 Azure Trusted Signing,macOS 要 notarize;同時把 publisherName 改成自己的SmartScreen/Gatekeeper 會擋,公司環境幾乎裝不起來
兩條發佈線分 stable 跟 beta,內部先吃 beta出問題直接炸到所有人
能回退保留前一版的安裝檔,並想好怎麼強制降版壞版本上線後只能等你修好

順序上建議先把「自己的發佈來源+CI 自動打包」做起來,這兩個做完就已經解決「沒人升級」的問題。簽章看你們的環境有多嚴格,內部機器可以晚一點再補。

怎麼算做完了:改一行程式、推一個 tag,CI 自己產安裝檔,客戶端一天內自動升上去,而且更新只下載有變動的部分。

三件事的優先順序

如果人力有限,我會這樣排:

順序要解的問題為什麼排這裡大概的工
1自己的更新通道不先做,之後每次改動都要人工重裝,會直接拖垮後面兩件事小,一到兩天
2資料搬到資料庫越晚搬,要轉的歷史資料越多,Hub 多機同寫的風險也越高中,含雙寫驗證約一到兩週
3免設定連 Hub影響的是導入體驗,前兩件穩了再做也不遲小到中,看選哪種做法

覺得卡卡的?先關掉沒在用的工具

有人反應更新頻率調高之後會卡。設定都在 ⚙ 裡面,幾個可以動的:

設定預設怎麼調
追蹤的工具全開(28 個)先調這個,最有感。沒在用的通通關掉
畫面更新間隔15 秒這只是重畫畫面,調小效果有限
歷史資料寫入15 分鐘機器慢的話往上調,不要往下
專案分類開專案資料夾很多的話,關掉會輕鬆很多
WSL 掃描開沒在用 WSL 就關掉

順序很重要:先關掉沒在用的工具,再考慮動時間。 預設 28 個全開,但大部分人真正在用的可能只有三四個。把其他的關掉,比調更新頻率有效多了。

另外一個跟效能無關、但很重要的設定:

Claude Code 預設只留 30 天的對話紀錄,超過就自己清掉了。Token Monitor 有一個「保留已刪除的用量」選項,建議開著,它會把看過的每日用量另外存一份,來源被刪也不影響你看趨勢圖。

但要注意,它只能救裝了之後的資料。裝之前被刪掉的就回不來了。所以如果你想長期看趨勢,越早裝越好。

資安:我檢查了什麼

既然要導入,順手掃一下是合理的。完整稽核我沒做,但基本的幾項跑過了。

看它連去哪裡。 程式跑起來之後我看了它建立的連線,只有兩個地方:GitHub(檢查更新)跟 api.anthropic.com(查 Claude 還剩多少額度)。

沒有開任何對外的埠。 這點滿重要的,只要你沒把它設成 Hub,它就不會在你電腦上開任何服務。

讀的範圍很乾淨。 從日誌看,它盯的都是各家 AI 工具自己的資料夾,沒有掃你的專案原始碼或整個使用者目錄。

官方聲明不送任何統計回去給作者。 加上原始碼公開,這點可以自己查證。

至於我沒做的:沒有逐行看原始碼,沒有驗證下載的程式真的是那份原始碼編出來的,也沒有對 Hub 做攻擊測試。

幾個自己用的時候要注意的:

  • 填進去的憑證是存在你電腦上的。 查額度那塊要填 API key 或 cookie,這些會存在 %APPDATA%\Token Monitor\ 裡面。那台電腦多安全,這些憑證就多安全。
  • Hub 密碼是大家共用的。 用「其中一台當 Hub」的方式是純 HTTP,不要直接對外網開埠,走區網或 Tailscale。
  • 用 Cloudflare Worker 等於把統計放到網路上。 密碼要夠長。雖然不含對話內容,但你的工作節奏會被看見。
  • 專案資料夾名稱會同步出去。 完整路徑跟對話標題不會,但資料夾名稱會。公司專案的命名如果本身就敏感,這點要先想過。

幾個要注意的地方

  • 更新很快。 5 天內發了三個版本。修得快是好事,但 Windows 每次都要重下 113 MB。在意流量的話可以關掉自動更新。
  • Cursor 偶爾會同步失敗。 我這邊出現過 Cursor API returned status 404,不影響其他工具。Cursor 走的是帳號層級的匯出,本來就會慢幾分鐘。
  • 只有一台機器的話,同步那塊完全可以不用碰。
  • 這篇是 Windows 11 + v0.59.0 的紀錄,版本一直在動,你看到的畫面可能跟我不一樣。

結論

Token Monitor 解的問題很具體:AI 工具變多之後,用量跟額度散得到處都是。它的做法是讀本機紀錄、不碰內容、要的話可以跨機器同步,這個界線劃得很合理。

三句話收尾:

  1. 自己一台用,裝完就結束了,不用設定。
  2. 多台要同步,記得先點「Connect to a hub」那顆圓點,欄位才會出現。
  3. 想在瀏覽器看,就得自己接 API。 這是它目前最明顯的缺口,但也因為它是開源的、API 開得夠大方,補起來不難。真的想大改,原始碼跟打包指令都在,MIT 授權,隨你改。

最後一句提醒:自己玩跟團隊導入是兩件事。 自己裝就是裝完結束;要讓全團隊用,記得先把「自己的更新通道、資料搬進資料庫、免設定連 Hub」這三件事排進去,順序照前面那張表走就不會亂。

作者

Mark Ku

10 年以上的軟體工程師,做過北美電商與 AI SaaS 訂閱收費系統。閱讀更多

覺得這篇有幫助?

作者做的免費工具、每日 Podcast 與電子報,都在這裡。

Mark Ku · 本文採用 CC BY 4.0 授權,轉載請註明作者並附上原文連結。

留言

訂閱電子報

訂閱後即時收到新文章通知,不錯過任何技術分享。

提交即表示同意接收電子報,隨時可。

熱門文章

View all
Mark Ku
··647

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案

Oracle Cloud 永久免費方案 Linux 主機及固定 IP :0 元打造雲端解決方案
Mark Ku
··461

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南

告別 Postman 收費陷阱!開源 Git 原生 API 測試神器 Bruno 實戰指南
Mark Ku
··282

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略

一款免費開源類似於 Notion 類知識庫系統 — Outline Wiki 佈署與備份全攻略
Mark Ku
··216

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取

在 Ubuntu 上設置 Samba 來共享資料夾,讓 Windows 11 用戶可以存取
Mark Ku
··213

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1

打造高效 API 管理平台:從 0 開始部署 Kong Gateway - Part 1
Mark Ku
··210

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調

訓練自己的 AI 語音:硬體門檻、開源模型比較與 LoRA 微調