Skip to content

底部状态栏自己画:statusLine 看上下文和花费

会话底部那一行默认信息有限。statusLine 让你用一段 shell 命令,从标准输入读 JSON,自己拼出模型名、上下文占用、花费、限流、git 分支等。命令在本地跑,不消耗 API token

两种配法

  1. 自然语言:会话里跑 /statusline,用中文说「显示模型、上下文百分比和本次花费」,它会帮你生成并写入设置。
  2. 手写设置:在 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 为准——状态栏脚本本身不提高工具权限。

实操小结

  1. /statusline 自然语言生成,或手写 statusLine.command
  2. 脚本读 stdin JSON,打印一行;本地执行、不耗 API
  3. 优先展示 used_percentage + cost;git 结果要缓存
  4. 需 workspace trust;Windows 用正斜杠;控制 refreshInterval

把上下文和花费钉在眼皮底下,比事后发现「会话已经顶满」便宜得多。

Claude-cn.org,专注于 Claude Code 中文教程