更新日期:2026年6月28日
先講結論
Claude Code 的 statusLine 本質上很簡單:Claude Code 每秒把 session JSON 丟給外部 command,外部 script 解析資料後輸出 ANSI 彩色文字。Coralline 做的事,就是把這些資料排成漂亮的 pill 狀態列。
- 在
~/.claude/settings.json設定statusLine.command。 - Claude Code 透過 stdin 傳入 workspace、model、context、rate limit、cost 等 JSON。
statusline.sh用jq解析 JSON,組出終端機可顯示的彩色文字。- 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
}
}
檔案架構
| 檔案 | 職責 |
|---|---|
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 沒放 limit5h 或 limit7d。 |
把設定改成 VL_SEGMENTS="dir git model ctx limit5h limit7d cost clock"。 |
參考來源
- 來源筆記:
10-shared-knowledge/ai-agent/2026-06-28-claude-code-coralline-statusline-教學SOP.md - Coralline 原作者來源:Nanako0129/coralline GitHub repository
- 一鍵安裝腳本下載 base URL:
https://raw.githubusercontent.com/Nanako0129/coralline/main - 站內教學:AI 工具安裝與用途說明
- 站內教學:AI 新手 Skill 推薦與安全下載指南