RunCat 安裝教學
讓一隻貓咪住進你的選單列 / 工作列,現在還能順便看 AI 用量

貓咪的奔跑速度會隨 CPU 使用率即時變化(圖片來源:RunCat 365 官網)
RunCat 把 CPU 使用率變成一隻會跑步的貓咪動畫:閒置慢慢走,CPU 吃緊就狂奔。最新的 RunCat Neo 版本則更進一步,還能在選單列直接顯示 Claude Code、Codex 這類 AI 工具的使用量。
| 版本 | 系統 | 現況 |
|---|---|---|
| RunCat | macOS | App Store 上架,穩定舊版 |
| RunCat 365 | Windows | Microsoft Store 上架,穩定 |
| RunCat Neo | macOS 26 以上 | App Store 已上架,新版本,支援 AI 用量卡片 |
1macOS 安裝:RunCat Neo(可看 AI 用量的新版)
- 1打開 App Store,搜尋「RunCat Neo」
- 2系統需求 macOS 26.0 以上;免費下載,內含App內購項目
- 3點「取得」下載安裝,貓咪同樣出現在選單列
- 4連結:apps.apple.com/us/app/runcat-neo/id6757801838
2Windows 安裝:RunCat 365
- 1打開 Microsoft Store,搜尋「RunCat 365」
- 2或直接開連結:apps.microsoft.com/detail/9nw5lpnvwfwj
- 3系統需求 Windows 10(組建 19041)以上,點「取得」/「安裝」
- 4安裝後貓咪出現在工作列右下角(系統匣,可能要點「顯示隱藏的圖示」)
3安裝後怎麼設定?
RunCat(macOS 經典版):點選單列貓咪圖示
- Launch at Login:開機自動啟動
- Invert Speed:反轉速度(CPU 越閒跑越快)
- Flipped Horizontally:貓咪面向左右翻轉
- 每 10 分鐘自動換造型:定時隨機換 Runner
RunCat 365(Windows):右鍵點工作列貓咪圖示
- Runner:切換貓、鸚鵡、馬等造型
- Theme:跟隨系統、淺色、深色
- Speed Source:選擇貓咪速度依據哪個指標(CPU、GPU、記憶體等)
- Launch at Startup:開機自動啟動
★重點:RunCat Neo 現在能看 Claude Code 和 Codex 用量了
這是這篇文章最想講的更新:RunCat Neo 新增了「Custom Metrics(自訂指標)」功能,可以監看電腦上任何一個本地 JSON 檔案,把裡面的資料顯示成儀表板上的卡片。官方已經直接寫好兩組整合範例:
- Claude Code:透過 statusLine,每次對話結束都會寫入目前使用的 model 名稱、context window 使用率,以及 5 小時、7 天額度用量
- Codex:透過 Stop hook,讀取 session transcript,寫入目前 model、context 使用率、帳號速率限制
官方 App Store 上架說明甚至直接寫明:畫面截圖中的「Claude Code」用量卡片,就是自訂指標功能的示範。

RunCat Neo 儀表板上的 Custom Metrics 卡片
設定步驟:Claude Code
適用對象:macOS 26(Tahoe)以上,已安裝 RunCat Neo 與 Claude Code。這個設定會讓 Claude Code 每次對話時,自動把「使用的模型、context 用量、5 小時/7 天額度百分比」寫進一個檔案,RunCat Neo 讀取這個檔案並顯示在選單列的卡片上。
打開終端機
按 Command + 空白鍵 開啟 Spotlight,輸入「終端機」(Terminal),按 Enter。
建立資料轉換腳本
把下面整段完整複製,貼到終端機,按 Enter:
mkdir -p ~/.claude
cat > ~/.claude/runcat-statusline.py << 'EOF'
#!/usr/bin/env python3
import json, os, sys, tempfile
from datetime import datetime, timezone
from pathlib import Path
OUT = Path(os.environ.get("RUNCAT_OUT_FILE", str(Path.home() / ".claude" / "runcat-usage.json")))
def pct(title, value):
if value is None:
return None
return {"title": title, "formattedValue": f"{value:g}%", "normalizedValue": round(value / 100, 4)}
try:
payload = json.load(sys.stdin)
if not isinstance(payload, dict):
payload = {}
except Exception:
payload = {}
model = (payload.get("model") or {}).get("display_name") or "Claude Code"
ctx = (payload.get("context_window") or {}).get("used_percentage")
rate_limits = payload.get("rate_limits") or {}
five = (rate_limits.get("five_hour") or {}).get("used_percentage")
seven = (rate_limits.get("seven_day") or {}).get("used_percentage")
snapshot = {
"title": "Claude Code",
"symbol": "staroflife",
"metrics": [m for m in [
{"title": "Model", "formattedValue": model},
pct("Context", ctx),
pct("5h", five),
pct("7d", seven),
] if m is not None],
"lastUpdatedDate": datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ"),
}
if ctx is not None:
snapshot["metricsBarValue"] = f"{ctx:g}%"
OUT.parent.mkdir(parents=True, exist_ok=True)
fd, tmp = tempfile.mkstemp(prefix=".runcat-", dir=str(OUT.parent))
with os.fdopen(fd, "w", encoding="utf-8") as f:
json.dump(snapshot, f, ensure_ascii=False)
os.replace(tmp, OUT)
print(model)
EOF
chmod +x ~/.claude/runcat-statusline.py確認腳本有寫完整(貼這行檢查開頭):
head -5 ~/.claude/runcat-statusline.py應該看到:
#!/usr/bin/env python3
import json, os, sys, tempfile
from datetime import datetime, timezone
from pathlib import Path如果不是這樣,代表貼上時被截斷,重新執行一次步驟 2 的貼上指令。
檢查有沒有既有的設定檔
cat ~/.claude/settings.json- 顯示「No such file or directory」→ 還沒有設定檔,跳到步驟 4a
- 顯示一堆內容 → 已經有設定檔,跳到步驟 4b(不要覆蓋,要合併)
(沒有舊檔案)建立新的 settings.json
cat > ~/.claude/settings.json << 'EOF'
{
"statusLine": {
"type": "command",
"command": "~/.claude/runcat-statusline.py"
}
}
EOF(已有舊檔案)在原本內容裡加入 statusLine
在原本 JSON 的最外層 { } 裡,加入這一段(放在任何一個現有欄位旁邊,用逗號分隔):
"statusLine": {
"type": "command",
"command": "~/.claude/runcat-statusline.py"
}例如原本是:
{
"theme": "dark-daltonized",
"permissions": { ... }
}加完後變成:
{
"theme": "dark-daltonized",
"statusLine": {
"type": "command",
"command": "~/.claude/runcat-statusline.py"
},
"permissions": { ... }
}cat ~/.claude/settings.json 的結果複製給 Claude,請它幫忙合併並直接給出可貼上終端機的完整指令。測試腳本
printf '{}' | ~/.claude/runcat-statusline.py
cat ~/.claude/runcat-usage.json只要第二行有印出一段 JSON(例如 {"title": "Claude Code", ...}),就代表設定成功。
在 RunCat Neo 加入資料來源
- 點選單列的 RunCat Neo 圖示
- 進入 Settings → Metrics → Custom Metrics
- 點 Add JSON Source
- 在跳出的選擇檔案視窗按
Command + Shift + G,貼上路徑:~/.claude/runcat-usage.json - 確認選取,卡片會立即出現在儀表板
開始使用
正常在終端機輸入 claude 開始對話,每次 Claude 回覆後,卡片會自動更新,顯示目前使用的模型、context 用量、5 小時/7 天額度百分比。
想在選單列直接看到百分比:回到 RunCat Neo 的 Metrics Bar 設定頁,把這個資料來源的開關打開即可。
疑難排解(Claude Code)
| 狀況 | 解法 |
|---|---|
| 卡片沒有任何內容 | 確認 Claude Code 有正確呼叫 statusLine,先手動執行步驟 5 的測試指令確認腳本本身正常 |
| 卡片數值一直不變 | 檢查 ~/.claude/runcat-usage.json 的修改時間有沒有隨著每次對話更新(ls -l ~/.claude/runcat-usage.json) |
| 卡片顯示「Last updated: Failed」 | 確認 ~/.claude/runcat-usage.json 檔案還在,重新跑一次 Claude Code 對話讓它重新寫入 |
| 原本就有其他 statusLine 腳本 | settings.json 只能設定一個 command,需要把兩支腳本合併成一支,把兩份腳本貼給 Claude 請它合併即可 |
設定步驟:Codex
- 1把官方範例腳本複製到
~/.codex/runcat-hook.py,並設為可執行 - 2在
~/.codex/hooks.json註冊Stophook,指向這支腳本(若已有hooks.json,把這筆設定加進既有的Stop陣列即可) - 3重新啟動 Codex,若跳出提示,用
/hooks確認並信任這個新 hook - 4打開 RunCat Neo,進入 Settings → Metrics → Custom Metrics,點 Add JSON Source,選擇腳本產生的
~/.codex/runcat-usage.json - 5完成一次 Codex 對話後,卡片就會顯示目前的 model、context 使用率,以及 5 小時、7 天等速率限制
4三個版本功能比一比
| 功能 | RunCat | RunCat 365 | RunCat Neo |
|---|---|---|---|
| CPU 動畫 | 支援 | 支援 | 支援 |
| GPU/溫度監控 | 不支援(Sandbox 限制) | 支援 | 不支援(同樣受 Sandbox 限制) |
| 電池狀態 | 支援 | 未提供 | 支援 |
| AI 用量卡片(Claude Code/Codex) | 不支援 | 不支援 | 支援(Custom Metrics) |
| 造型自訂 | 商店付費 | 免費自製 | 免費自製,另有App內購 |
| 系統需求 | macOS(未特別標示版本) | Windows 10 組建 19041+ | macOS 26.0+ |
5小提醒
RunCat 系列終究是「順手看一眼」的視覺化小工具,不是專業效能監控軟體。需要精確數據或長期記錄時,還是要搭配活動監視器(macOS)或工作管理員(Windows)一起用。AI 用量卡片的數字也是取自本地紀錄檔,跟官方帳號後台的即時用量可能會有些微落差。





發佈留言