Codex 與 Claude Code statusline 設定小記
環境:
- macOS 26.5
- Codex CLI 0.135.0
- Claude Code 2.1.149
最近在整理 AI coding tool 的使用環境,發現底部那條 statusline 其實很值得設定一下。平常一直切 repo、切模型、跑長任務,如果沒有一眼看到 context 或 quota 狀態,很容易做到一半才發現快滿了,或是突然被中斷 Orz ....
這篇記一下目前我自己的 Codex 與 Claude Code statusline 設定。兩者概念有點不一樣, Codex 目前是用內建欄位組合;Claude Code 則是把 JSON 丟給 shell script,再把 script 印出的內容顯示出來。
Claude Code 官方文件
- https://code.claude.com/docs/en/statusline
Codex 官方文件
- https://developers.openai.com/codex/cli/slash-commands
Codex 的 status_line
Codex 的設定檔在這裡:
~/.codex/config.toml
我目前放在 [tui] 裡,讓底部狀態列顯示模型、context、額度和目前目錄:
[tui] status_line = [ "model-with-reasoning", "context-remaining", "five-hour-limit", "weekly-limit", "current-dir", ]
這組欄位對我來說剛好。
model-with-reasoning可以確認現在是不是用預期的模型和 reasoning effortcontext-remaining看長任務還剩多少空間five-hour-limit和weekly-limit看額度壓力current-dir則是避免自己在錯的專案裡下指令
我的 Codex 前面也有模型設定,整體看起來像這樣:
model = "gpt-5.5" model_reasoning_effort = "medium" personality = "pragmatic" [tui] status_line = [ "model-with-reasoning", "context-remaining", "five-hour-limit", "weekly-limit", "current-dir", ]
改完後可以用下面指令確認版本,順便重開 Codex 看底部是否出現新欄位:
codex --version
Claude Code 的 statusLine
Claude Code 這邊比較自由。設定檔在:
~/.claude/settings.json ~/.claude/statusline-command.sh
也可以直接在 Claude Code 裡用 /statusline 讓它幫忙產生,或是直接呼叫 ai 幫你設定 :)
{ "theme": "auto", "verbose": true, "statusLine": { "type": "command", "command": "bash /Users/max/.claude/statusline-command.sh" } }
重點是 statusLine.command。Claude Code 會執行這個 command,並把目前 session 的 JSON 從 stdin 傳進去。script 只要讀 stdin,最後印出一行文字就好。
我的 script 目前顯示
- model
- context 使用率
- 上一輪 token 數
- 有資料時顯示 5-hour limit:
內容如下
#!/bin/sh input=$(cat) model=$(echo "$input" | jq -r '.model.display_name // "Unknown"') used_pct=$(echo "$input" | jq -r '.context_window.used_percentage // empty') if [ -n "$used_pct" ]; then ctx=$(printf "%.0f%%" "$used_pct") else ctx="ctx:--" fi in_tok=$(echo "$input" | jq -r '.context_window.current_usage.input_tokens // empty') out_tok=$(echo "$input" | jq -r '.context_window.current_usage.output_tokens // empty') if [ -n "$in_tok" ] && [ -n "$out_tok" ]; then total=$(( in_tok + out_tok )) if [ "$total" -ge 1000 ]; then tok_display=$(awk "BEGIN { printf \"%.1fk\", $total/1000 }") else tok_display="${total}" fi cost_part="tokens:${tok_display}" else cost_part="tokens:--" fi
後面再把 5-hour limit 接上去:
five_h_pct=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty') five_h_reset=$(echo "$input" | jq -r '.rate_limits.five_hour.resets_at // empty') if [ -n "$five_h_pct" ]; then five_h_pct_display=$(printf "%.0f%%" "$five_h_pct") if [ -n "$five_h_reset" ]; then five_h_reset_display=$(date -r "$five_h_reset" "+%H:%M" 2>/dev/null || date -d "@$five_h_reset" "+%H:%M" 2>/dev/null || echo "?") else five_h_reset_display="?" fi five_h_part="5h:${five_h_pct_display}(↺${five_h_reset_display})" else five_h_part="" fi if [ -n "$five_h_part" ]; then printf "%s | ctx:%s | %s | %s" "$model" "$ctx" "$cost_part" "$five_h_part" else printf "%s | ctx:%s | %s" "$model" "$ctx" "$cost_part" fi
script 建好後記得給執行權限:
chmod +x ~/.claude/statusline-command.sh
最後看一下相關檔案位置,之後要備份或搬到新機器比較不會忘記:
~/.codex/ ├── config.toml └── version.json ~/.claude/ ├── settings.json ├── settings.local.json └── statusline-command.sh
小結一下:
- Codex 的 statusline 比較像「選內建資訊欄位」
- Claude Code 的 statusline 比較像「自己寫一個小 renderer」。
又前進一步 ~ enjoy it
Reference
- https://code.claude.com/docs/en/statusline
- https://developers.openai.com/codex/cli/slash-commands

沒有留言:
張貼留言