Claude Code status line: always see context %, cost and your 5-hour limit
TL;DR
The status line is a script that reads session JSON on stdin and prints one line. Showing context %, cost, 5-hour usage and model tells you when to compact or switch models mid-session.
Phần lớn người dùng Claude Code chỉ biết context sắp đầy khi auto-compact đột ngột chạy, hoặc biết đã tiêu bao nhiêu khi cuối ngày mở /usage. Đến lúc đó thì đã muộn để đổi cách làm. Status line giải quyết đúng chuyện này: một dòng cố định ở cuối màn hình, do chính bạn lập trình, hiển thị % context, chi phí phiên, nhánh git, hạn mức 5 giờ… và cập nhật liên tục khi bạn làm việc. Bài này hướng dẫn cài trong 2 phút và gợi ý nên hiển thị gì để tiết kiệm token.
Cơ chế hoạt động
Status line là một shell script bất kỳ. Mỗi khi có sự kiện (Claude trả lời xong, đổi model, đổi chế độ…), Claude Code gửi một khối JSON dữ liệu phiên qua stdin, script in ra gì thì dòng trạng thái hiện đúng như vậy. Các lần cập nhật dồn dập được gộp lại (debounce 300ms) và nếu script cũ chưa chạy xong thì bị huỷ, nên không làm chậm phiên.
Cách nhanh nhất: để Claude tự viết
/statusline hiện tên model, % context dạng thanh tiến trình và chi phí phiên
Claude Code tự sinh script trong ~/.claude/ và cập nhật settings. Muốn gỡ: /statusline delete.
Cách thủ công
Trong ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 1
}
}
Script tối giản dùng jq (nhớ chmod +x):
#!/bin/bash
input=$(cat)
MODEL=$(echo "$input" | jq -r '.model.display_name')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0')
COST=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
FIVE=$(echo "$input" | jq -r '.rate_limits.five_hour.used_percentage // empty')
printf "%s | ctx %s%% | \$%.2f" "$MODEL" "$PCT" "$COST"
[ -n "$FIVE" ] && printf " | 5h %s%%" "$FIVE"
Nếu hiển thị đồng hồ hoặc dữ liệu đổi khi phiên đang rảnh (ví dụ subagent nền sửa git), thêm "refreshInterval": 5 để chạy lại theo chu kỳ, tối thiểu 1 giây.
Những trường đáng hiển thị
| Trường JSON | Ý nghĩa | Dùng để |
|---|---|---|
context_window.used_percentage | % context đã dùng | Biết lúc nên /compact hoặc /clear trước khi quá muộn |
cost.total_cost_usd | Chi phí ước tính của phiên (theo giá niêm yết) | Cảm nhận giá của từng kiểu prompt |
rate_limits.five_hour.used_percentage | % hạn mức 5 giờ (gói Pro/Max) | Chủ động hạ effort/model khi sắp chạm trần |
effort.level, model.display_name | Effort và model hiện tại | Tránh quên đang để Opus/max cho việc vặt |
prompt_cache | Tỉ lệ cache hit, lần miss gần nhất | Phát hiện thao tác làm mất cache |
workspace.git_worktree, worktree.name | Đang ở worktree nào | Phân biệt nhiều phiên song song |
cost.total_lines_added/removed | Số dòng đã sửa | Thấy nhanh quy mô thay đổi |
Cửa sổ context mặc định 200 nghìn token (1 triệu với model hỗ trợ context mở rộng), trường context_window.context_window_size cho biết con số thực tế.
Mẹo thiết kế
- Đổi màu theo ngưỡng: context dưới 50% xanh, 50–80% vàng, trên 80% đỏ. Nhìn màu là biết nên dọn context.
- Nhiều dòng: script in nhiều dòng thì status line hiện nhiều dòng; dòng 1 cho git, dòng 2 cho context/chi phí.
- Script phải nhanh: tránh gọi mạng hay lệnh git nặng mỗi lần; cache kết quả vào file tạm nếu cần.
Rủi ro và lưu ý
- Chi phí là ước tính phía client theo giá niêm yết, không phải hoá đơn thật; với gói thuê bao nó chỉ mang tính tham khảo.
- Khi có status line tuỳ biến, Claude Code ẩn bớt gợi ý phím tắt ở footer (ví dụ "esc to interrupt").
- Script chạy với quyền của bạn: đừng dán script lạ từ mạng mà chưa đọc.
Áp dụng thế nào?
- Dev: Cài ngay bản tối giản model + % context + chi phí. Đặt quy tắc cho mình: qua 70% thì compact hoặc mở phiên mới.
- Tech Lead: Chia sẻ một script chuẩn cho team (kèm worktree, effort) để mọi người cùng "nhìn thấy" chi phí, rồi so sánh thói quen.
- PM: Khi dùng Claude Code cho tài liệu, theo dõi % hạn mức 5 giờ để chia việc nặng sang khung giờ khác.
Sources & references
- Customize your status line — Claude Code Docs