我们可以为Claude Code 创建自定义状态行以显示上下文信息,如图所示:

这里就显示了项目名,Claude Code 目前使用的模型,还有已经使用的Token数量。
通过自定义状态行,可以让一些有用的上下文信息直接显示输入框的下方,最大的好处就是非常直观的展示运行情况。
尤其是在多窗口多项目情况下,Claude Code运行状态一键便知,类似于Token消耗也可以快速提醒我们是否达到了压缩的阈值,方便提前进行代码的收尾工作,以免触发不必要的压缩。
那么还可以显示哪些信息呢?
Claude Code本身提供发如下的输出结构
{ "hook_event_name": "Status", "session_id": "abc123...", "transcript_path": "/path/to/transcript.json", "cwd": "/current/working/directory", "model": { "id": "claude-opus-4-1", "display_name": "Opus" }, "workspace": { "current_dir": "/current/working/directory", "project_dir": "/original/project/directory" }, "version": "1.0.80", "output_style": { "name": "default" }, "cost": { "total_cost_usd": 0.01234, "total_duration_ms": 45000, "total_api_duration_ms": 2300, "total_lines_added": 156, "total_lines_removed": 23 } }
要自定义自己个性化状态栏,最简单的方法是使用Claude Code内置的/statusline命令,我们只需要在这个命令后面加上需要配置和显示的内容就可以,非常的简单。

比如下面就是将模型颜色改成橙色,Claude Code会调用这个指令来配置文件。
/statusline show the model name in orange
除了指令,还可以修改自定义配置文件,具体来说就是在这个配置文件修改.claude/settings.json 中添加脚本文件 ,对应到statusLine 命令字段。
{ "statusLine": { "type": "command", "command": "~/.claude/statusline.sh", "padding": 0 // Optional: set to 0 to let status line go to edge } }
我的statusline.sh脚本如下,他就充分解析了Claude Code的内置参数,可以拿去直接抄作业。
#!/bin/bash # Claude Code 状态行 - 包含目录、git 分支、模型和 token 统计 input=$(cat) # 提取数据 cwd=$(echo "$input" | jq -r '.workspace.current_dir // .cwd') cwd_name=$(basename "$cwd") model=$(echo "$input" | jq -r '.model.display_name // "Claude"') transcript=$(echo "$input" | jq -r '.transcript_path') # 获取 git 分支(跳过可选锁) git_branch="" if [ -d "$cwd/.git" ]; then git_branch=$(cd "$cwd" && git --no-optional-locks branch --show-current 2>/dev/null) if [ -n "$git_branch" ]; then git_branch=" on ${git_branch}" fi fi # 统计 token 数量(从 transcript 文件) token_info="" if [ -f "$transcript" ]; then # 提取所有 input_tokens 和 output_tokens input_tokens=$(grep -o '"input_tokens":[0-9]*' "$transcript" | cut -d: -f2 | awk '{s+=$1} END {print s}') output_tokens=$(grep -o '"output_tokens":[0-9]*' "$transcript" | cut -d: -f2 | awk '{s+=$1} END {print s}') # 如果成功获取到 token 数据 if [ -n "$input_tokens" ] && [ -n "$output_tokens" ]; then total_tokens=$((input_tokens + output_tokens)) # 格式化为 K(千) if [ $total_tokens -gt 1000 ]; then total_k=$((total_tokens / 1000)) token_info=" | ${total_k}K tokens" else token_info=" | ${total_tokens} tokens" fi fi fi # 颜色定义 CYAN='
