底部状态栏自己画:statusLine 看上下文和花费
会话底部那一行默认信息有限。statusLine 让你用一段 shell 命令,从标准输入读 JSON,自己拼出模型名、上下文占用、花费、限流、git 分支等。命令在本地跑,不消耗 API token。
两种配法
- 自然语言:会话里跑
/statusline,用中文说「显示模型、上下文百分比和本次花费」,它会帮你生成并写入设置。 - 手写设置:在 settings 里配
statusLine.command,指向你的脚本或一行命令。
无论哪种,本质都是:Claude Code 周期性把当前状态打成 JSON 喂给你的命令,stdout 就是状态栏文本。
仓库信任(workspace trust)打开后才会跑自定义状态栏;未信任时别指望脚本生效。权限与沙箱边界见 permissions / sandbox。
输入里常见字段
脚本从 stdin 读 JSON,常见字段包括:
| 字段 | 用途 |
|---|---|
model | 当前模型 |
context_window | 上下文窗口与已用比例(如 used_percentage) |
cost | 本次 / 累计花费相关 |
rate_limits | 限流余量提示 |
git / worktree | 分支、worktree 信息 |
具体键名以你本机版本为准;写脚本时先 cat 一份 stdin 样例再解析。多 worktree 并行时,状态栏里的 git 信息按当前树走,见 worktree 用法。
刷新与性能
用 refreshInterval(或等价设置)控制刷新间隔。git 状态若每次都跑重命令会拖慢界面:
- 缓存
git status/git rev-parse结果,或拉长间隔 - 避免在状态栏脚本里做网络请求
- 大仓库优先显示「分支名 + dirty 标记」,别全量
git status --porcelain扫盘
Windows 路径在配置里建议用正斜杠 /,减少转义坑。脚本本身用 jq、Python 或纯 shell 均可,只要读 stdin、写 stdout。
实用拼法
上下文快满时最怕「不知不觉顶满」。可以:
- 用
used_percentage画简易进度条(如████░░ 67%) - 同时显示本次
cost,长会话心里有数 - 可选叠模型短名,避免切错模型还不知道
示例思路(伪代码):读 JSON → 取百分比与 cost → printf 一行。真正落地时按本机字段名微调。自动记忆、Skills 不会改变状态栏数据源;上下文策略仍靠你控会话长度,见 自动记忆 与 Skills。
CI / -p 非交互一般不需要花哨状态栏;本地交互会话才值得配,见 -p / --bare。
注意点
- 状态栏命令失败时,底部可能空白或回退默认;先在终端手动喂一份 JSON 测脚本
- 不要在脚本里读密钥文件或打外网;本地展示即可
- 改完 settings 后新会话或重载后再看效果
- 与 Output styles、权限模式无关:样式管口吻,状态栏只管「看见什么」
MCP / Hooks 若也在侧边显示信息,别和状态栏抢同一套「必须看见」的指标;分工见 MCP、Skills、Hooks。
最小命令示例
设置里可以是一行命令或脚本路径,并配上刷新间隔,例如 refreshInterval 设为若干毫秒。脚本只做三件事:读 stdin、取字段、打印一行。解析失败要有兜底字符串,否则退出非 0 时底部栏可能空白。
不要在脚本里长时间 sleep;节奏交给刷新间隔。git 相关命令加短缓存(几秒内复用结果),大仓库体感会好很多。
需要对照会话权限或沙箱是否影响「能不能跑脚本」时,仍以 workspace trust 和 permissions 为准——状态栏脚本本身不提高工具权限。
实操小结
/statusline自然语言生成,或手写statusLine.command- 脚本读 stdin JSON,打印一行;本地执行、不耗 API
- 优先展示
used_percentage+ cost;git 结果要缓存 - 需 workspace trust;Windows 用正斜杠;控制
refreshInterval
把上下文和花费钉在眼皮底下,比事后发现「会话已经顶满」便宜得多。