教程

Claude Code 自定义状态栏完整指南:/statusline 命令、JSON 数据字段与多行彩色状态栏实战

Claude Code 状态栏完整指南:两种设置方式(/statusline 自然语言描述自动生成 vs 手动 settings.json 配置 type:command)、三步从零构建(脚本/chmod+x/settings.json)、完整 JSON 数据字段(模型/上下文窗口 5 个字段/工作区 Git 5 个字段/会话成本时长/权限模式/Vim 模式)、四个实战示例(颜色进度条 20 块/Git 分支状态颜色/成本时长追踪/多行状态栏)、状态栏工作机制(300ms 防抖/取消机制/不消耗 API Token)和禁用方法。

2026/3/95分钟 阅读ClaudeEagle

状态栏(Status Line)是 Claude Code 终端底部可自定义的信息栏,运行任意 Shell 脚本,接收 JSON 会话数据,显示上下文用量、成本、Git 状态或任何信息。

快速设置

方式一:/statusline 自然语言描述(最快)

/statusline show model name and context percentage with a progress bar

Claude Code 自动生成脚本文件(保存到 ~/.claude/),并更新 settings.json 配置。

方式二:手动配置 settings.json

json
// ~/.claude/settings.json
{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 2
  }
}

内联命令(无需脚本文件):

json
{
  "statusLine": {
    "type": "command",
    "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'"
  }
}

padding:额外水平空白字符数(默认 0)。

从零构建状态栏(3 步)

第一步:创建脚本

bash
#!/bin/bash
# ~/.claude/statusline.sh
input=$(cat)   # 读取 Claude Code 传来的 JSON

MODEL=$(echo "$input" | jq -r '.model.display_name')
DIR=$(echo "$input" | jq -r '.workspace.current_dir')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

echo "[$MODEL] 📁 ${DIR##*/} | ${PCT}% context"

第二步:赋予执行权限

bash
chmod +x ~/.claude/statusline.sh

第三步:写入 settings.json

json
{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh"
  }
}

可用的 JSON 数据字段

模型信息

字段类型说明
.model.display_namestring模型显示名(如 "Claude Sonnet 4.6")
.model.idstring模型 ID(如 claude-sonnet-4-6

上下文窗口

字段类型说明
.context_window.used_tokensnumber已使用 Token 数
.context_window.total_tokensnumber总 Token 容量
.context_window.used_percentagenumber使用百分比(0–100)
.context_window.cache_read_tokensnumber缓存命中读取的 Token 数
.context_window.cache_creation_tokensnumber创建缓存的 Token 数

工作区

字段类型说明
.workspace.current_dirstring当前工作目录绝对路径
.workspace.git_branchstring当前 Git 分支名
.workspace.git_statusstringGit 状态(clean/modified/untracked/staged/conflict
.workspace.git_aheadnumber领先远程的 commit 数
.workspace.git_behindnumber落后远程的 commit 数

会话与成本

字段类型说明
.session.idstring会话 UUID
.session.namestring会话名称(如果已重命名)
.session.duration_secondsnumber会话已运行秒数
.session.cost_usdnumber本次会话 API 成本(美元)

权限与模式

字段类型说明
.permission_modestring当前权限模式(default/acceptEdits/plan 等)
.vim_modestringVim 模式状态("off"/"INSERT"/"NORMAL"

实战示例

1. 上下文进度条(带颜色)

bash
#!/bin/bash
input=$(cat)
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
FILLED=$((PCT / 5))   # 每 5% 一个块
EMPTY=$((20 - FILLED))

# 颜色:绿→黄→红
if [ "$PCT" -lt 50 ]; then COLOR="\033[32m"  # 绿
elif [ "$PCT" -lt 80 ]; then COLOR="\033[33m" # 黄
else COLOR="\033[31m"; fi                      # 红
RESET="\033[0m"

BAR="$(printf '%0.s█' $(seq 1 $FILLED))$(printf '%0.s░' $(seq 1 $EMPTY))"
echo -e "${COLOR}[${BAR}] ${PCT}%${RESET}"

2. Git 状态(带颜色)

bash
#!/bin/bash
input=$(cat)
BRANCH=$(echo "$input" | jq -r '.workspace.git_branch // ""')
STATUS=$(echo "$input" | jq -r '.workspace.git_status // "clean"')
AHEAD=$(echo "$input" | jq -r '.workspace.git_ahead // 0')

case "$STATUS" in
  clean)    COLOR="\033[32m" ;;  # 绿
  modified) COLOR="\033[33m" ;;  # 黄
  staged)   COLOR="\033[34m" ;;  # 蓝
  conflict) COLOR="\033[31m" ;;  # 红
  *)        COLOR="\033[37m" ;;  # 默认
esac

RESET="\033[0m"
AHEAD_STR=$([ "$AHEAD" -gt 0 ] && echo " ↑${AHEAD}" || echo "")
echo -e "${COLOR}⎇ ${BRANCH}${AHEAD_STR}${RESET}"

3. 成本和时长追踪

bash
#!/bin/bash
input=$(cat)
COST=$(echo "$input" | jq -r '.session.cost_usd // 0')
DUR=$(echo "$input" | jq -r '.session.duration_seconds // 0')
MINS=$((DUR / 60))

printf '💰 $%.4f | ⏱ %dm\n' "$COST" "$MINS"

4. 多行状态栏

Shell 脚本每次 echo 输出一行,Claude Code 自动显示为多行:

bash
#!/bin/bash
input=$(cat)
MODEL=$(echo "$input" | jq -r '.model.display_name')
BRANCH=$(echo "$input" | jq -r '.workspace.git_branch // "no-git"')
COST=$(echo "$input" | jq -r '.session.cost_usd // 0')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)

# 第一行:模型 + Git
echo "🤖 $MODEL | ⎇ $BRANCH"
# 第二行:成本 + 上下文
printf '💰 $%.4f | 📊 %d%% context\n' "$COST" "$PCT"

状态栏工作机制

  • 更新时机:每次 Claude 新消息后、权限模式变更时、Vim 模式切换时
  • 防抖:300ms 防抖(快速变化合并为一次执行)
  • 取消:新更新触发时,正在运行的脚本被取消
  • 性能:状态栏本地运行,不消耗 API Token
  • 隐藏:自动补全菜单、帮助菜单、权限提示期间临时隐藏

禁用状态栏

/statusline remove /statusline clear

或手动删除 settings.json 中的 statusLine 字段。


原文:Customize your status line - Claude Code Docs | 来源:Anthropic 官方文档

相关文章推荐

教程Claude Code 快捷键自定义:keybindings.json 完整配置、18 个 Context 与 Keystroke 语法Claude Code 快捷键自定义完整指南:/keybindings 命令创建 ~/.claude/keybindings.json($schema 自动补全/null 解绑)、18 种 Context(Global/Chat/Autocomplete/Settings/Confirmation/Tabs/Help/Transcript/HistorySearch/Task/ThemePicker/Attachments/Footer/MessageSelector/DiffDialog/ModelPicker/Select/Plugin)、常用 Action 速查表(Global/Chat/Confirmation/Transcript/DiffDialog/MessageSelector/ModelPicker 各类别)、Keystroke 语法(修饰键/特殊键名/大写字母区别/Chord 和弦连续按键)、保留快捷键(Ctrl+C/D 不可解绑)、终端冲突和 Vim 模式交互注意事项。2026/3/9教程Claude Code Status Line 完全指南:自定义状态栏显示 Context 用量、Git 状态与费用追踪Claude Code Status Line 完全指南:/statusline 自然语言生成脚本、手动 settings.json 配置、stdin JSON 数据结构详解(model/context_window/git/session 字段)、Context 彩色进度条、Git 状态着色、费用时长追踪、多行状态栏实战脚本,以及缓存优化和故障排查。2026/3/4教程Claude Code 终端优化完全指南:主题配置、换行快捷键、桌面通知与 Vim 模式Claude Code 终端配置完全指南:/config 主题设置、三种换行方式(反斜杠/Shift+Enter/Option+Enter)、/terminal-setup 自动配置、各终端桌面通知支持对比(Kitty/Ghostty/iTerm2/macOS Terminal)、Notification Hooks 自定义通知、大段输入的文件方式最佳实践,以及内置 Vim 模式的完整键位参考。2026/3/4教程Claude Code Output Styles:三种内置风格与自定义输出样式完全指南Claude Code Output Styles 完全指南:三种内置样式(Default/Explanatory 教育洞察/Learning 边做边学)的使用方法,自定义 Output Style 文件格式(Frontmatter 字段、keep-coding-instructions)及保存位置,与 CLAUDE.md、Subagents、Skills 的功能对比。2026/3/2教程Claude Code MCP 完整使用指南:安装配置主流 MCP 服务器扩展 AI 能力Claude Code MCP(Model Context Protocol)完整使用指南:MCP 是什么(AI 工具扩展标准)、claude mcp 命令管理服务器(add/remove/list)、主流 MCP 服务器安装配置(文件系统/GitHub/PostgreSQL/Brave Search/Slack)、本地 stdio 与远程 SSE 两种连接方式、MCP 服务器安全配置、在 CLAUDE.md 中声明 MCP 工具使用规范,以及自定义 MCP 服务器的快速开发入门。2026/3/18教程Claude Code 输出格式控制完全指南:JSON、流式、结构化输出使用方法Claude Code 和 Claude API 输出格式完整控制指南:--output-format 参数(text/json/stream-json)、非交互模式(-p)的输出控制、结构化 JSON 输出(--json-schema 字段约束)、流式输出(Server-Sent Events)的处理方式、include-partial-messages 流式渐进显示、以及 CI/CD 管道中解析 JSON 输出的实用技巧。2026/3/18