Claude Code 状态栏生成器
作者 Claude Resets · 更新于
Claude Code 可以在输入框下方显示自定义状态栏,而且能拿到你实时的 5 小时和每周用量。在下面勾选想显示的内容,复制两段代码,它就会一直显示用量和重置倒计时,额度再也不会突然用完。
状态栏里显示哪些内容
状态栏效果预览(示例数据)
1. 粘贴到终端,安装状态栏脚本
会创建 ~/.claude/statusline.sh 并设为可执行。
mkdir -p ~/.claude && cat > ~/.claude/statusline.sh <<'CLAUDE_RESETS_EOF'
#!/bin/bash
# Claude Code status line: generated at https://claude-resets.net/claude-code-statusline
# Needs jq. Rate limit fields only exist for claude.ai Pro/Max, after the first reply.
input=$(cat)
now=$(date +%s)
get() { echo "$input" | jq -r "$1 // empty"; }
left() {
local s=$(( ${1%.*} - now )); [ "$s" -lt 0 ] && s=0
if [ "$s" -ge 86400 ]; then printf '%dd%dh' $((s/86400)) $((s%86400/3600))
else printf '%dh%02dm' $((s/3600)) $((s%3600/60)); fi
}
paint() {
local p=${1%.*}
if [ "$p" -ge 80 ]; then printf '\033[31m%s\033[0m' "$2"
elif [ "$p" -ge 50 ]; then printf '\033[33m%s\033[0m' "$2"
else printf '\033[32m%s\033[0m' "$2"; fi
}
parts=()
m=$(get .model.display_name); [ -n "$m" ] && parts+=("[$m]")
p=$(get .rate_limits.five_hour.used_percentage); r=$(get .rate_limits.five_hour.resets_at)
if [ -n "$p" ]; then
seg="5h $(printf "%.0f" "$p")%"
[ -n "$r" ] && seg="$seg ↻$(left "$r")"
parts+=("$(paint "$p" "$seg")")
fi
p=$(get .rate_limits.seven_day.used_percentage); r=$(get .rate_limits.seven_day.resets_at)
if [ -n "$p" ]; then
seg="7d $(printf "%.0f" "$p")%"
[ -n "$r" ] && seg="$seg ↻$(left "$r")"
parts+=("$(paint "$p" "$seg")")
fi
out=""; for x in "${parts[@]}"; do out="${out:+$out | }$x"; done
printf '%s\n' "$out"
CLAUDE_RESETS_EOF
chmod +x ~/.claude/statusline.sh2. 在 ~/.claude/settings.json 里启用状态栏
把 statusLine 这一段合并进原文件,然后重启 Claude Code。
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"refreshInterval": 30
}
}查看状态栏脚本
#!/bin/bash
# Claude Code status line: generated at https://claude-resets.net/claude-code-statusline
# Needs jq. Rate limit fields only exist for claude.ai Pro/Max, after the first reply.
input=$(cat)
now=$(date +%s)
get() { echo "$input" | jq -r "$1 // empty"; }
left() {
local s=$(( ${1%.*} - now )); [ "$s" -lt 0 ] && s=0
if [ "$s" -ge 86400 ]; then printf '%dd%dh' $((s/86400)) $((s%86400/3600))
else printf '%dh%02dm' $((s/3600)) $((s%3600/60)); fi
}
paint() {
local p=${1%.*}
if [ "$p" -ge 80 ]; then printf '\033[31m%s\033[0m' "$2"
elif [ "$p" -ge 50 ]; then printf '\033[33m%s\033[0m' "$2"
else printf '\033[32m%s\033[0m' "$2"; fi
}
parts=()
m=$(get .model.display_name); [ -n "$m" ] && parts+=("[$m]")
p=$(get .rate_limits.five_hour.used_percentage); r=$(get .rate_limits.five_hour.resets_at)
if [ -n "$p" ]; then
seg="5h $(printf "%.0f" "$p")%"
[ -n "$r" ] && seg="$seg ↻$(left "$r")"
parts+=("$(paint "$p" "$seg")")
fi
p=$(get .rate_limits.seven_day.used_percentage); r=$(get .rate_limits.seven_day.resets_at)
if [ -n "$p" ]; then
seg="7d $(printf "%.0f" "$p")%"
[ -n "$r" ] && seg="$seg ↻$(left "$r")"
parts+=("$(paint "$p" "$seg")")
fi
out=""; for x in "${parts[@]}"; do out="${out:+$out | }$x"; done
printf '%s\n' "$out"
需要 bash 和 jq(macOS:brew install jq)。5 小时和每周的数字只对 claude.ai 的 Pro、Max 用户显示,并且要等会话里第一次回复之后才出现。
这个状态栏显示什么
生成的状态栏脚本读取 Claude Code 发给它的 JSON。对 claude.ai 的 Pro 和 Max 订阅用户,里面有 rate_limits.five_hour 和 rate_limits.seven_day,各自带 used_percentage 和 resets_at。状态栏脚本把它们变成「5h 62% ↻1h48m」和「7d 34% ↻3d5h」,并按情况把每一段标成绿色、黄色或红色。
为什么状态栏有一部分是空的?
用量上限字段只有 Pro 和 Max 才有,而且要在会话里第一次回复之后才出现。如果你走 API 计费,就只显示其他部分;脚本会自动处理缺失的字段。
两步装好状态栏
上面的两段代码就能搞定一切:
- 01把第一段粘贴到终端运行。它会写入 ~/.claude/statusline.sh 并设为可执行。
- 02把 statusLine 配置块加进 ~/.claude/settings.json(文件里已有其他设置就合并进去),然后重启 Claude Code。
- 03脚本依赖 jq。macOS 上运行 brew install jq;Windows 上用 WSL 或 Git Bash。
状态栏为什么要设 refreshInterval
状态栏平时只在会话里有动静时才刷新。屏幕上有倒计时的话,生成器会加上 refreshInterval: 30,让数字在你看的时候也一直在走。
修改或删除状态栏
想改状态栏,就重新运行生成器,粘贴新的第一段代码,它会覆盖旧的状态栏脚本。想删除的话,就从 settings.json 里删掉 statusLine 配置块,或者在 Claude Code 里运行 /statusline delete。它在本地运行,不消耗任何 token。
状态栏配合重置提醒一起用
状态栏能告诉你还剩多少额度,但没法告诉你 Anthropic 什么时候会给所有人提前重置。这件事请看我们的 重置概率 和 Claude 重置时间计算器。
常见问题
状态栏会消耗 token 吗?
+
不会。这个脚本在你自己电脑上运行,只读取 Claude Code 本来就有的数据。
可以直接用 /statusline 吗?
+
可以。/statusline 会让 Claude 根据你的描述写一个脚本。这个生成器几秒钟就给你一个测试过的脚本,不用花掉一轮对话。
状态栏里的数字是从哪来的?
+
来自 Claude Code 传给脚本的 rate_limits 字段,和你在「设置 → 用量」里看到的数字是同一份。