我们可以为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会调用这个指令来配置文件。
/statuslineshowthemodelnameinorange
除了指令,还可以修改自定义配置文件,具体来说就是在这个配置文件修改.claude/settings.json 中添加脚本文件 ,对应到statusLine 命令字段。
{
"statusLine":{
"type":"command",
"command":"~/.claude/statusline.sh",
"padding":0//Optional:setto0toletstatuslinegotoedge
}
}我的statusline.sh脚本如下,他就充分解析了Claude Code的内置参数,可以拿去直接抄作业。
#!/bin/bash
#ClaudeCode状态行-包含目录、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-locksbranch--show-current2>/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{prints}')
output_tokens=$(grep-o'"output_tokens":[0-9]*'"$transcript"|cut-d:-f2|awk'{s+=$1}END{prints}')
#如果成功获取到token数据
if[-n"$input_tokens"]&&[-n"$output_tokens"];then
total_tokens=$((input_tokens+output_tokens))
#格式化为K(千)
if[$total_tokens-gt1000];then
total_k=$((total_tokens/1000))
token_info="|${total_k}Ktokens"
else
token_info="|${total_tokens}tokens"
fi
fi
fi
#颜色定义
CYAN='\033[36m'
GREEN='\033[32m'
YELLOW='\033[33m'
MAgentA='\033[35m'
RESET='\033[0m'
#输出格式:目录[分支]|模型|token统计
printf"${CYAN}%s${YELLOW}%s${RESET}${GREEN}❯${RESET}${MAGENTA}%s${RESET}%s\n""$cwd_name""$git_branch""$model""$token_info"最后的显示效果:
不过要注意的是,修改完成配置后需要重新启动Claude Code,需要发送一条信息来激活状态,同时脚本也需要有完整的可执行权限才行。
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |