太长不看版
- /statusline 会替你写好脚本。先说清操作系统、要求全局生效、脚本放独立 .sh/.ps1 文件,然后批准两个文件:~/.claude/settings.json 里的 statusLine 条目,加上它指向的脚本。
- 脚本从 stdin 读一个 JSON 对象——model.display_name、workspace.current_dir、context_window.used_percentage、cost.total_cost_usd、rate_limits——想显示什么由你决定。
- 按编号列表逐项点字段,上下文条按阈值配色(低于 50% 绿色、过 75% 红色),token 取整成 K 单位,一行放不下就拆成多行。
- 或者直接装社区脚本:npx contextbricks 一步到位——模型、git 分支和提交、积木式 token 量表、周限额预警全都有,什么时候 /compact、什么时候 /clear 自己说了算。
Claude Code's Hidden Status Line: Tokens, Model and Project, Your Way
频道:호두의 AI 분석실 (Waldo AI Lab)5:27
ContextBricks: My Custom Claude Code Status Line
社区脚本:Jeremy Dawes6:17
Status line — official documentation
官方文档:code.claude.com/docs
本页事实与官方 status line 文档及上面两段录屏交叉核对,引用的 JSON 字段名与官方参考完全一致。截图均取自这两段录屏。
截图取自 호두의 AI 분석실 与 Jeremy Dawes(ContextBricks)的教程视频,均注明出处,且每一步都链回源视频对应时间点。
状态栏定制,一步一步来
先把 /statusline 提示词写对
- 1
一条 /statusline 提示词说清系统、范围和脚本文件
运行 /statusline 时先交代三件事:你在什么系统上(Mac、Linux、Windows 还是 WSL)、要求全局生效、脚本放独立的 .sh 文件(Windows 用 .ps1)。不说清楚,配置代理会自己猜环境,猜错 shell 就是满屏报错;只装在项目里则换个仓库就失效。提示词四行就够,存进备忘录随取随用。

备好的 /statusline 提示词:系统、全局、独立脚本文件,直接粘贴。看视频 1:15 处 - 2
批准配置代理建的两个文件
批准读写确认后,代理会如实汇报动了什么:~/.claude/settings.json 里多了 statusLine 配置,另有一个类似 ~/.claude/statusline-command.sh 的脚本负责生成状态栏内容。逻辑放在独立文件里,之后 Claude 只改脚本、不动你的 settings。重启 Claude Code,状态栏就会出现在底部。

创建/更新的文件:settings.json 存 statusLine 条目,脚本负责生成内容。看视频 3:20 处 - 3
先看懂默认行,再加东西
默认生成的状态栏包含:当前目录、模型名(形如 [Claude Opus 4.5])、非默认的 output style、vim 模式、git 分支(在仓库里时),以及上下文窗口占用百分比——示例长这样:Claude-project [Claude Opus 4.5] (git:main) 12%。配置是全局的,这台机器上所有 Claude Code 会话都会生效。

默认显示清单和生成状态栏的渲染示例。看视频 2:45 处
决定这一行显示什么
- 4
按编号列表点菜:要什么字段自己排
用编号列表提需求,代理会回一份编号显示顺序。这次运行的结果是:模型名、20 字符进度条、百分比(如 20%)、token 数(如 40000/200000)、git:main,最后是项目目录——渲染出来就是 Claude 3.5 Sonnet [==== ] 20% 40000/200000 git:main Claude-project。改动写进脚本文件,重启 Claude Code 生效。

1-6 的显示顺序加一条渲染示例,全部写进了脚本。看视频 3:45 处 - 5
给每个元素配一个有含义的颜色
要求逐元素配色,脚本里就会写入带阈值的 ANSI 色码。这次约定的表格:模型名青色;进度条低于 50% 绿、50-75% 黄、超 75% 红;百分比跟随进度条;token 品红;分支绿;项目名蓝;分隔符灰。红色只留给上下文条,警报色专门留给真正的压力。

逐元素配色表,进度条带阈值。看视频 4:15 处 - 6
token 取整成 K 单位,再用 /context 核一遍
21373/200000 这种原始数字没法一眼扫。要求换成 K 单位,状态栏就显示 21k/200k——代理会提示数值做了四舍五入。然后验证:同一会话里跑 /context 对一下,总数一致。演示里还有个小插曲:取整之后 22k 和 23K 的会话可能显示成同一个数——对一条瞥一眼的状态栏来说够用了。

21373/200000 变成 21k/200k,/context 核对一致。看视频 4:30 处 - 7
开两个会话,确认各管各的
开两个终端、各自启动 Claude Code。每条状态栏只报自己会话的数:左边 11%、22k/200k,右边 9%、18k/200k,各自窗口里的 /context 也对得上。这正是分支和项目名要上状态栏的原因——好几个标签页同时跑时,扫一眼就知道哪个会话最重,不用挨个跑 /context。

两个 Claude Code 会话,各条状态栏各报各的上下文。看视频 5:15 处
拿来一个好脚本,天天看
- 8
懒得写就装现成的:npx 一条命令装社区脚本
脚本不必自己写。ContextBricks 一条命令装完——npx contextbricks——写入 ~/.claude/statusline.sh 并更新 settings.json,备份先行。它的清单:模型名、git 的 仓库:分支 [提交] 信息、未提交/领先/落后指示、本次会话增删行数、积木可视化的实时上下文占用,以及 token 明细。卸载用 ./uninstall.sh,打印出来的备份路径可以还原旧脚本。

npx contextbricks:脚本装好、settings.json 已更新、能力清单列明。看视频 0:20 处 - 9
agent 干活时,盯住这块量表
自定义状态栏在中段最见功力。演示里它显示 [Sonnet 4.5]、+2381/-0 行,然后是 18%(36k/200k tokens)的上下文条,细分 sys:4k tools:16k mcp:2k mem:10k msg:4k,还剩 163k。作者数 token 的方式是解析会话 transcript——是估算值,不是 API 数字——但他觉得用来判断何时 compact、何时 clear 足够了。

写规划文档的同时,36k/200k tokens 加分类明细一目了然。看视频 5:00 处 - 10
看信号收尾:提交落库,周限额临近
git commit 之后,状态栏长出了分支和提交信息:contextbricks:master [ffe9523] Add comprehensive planning documentation。右侧还多了一个信号——Approaching weekly limit。上下文百分比、提交标记、限额预警三者凑齐,你就能主动决定何时 /compact 或 /clear,而不是被自动压缩在任务中间打断。

分支和提交信息上栏,右侧是周限额预警。看视频 6:02 处
脚本里能读到的字段,逐个数
状态栏的一切都来自脚本从 stdin 收到的同一个 JSON 对象——会话开始时来一次,之后每次更新都来一遍:新的助手消息、/compact 完成、权限模式切换。以下是官方字段里最值得拿来占一行的。
- 1模型与 effort——model.display_name 做标签(Sonnet 4.5、Opus 4.5),想露出推理档位就再加上 effort.level。
- 2位置——workspace.current_dir 是官方首选的当前目录字段,workspace.project_dir 是启动目录,workspace.repo.owner/.name 从 origin remote 解析出仓库归属;分支配合 git branch --show-current 获取。
- 3上下文——context_window.used_percentage 和 remaining_percentage 已替你算好,context_window.current_usage 把输入、输出、缓存写入、缓存读取分开列,context_window.context_window_size 默认 200000(扩展后 1000000)。
- 4钱与时间——cost.total_cost_usd 是本次会话花费(/clear 后清零),cost.total_duration_ms 和 total_api_duration_ms 区分挂钟时间与等 API 的时间,另有 cost.total_lines_added 和 total_lines_removed。
- 5限额——rate_limits.five_hour 和 rate_limits.seven_day 在 Pro/Max 套餐下提供 used_percentage 和 resets_at;官方文档还有 prompt_cache 对象,hit_ratio 和 expires_at 可以做缓存感知的行。
官方文档里的实操细节:每次 echo 或 print 就是一行,多行布局无非多打几条 print;ANSI 色码负责颜色;终端宽度看 COLUMNS 和 LINES 环境变量;每个可能缺席的字段都该写 jq 兜底,比如 .context_window.used_percentage // 0,免得会话刚开始几秒状态栏就开天窗。
状态栏不听话的时候
状态栏出问题基本逃不出五种原因——每种都只要一句提示词或一条命令就能修。
- 1空白或一串减号(--)——那是首次 API 响应前的空字段。官方文档建议写 jq 兜底(// 0、// empty),另外 workspace trust 提示必须接受,否则状态栏一直空着。
- 2脚本没执行——chmod +x 加执行权限,打印走 stdout 而不是 stderr,再跑 claude --debug 看脚本报错。
- 3数字不对劲——ContextBricks 作者说 Claude 连着几次算错 token。让 agent 把原始 JSON 落到一个调试文件里,照着真实结构重写脚本,最后和 /context 对一遍。
- 4Windows 下 shell 混淆——装了 Git Bash 就走 Git Bash,否则走 PowerShell;路径用正斜杠,脚本单独放 .ps1 文件。
- 5一行塞太满——要求拆多行(路径和仓库信息挪到第二行),或者做减法:token 用 K 单位、分隔符统一一个颜色、从不看的字段直接删。
想彻底退出版:/statusline delete(或 /statusline clear)直接移除;社区脚本用自带卸载器,ContextBricks 的 uninstall.sh 一键还原,安装时备份的 settings 也能恢复旧脚本。
