Claude Code Workshop

原作者來源: Nanako0129/coralline ,安裝腳本取自 raw.githubusercontent.com/Nanako0129/coralline/main

Claude Code Coralline Statusline 教學

把 Claude Code 底部狀態列變成一個能看目錄、Git 狀態、模型、context、費用與時間的工作儀表板。這篇從機制拆解到 Windows / macOS 一鍵安裝,讓你複製腳本就能開始。

C:\Src\...\ai-session-daily-report ⎇ master!?⇡2 ◆ Sonnet 4.6
⬡ ▱▱▱▱▱ 9% ↑94.1k cr:93.3k $6.03 ⊙ 02:50:03 pm

更新日期:2026年6月28日

先講結論

Claude Code 的 statusLine 本質上很簡單:Claude Code 每秒把 session JSON 丟給外部 command,外部 script 解析資料後輸出 ANSI 彩色文字。Coralline 做的事,就是把這些資料排成漂亮的 pill 狀態列。

  1. ~/.claude/settings.json 設定 statusLine.command
  2. Claude Code 透過 stdin 傳入 workspace、model、context、rate limit、cost 等 JSON。
  3. statusline.shjq 解析 JSON,組出終端機可顯示的彩色文字。
  4. Windows 需要多一層 run.sh,把 winget 安裝的 jq 放回 PATH。

你會看到哪些資訊?

Segment 範例 用途
dir C:\Src\...\ai-session-daily-report 顯示目前工作目錄;路徑太長時自動縮略。
git ⎇ master!?⇡2 顯示分支、dirty state、untracked files、ahead / behind 狀態。
model ◆ Sonnet 4.6 (1M context) 顯示目前 Claude Code 使用的模型名稱。
ctx ⬡ ▱▱▱▱▱ 9% ↑94.1k ↓1 cr:93.3k cw:841 顯示 context window 使用率、input / output tokens、cache read / write tokens。
cost $6.03 顯示本次 session 的累計費用。
clock ⊙ 02:50:03 pm 顯示目前時間,可設定 12h / 24h / off。

Git 與 context 符號怎麼讀?

⎇ master!?⇡2

  • :Git 分支圖示。
  • master:目前分支名稱。
  • !:有 unstaged 變更。
  • ?:有 untracked 新檔案。
  • ⇡2:本地比 remote 多 2 個 commit,還沒 push。
  • +:有 staged 但未 commit 的變更。
  • ⇣N:remote 比本地多 N 個 commit,需要 pull。

⬡ ▱▱▱▱▱ 9%

  • :Context window 圖示。
  • ▰▱▱▱▱:5 格進度條,一格約 20%。
  • ↑94.1k:累計 input tokens。
  • ↓1:累計 output tokens。
  • cr:93.3k:cache read tokens。
  • cw:841:cache write tokens。

背後機制只有三步

1. 設定 command

~/.claude/settings.json 告訴 Claude Code:每秒執行哪個 shell script 來產生狀態列。

2. 接收 stdin JSON

Claude Code 每次刷新時,把 workspace、model、context、rate limits、cost 等 session 資料送進 script。

3. 輸出 ANSI 文字

Coralline 用 jq 解析 JSON,轉成帶顏色的 Powerline / pill 風格文字,Claude Code 直接顯示在底部。

{
  "statusLine": {
    "type": "command",
    "command": "bash ~/.claude/coralline/run.sh",
    "refreshInterval": 1
  }
}

檔案架構

~/.claude/ ├── settings.json ├── coralline/ │ ├── run.sh │ ├── statusline.sh │ └── themes/ │ └── claude-coral.conf └── coralline.conf
檔案 職責
settings.json Claude Code 主設定。這裡的 statusLine 決定要執行哪個 command。
run.sh Windows 專用 wrapper。把 winget 安裝的 jq 目錄補進 PATH,再轉交給 statusline.sh
statusline.sh Coralline 主腳本。每個 segment 是一個 seg_* 函式,VL_SEGMENTS 控制顯示順序。
claude-coral.conf 主題色彩定義,包含 256 色與 true color 設定。
coralline.conf 使用者個人設定。調整 layout、clock、bar width、ASCII mode、要顯示的 segments。

常用個人設定

. ~/.claude/coralline/themes/claude-coral.conf
VL_STYLE="pill"
VL_LAYOUT="auto"
VL_MAX_LINES=2
VL_SEGMENTS="dir git model ctx cost clock"
VL_CLOCK="12h"
VL_CLOCK_SECONDS=1
VL_BAR_WIDTH=5
VL_COST_DECIMALS=2
VL_PATH_DEPTH=4
VL_ASCII=0

如果你的終端機沒有 Nerd Font,先把 VL_ASCII=1,讓圖示改成純 ASCII,避免看到方塊或問號。

Windows(Git Bash)一鍵安裝

前置條件:已安裝 Git for Windows,並且用 Git Bash 執行。不要在 PowerShell 或 CMD 直接貼這段。

#!/usr/bin/env bash
set -euo pipefail

echo "=== [1/5] 安裝 jq(若已安裝會自動跳過)==="
powershell.exe -Command "winget install jqlang.jq --accept-package-agreements --accept-source-agreements" || true

JQ_DIR=$(powershell.exe -Command "(Get-ChildItem '$env:LOCALAPPDATA\Microsoft\WinGet\Packages' -Filter 'jqlang.jq*' -Directory | Select-Object -First 1).FullName" 2>/dev/null | tr -d '\r')
if [ -z "$JQ_DIR" ]; then
  echo "WARNING: 找不到 jq 安裝目錄,請手動確認路徑並更新 run.sh"
  JQ_DIR="/c/Users/$(whoami)/AppData/Local/Microsoft/WinGet/Packages/jqlang.jq_Microsoft.Winget.Source_8wekyb3d8bbwe"
fi

JQ_UNIX_DIR=$(echo "$JQ_DIR" | sed 's|\\|/|g' | sed 's|C:|/c|' | sed 's|D:|/d|')
echo "jq 路徑:$JQ_UNIX_DIR"

echo "=== [2/5] 下載 Coralline 腳本 ==="
BASE="https://raw.githubusercontent.com/Nanako0129/coralline/main"
mkdir -p "$HOME/.claude/coralline/themes"
curl -fsSL "$BASE/statusline.sh" -o "$HOME/.claude/coralline/statusline.sh"
curl -fsSL "$BASE/themes/claude-coral.conf" -o "$HOME/.claude/coralline/themes/claude-coral.conf"
chmod +x "$HOME/.claude/coralline/statusline.sh"

echo "=== [3/5] 建立 Windows jq PATH wrapper ==="
cat > "$HOME/.claude/coralline/run.sh" << WRAPPER
#!/usr/bin/env bash
export PATH="\$PATH:$JQ_UNIX_DIR"
exec bash "\$(dirname "\$0")/statusline.sh"
WRAPPER
chmod +x "$HOME/.claude/coralline/run.sh"

echo "=== [4/5] 建立 coralline.conf ==="
cat > "$HOME/.claude/coralline.conf" << 'CONF'
. ~/.claude/coralline/themes/claude-coral.conf
VL_STYLE="pill"
VL_LAYOUT="auto"
VL_MAX_LINES=2
VL_SEGMENTS="dir git model ctx cost clock"
VL_CLOCK="12h"
VL_CLOCK_SECONDS=1
VL_BAR_WIDTH=5
VL_COST_DECIMALS=2
VL_PATH_DEPTH=4
VL_ASCII=0
CONF

echo "=== [5/5] 更新 ~/.claude/settings.json ==="
SETTINGS="$HOME/.claude/settings.json"
[ -f "$SETTINGS" ] && cp "$SETTINGS" "${SETTINGS}.bak"
python - "$SETTINGS" << 'PYEOF'
import json, sys, pathlib

path = pathlib.Path(sys.argv[1])
data = json.loads(path.read_text(encoding="utf-8")) if path.exists() else {}
data["statusLine"] = {
    "type": "command",
    "command": "bash ~/.claude/coralline/run.sh",
    "refreshInterval": 1
}
path.write_text(json.dumps(data, indent=2, ensure_ascii=False), encoding="utf-8")
print("settings.json 更新完成")
PYEOF

echo "安裝完成。請重啟 Claude Code。"

macOS 一鍵安裝

前置條件:已安裝 Homebrew。macOS 通常不需要 Windows 那層 run.sh wrapper。

#!/usr/bin/env bash
set -euo pipefail

echo "=== [1/5] 安裝 jq ==="
brew install jq

echo "=== [2/5] 下載 Coralline 腳本 ==="
BASE="https://raw.githubusercontent.com/Nanako0129/coralline/main"
mkdir -p "$HOME/.claude/coralline/themes"
curl -fsSL "$BASE/statusline.sh" -o "$HOME/.claude/coralline/statusline.sh"
curl -fsSL "$BASE/themes/claude-coral.conf" -o "$HOME/.claude/coralline/themes/claude-coral.conf"
chmod +x "$HOME/.claude/coralline/statusline.sh"

echo "=== [3/5] 建立 coralline.conf ==="
cat > "$HOME/.claude/coralline.conf" << 'CONF'
. ~/.claude/coralline/themes/claude-coral.conf
VL_STYLE="pill"
VL_LAYOUT="auto"
VL_MAX_LINES=2
VL_SEGMENTS="dir git model ctx cost clock"
VL_CLOCK="12h"
VL_CLOCK_SECONDS=1
VL_BAR_WIDTH=5
VL_COST_DECIMALS=2
VL_PATH_DEPTH=4
VL_ASCII=0
CONF

echo "=== [4/5] 更新 ~/.claude/settings.json ==="
SETTINGS="$HOME/.claude/settings.json"
[ -f "$SETTINGS" ] && cp "$SETTINGS" "${SETTINGS}.bak"
TMP=$(mktemp)
jq '.statusLine = {"type":"command","command":"bash ~/.claude/coralline/statusline.sh","refreshInterval":1}' \
  "$SETTINGS" > "$TMP" && mv "$TMP" "$SETTINGS"

echo "=== [5/5] 完成 ==="
echo "安裝完成。請重啟 Claude Code。"

安裝後測試

如果重啟 Claude Code 後沒有看到狀態列,先用假資料手動測試腳本是否能輸出:

echo '{"model":{"display_name":"test"},"context_window":{"used_percentage":50},"cost":{"total_cost_usd":0.01},"cwd":"/tmp"}' | bash ~/.claude/coralline/run.sh

macOS 若沒有 run.sh,把最後的路徑改成 ~/.claude/coralline/statusline.sh

常見問題

狀況 可能原因 先做這個
狀態列數字全是 0 或空白 jq 不在 PATH,Windows 上尤其常見。 確認 run.sh 裡的 JQ_UNIX_DIR 指向 jq.exe 所在資料夾。
看到方塊、問號或亂碼 終端字型不支援 Nerd Font 圖示。 安裝 MesloLGS NF 或 FiraCode Nerd Font;不想裝字型就設定 VL_ASCII=1
重啟 Claude Code 後還是沒有狀態列 settings.json 格式錯誤、script 沒執行權限,或 command 路徑不正確。 先檢查 JSON 是否有效,再執行 chmod +x ~/.claude/coralline/run.sh,最後用假資料手動測試。
想顯示 rate limit 預設 VL_SEGMENTS 沒放 limit5hlimit7d 把設定改成 VL_SEGMENTS="dir git model ctx limit5h limit7d cost clock"

參考來源

返回 AI Agent Skills 下一篇:本機 Vibe 轉錄 Skill