Deepseek ArtifactsDeepseek Artifacts
终端定制 · /statusline 深入玩法

Claude Code 状态栏定制:脚本写法与灵感

不止于初次设置:搞清 statusline 脚本收到的 JSON 字段,看看值得上屏的信息——模型、token、费用、上下文、git——再配上配色与布局思路,最后一个社区脚本直接拿来用。

太长不看版

  • /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. 1

    一条 /statusline 提示词说清系统、范围和脚本文件

    运行 /statusline 时先交代三件事:你在什么系统上(Mac、Linux、Windows 还是 WSL)、要求全局生效、脚本放独立的 .sh 文件(Windows 用 .ps1)。不说清楚,配置代理会自己猜环境,猜错 shell 就是满屏报错;只装在项目里则换个仓库就失效。提示词四行就够,存进备忘录随取随用。

    Word document with the exact Claude Code /statusline prompt asking to set up the status line globally with a separate ps1 or sh script file beside the VS Code editor
    备好的 /statusline 提示词:系统、全局、独立脚本文件,直接粘贴。看视频 1:15 处
  2. 2

    批准配置代理建的两个文件

    批准读写确认后,代理会如实汇报动了什么:~/.claude/settings.json 里多了 statusLine 配置,另有一个类似 ~/.claude/statusline-command.sh 的脚本负责生成状态栏内容。逻辑放在独立文件里,之后 Claude 只改脚本、不动你的 settings。重启 Claude Code,状态栏就会出现在底部。

    Claude Code statusline-setup summary listing files created, a settings.json holding the statusLine configuration and statusline-command.sh that generates the status line content
    创建/更新的文件:settings.json 存 statusLine 条目,脚本负责生成内容。看视频 3:20 处
  3. 3

    先看懂默认行,再加东西

    默认生成的状态栏包含:当前目录、模型名(形如 [Claude Opus 4.5])、非默认的 output style、vim 模式、git 分支(在仓库里时),以及上下文窗口占用百分比——示例长这样:Claude-project [Claude Opus 4.5] (git:main) 12%。配置是全局的,这台机器上所有 Claude Code 会话都会生效。

    Claude Code panel listing the default status line fields, current directory, model name, output style, vim mode, git branch and context window percentage, with the ordered add request below
    默认显示清单和生成状态栏的渲染示例。看视频 2:45 处

决定这一行显示什么

  1. 4

    按编号列表点菜:要什么字段自己排

    用编号列表提需求,代理会回一份编号显示顺序。这次运行的结果是:模型名、20 字符进度条、百分比(如 20%)、token 数(如 40000/200000)、git:main,最后是项目目录——渲染出来就是 Claude 3.5 Sonnet [==== ] 20% 40000/200000 git:main Claude-project。改动写进脚本文件,重启 Claude Code 生效。

    Claude Code statusline-setup reply listing the display order from model name to project name with an example line reading Claude 3.5 Sonnet, progress bar, 20 percent, 40000/200000, git:main
    1-6 的显示顺序加一条渲染示例,全部写进了脚本。看视频 3:45 处
  2. 5

    给每个元素配一个有含义的颜色

    要求逐元素配色,脚本里就会写入带阈值的 ANSI 色码。这次约定的表格:模型名青色;进度条低于 50% 绿、50-75% 黄、超 75% 红;百分比跟随进度条;token 品红;分支绿;项目名蓝;分隔符灰。红色只留给上下文条,警报色专门留给真正的压力。

    Element and color table for a Claude Code status line, model name cyan, progress bar green under 50 percent, yellow from 50 to 75, red above 75, tokens magenta, git branch green
    逐元素配色表,进度条带阈值。看视频 4:15 处
  3. 6

    token 取整成 K 单位,再用 /context 核一遍

    21373/200000 这种原始数字没法一眼扫。要求换成 K 单位,状态栏就显示 21k/200k——代理会提示数值做了四舍五入。然后验证:同一会话里跑 /context 对一下,总数一致。演示里还有个小插曲:取整之后 22k 和 23K 的会话可能显示成同一个数——对一条瞥一眼的状态栏来说够用了。

    Claude Code statusline-setup formatting tokens in k units, changing 21373 of 200000 tokens to 21k/200k, beside the status line color table and a rendered example
    21373/200000 变成 21k/200k,/context 核对一致。看视频 4:30 处
  4. 7

    开两个会话,确认各管各的

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

    Two terminal panels side by side each running Claude Code with its own status line, one showing 11 percent and 22k/200k tokens, the other 9 percent and 18k/200k
    两个 Claude Code 会话,各条状态栏各报各的上下文。看视频 5:15 处

拿来一个好脚本,天天看

  1. 8

    懒得写就装现成的:npx 一条命令装社区脚本

    脚本不必自己写。ContextBricks 一条命令装完——npx contextbricks——写入 ~/.claude/statusline.sh 并更新 settings.json,备份先行。它的清单:模型名、git 的 仓库:分支 [提交] 信息、未提交/领先/落后指示、本次会话增删行数、积木可视化的实时上下文占用,以及 token 明细。卸载用 ./uninstall.sh,打印出来的备份路径可以还原旧脚本。

    Terminal running npx contextbricks showing installation complete, statusline.sh installed under .claude, settings.json updated with a backup, and the list of what the status line will show
    npx contextbricks:脚本装好、settings.json 已更新、能力清单列明。看视频 0:20 处
  2. 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 足够了。

    Claude Code writing planning documents with the ContextBricks status line showing Sonnet 4.5, lines added and removed, an 18 percent context bar at 36k of 200k tokens and 163k free
    写规划文档的同时,36k/200k tokens 加分类明细一目了然。看视频 5:00 处
  3. 10

    看信号收尾:提交落库,周限额临近

    git commit 之后,状态栏长出了分支和提交信息:contextbricks:master [ffe9523] Add comprehensive planning documentation。右侧还多了一个信号——Approaching weekly limit。上下文百分比、提交标记、限额预警三者凑齐,你就能主动决定何时 /compact 或 /clear,而不是被自动压缩在任务中间打断。

    Claude Code status line after a commit showing contextbricks master with commit ffe9523 message, a 19 percent context bar at 38k of 200k tokens and an Approaching weekly limit warning
    分支和提交信息上栏,右侧是周限额预警。看视频 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 也能恢复旧脚本。

Claude Code 状态栏常见问题

相关攻略