Skip to content

About

為 BOOX Leaf2 與電子紙瀏覽器打造的 Codex/Claude Code 用量、天氣與工作狀態看板

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Leaf2 Usage Board

繁體中文 | English

為 BOOX Leaf2 或其他電子紙瀏覽器打造的本機高對比資訊看板。

簡約,是極致的精巧。

這是一個讓人快速掃視的資訊板,而不是分析控制台。畫面只保留會影響當下判斷的資訊:目前時間與天氣、Codex、Claude Code 與 Grok 使用量、剩餘額度、重置時間,以及需要回頭查看的工作階段。若一項數值必須先解釋才有用,就應該移除或換成更清楚的標示。

執行

npm start

如果本機的 npm shim 無法使用,或仍指向已移除的安裝位置,也可以直接啟動同一個伺服器:

node server.js

接著在 Leaf2 瀏覽器開啟伺服器顯示的區域網路網址。

設定

將 config.example.json 複製為 config.json,再調整位置或連接埠:

{
  "port": 8765,
  "location": {
    "label": "Taipei",
    "latitude": 25.033,
    "longitude": 121.5654,
    "timezone": "Asia/Taipei"
  },
  "refreshSeconds": 180,
  "claude": {
    "fiveHourTokenBudget": null
  }
}

天氣資料來自 Open-Meteo,不需要 API key。

Claude Code 使用量

伺服器會先讀取本機 Claude Code OAuth 憑證,取得 Claude 用量頁面所使用的官方 5 小時與 7 天使用率。憑證只留在電腦上,不會由 dashboard API 傳回,也不會寫入 log。結果會短暫快取;若請求無法使用,則依序改用 statusline 資料與本機 token 紀錄。

這個 OAuth usage endpoint 由 Claude Code client 使用,但目前並不是 Anthropic 公開文件中的 API,因此保留 fallback 仍然很重要。

Claude Code 也可以透過 statusline 將訂閱用量提供給 dashboard。請將 Claude Code 設定為執行:

node "C:/repos/einkdashboard/scripts/claude-statusline.js"

Windows 設定中的路徑請使用正斜線。Claude Code 可能透過 Git Bash 執行指令,未引用的反斜線可能會被吃掉。

腳本會寫入 data/claude-status.json,供 dashboard 讀取;也會在 ~/.ai-usage/claude-status/ 建立相容於 AIBar 的快照,讓其他本機用量工具共用同一份 statusline 資料。這些 JSON 都是本機狀態,已由 Git 忽略。

在 Claude Code 中使用 /statusline 並選擇自訂指令,或將相同指令加入 Claude Code 設定。Claude Code 至少完成一次 API 回應後,dashboard 才能在欄位可用時顯示 5 小時與 7 天 rate-limit 用量。

Windows 可用以下指令自動安裝 statusline:

powershell -ExecutionPolicy Bypass -File .\scripts\install-claude-statusline.ps1

若 Claude 回報 settings.json 格式錯誤,可在保留既有設定的前提下修復無效的 JSON 跳脫字元:

node .\scripts\repair-claude-settings.js --write

修復指令會先在 settings.json 旁建立帶有時間戳的備份,再寫入正規化且嚴格有效的 JSON。

接著重新啟動 Claude Code 並傳送一則訊息。Claude Code 只有在收到回應後才會輸出 rate_limits,因此第一次 statusline 快照建立前,dashboard 仍會顯示本機 token 估算值。

拉取新版 repository 後請再次執行安裝程式,讓舊的反斜線指令被更新。

若 statusline 資料不可用,dashboard 會改讀取 ~/.claude/projects 下的 Claude Code JSONL 紀錄,顯示 5 小時 token 總量與估算重置時間。若要估算剩餘 token,請在 config.json 設定 claude.fiveHourTokenBudget。

Codex 使用量

Codex 用量由 scripts/codex-usage-snapshot.py 從本機 Codex 狀態收集;伺服器會在回傳 /api/status 前執行此腳本。

腳本會先掃描 ~/.codex/sessions/**/*.jsonl 中的 token_count 事件與 Codex rate_limits metadata。若有 rate-limit metadata,dashboard 會顯示官方本機使用百分比與重置時間;若沒有,則改讀取 %USERPROFILE%\.codex\logs_2.sqlite 並顯示基於 token 的估算值。

伺服器也會檢查 Codex 官方用量狀態中的推薦獎勵重置次數。當 rate_limit_reset_credits.available_count 大於零時,Codex 卡片會加上小型的「可用重置」數值;零、缺少或無法取得時則隱藏,避免這項選用資訊增加干擾。Dashboard 不會自行消耗重置次數。這類累積重置是活動獎勵,與購買的 usage credits 及一般 5 小時重置時間不同。

測試時仍可手動建立 data/codex-status.json:

{
  "line": "7d 18% used",
  "detail": "resets 18:00 - manual /usage snapshot",
  "meter": {
    "value": 18,
    "label": "7d"
  }
}

data/codex-status.json 是本機使用狀態,已由 Git 忽略。

SuperGrok 使用量

Grok 卡片透過已安裝的官方 Grok Build CLI 與 ~/.grok/auth.json 登入取得 SuperGrok 每週共用額度的官方使用百分比與重置時間。Dashboard 只保存整理後的百分比、重置時間與方案名稱,不會回傳或記錄 OAuth token。

若卡片顯示資料尚未取得,請先登入或刷新 Grok CLI 憑證:

grok login

scripts/grok-usage-snapshot.js 會先使用同一份 Grok OAuth 登入呼叫 grok.com billing endpoint,並將 Grok CLI billing RPC 留作備援。兩者都失敗時,介面會明確顯示不可用,不會用本機 token 數推算官方訂閱額度。

對話提醒

每張用量卡片會讀取近期的 Codex 或 Claude Code session JSONL,顯示最近 12 小時內需要回覆、遭到中斷或已完成的對話。Dashboard API 只會提供工具名稱、專案資料夾、狀態與更新時間,不會將 prompt 或 response 傳到瀏覽器。

卡片會在使用百分比旁顯示最新一筆提醒,其餘項目收合為小型 +N 計數,讓工具歸屬一眼可辨,同時維持使用量數字的視覺優先級。

仍在執行中的 session 不會顯示。每張工具卡片只會顯示最近更新且已完成,或明確需要注意的 session;較舊的提醒只計入 +N。

若同一工具有較新的 session 正在執行,舊提醒會暫時隱藏,避免把舊專案誤認為目前工作。最新 session 只有在完成或進入需要注意的狀態後才會出現。

BOOX 與 Windows 注意事項

  • 請在實體 Leaf2 上確認版面。桌面瀏覽器的直向 viewport 可供參考,但無法重現 BOOX 瀏覽器工具列、字型 metrics 或電子紙更新效果。
  • BOOX 瀏覽器可能把 100vh 當成包含瀏覽器工具列的完整螢幕高度。Dashboard 會依 window.innerHeight 同步高度,避免 Claude 卡片被裁切。
  • 彩色 emoji 在 Windows 上可能正常顯示,到了 BOOX 卻消失,因此天氣使用大型中文字,而不依賴 emoji 字型。
  • adb reverse 是暫時狀態。USB 重接或 ADB 重啟後,可重新執行 adb devices 與 adb reverse tcp:8765 tcp:8765。
  • BOOX 可能保留舊版 CSS 與 JavaScript。請先重新載入頁面,必要時暫時加上 /?v=2 等 query string。
  • 官方百分比與本機 token 估算是不同品質的資料。介面會明確標示估算值,不使用無法解釋的圖示代表信心程度。

若要避免每次重開機後手動修復連線,只需安裝一次使用者層級的 Windows 登入排程:

npm run install:autostart

安裝程式會同時建立 Windows 排程與目前使用者的登入啟動項。兩者都能在需要時啟動 dashboard、等待已授權的 Android 裝置,並在 USB 或 ADB 重連時恢復 tcp:8765;watcher 的單例鎖會避免重複執行。排程沒有執行時間上限,而登入啟動項能在排程遭到移除時提供備援。安裝後請勿再執行 npm start,背景伺服器應交由 watcher 管理。Log 會寫入 data/。

未來調整畫面時,請從一臂距離閱讀 dashboard、透過 ADB 擷取實際 Leaf2 畫面,並移除任何會和使用百分比或重置時間競爭、卻無助於下一個決定的元素。

開發

執行目前的驗證項目:

node --check server.js
node --check public/app.js
node --test
git diff --check

Commit 流程遵循 maylogger/lazy-commit。Repository 規範記錄於 AGENTS.md:依意圖拆分 atomic commits、使用 Conventional Commits,並以繁體中文撰寫 commit 描述。

參考

Codex session log 與 Claude statusline 快照策略參考了 neo-wabow/AIBar,並將原本的 macOS menu bar 工具概念改造成適用於 Windows 與 BOOX Leaf2 瀏覽器的 dashboard。

About

為 BOOX Leaf2 與電子紙瀏覽器打造的 Codex/Claude Code 用量、天氣與工作狀態看板

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages