Claude Code 状态栏编辑器statusline

把上下文、限额、花费、git 与项目环境放进终端底部,拖一拖就配好

  • 125 个指标段
  • 每次刷新 1.63 ms · 2.1 MiB 内存
  • 比 Node.js 快 14 倍
  • 开源 · 一条命令安装 · 支持 Codex
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ Try "refactor studio.tsx"
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
󰚩 Opus 5.5 󰧑 medium 󰍛 182k/1M (18%) 󰁪 0 󰥔 1hr 31m
󰁅 182k 󰁝 25k 󰑐 96% 󰈸 HOT 󰔛 0:48 󰓅 63 t/s 󰇁 $4.82  main 󰐕 86 󰍴 14

只有高亮区域是你的状态栏(可用 116 列)。上方输入框和分隔线、下方权限模式行,以及状态栏左右各 2 列的边距,都由 Claude Code 绘制,无法通过 statusLine 更改。预览与原生程序使用同一渲染器,git、项目与系统数据用示例值代替。

模型

上下文

累计 token

Prompt cache

费用与时间

限额

会话

工作区

轮次(transcript)

Git

语言与运行时

项目包

云与环境

系统

磁盘占用

自定义

状态栏行数
2
第 1 行
第 2 行
把段拖到这里新建一行

点选一个段来修改图标、名称、颜色、格式和进度条样式。

安装这份配置

Claude Code 2 行、15 个段。在终端运行(macOS / Linux):

渲染器 v1.2.0 · 配置码 0 字符草稿自动保存在本浏览器

How it works

三步换上新状态栏

  1. 1

    编排

    从段目录拖入需要的指标,分成多行;点选一个段修改图标、名称、颜色、数字格式与进度条。预览用示例数据实时渲染。

  2. 2

    复制命令

    页面把布局压缩成一段配置码,拼进安装命令。配置码只是 JSON,可用 decode 子命令原样查看。

  3. 3

    在终端运行

    安装脚本下载对应平台的程序并校验 sha256,然后由 setup 打印配置摘要、备份 settings.json,只修改其中的 statusLine 一项。

不想编排,直接装默认布局:

$
curl -fsSL https://omnitt.com/statusline/install.sh | sh

恢复原来的状态栏并删除程序:

$
~/.claude/bin/omnitt-statusline uninstall

Performance

性能:Zig 与 JavaScript、Python 对比

状态栏命令不是常驻进程:每条消息之后、以及设置了 refreshInterval 时每隔几秒,Claude Code 都会重新启动它一次。所以单次启动的耗时与内存,就是状态栏的延迟和长期耗电。同一份配置(两行 8 个段)、同一份会话输入,四种实现的输出先逐字节比对一致,再计时。

omnitt-statusline 每次刷新

1.63ms

峰值内存 2.1 MiB

比 Node.js 快 13.9×

实现单次耗时(中位数)峰值内存
  • Zig
    Zig 0.15.2
    1.63 msCPU 1.15 ms
    2.1 MiB
  • Node.js
    v22.21.0
    22.68 ms13.9× · CPU 21.32 ms
    40.2 MiB
  • Bun
    1.4.0
    12.46 ms7.6× · CPU 11.16 ms
    18.1 MiB
  • Python
    3.14.7
    20.16 ms12.4× · CPU 18.62 ms
    15 MiB
  • Apple M4,Darwin 27.0.0,2026-10-20;hyperfine 预热 20 次后每种实现运行 300 次,取中位数。
  • 测的是每次刷新都要付出的固定成本:进程启动、读配置、解析输入、格式化输出。git 等子进程各实现都要调用,耗时相同,没有计入。
  • JS 与 Python 版本只用标准库、不依赖第三方包,是同类脚本里最轻的写法;脚本与测量命令都在仓库的 bench 目录,可在自己的机器上复现。

Trust

安装的是什么

  • 开源(MIT)

    源码在 github.com/imatrixme/statusline,Zig 编写的单个可执行文件,没有网络代码,没有自动更新。

  • 来源可核验

    只由仓库的 GitHub Actions 从带标签的提交构建,附带 artifact attestation,可用 gh attestation verify 核验。

  • 下载即校验

    本站的 install.sh 与 Release 中的同名文件逐字节一致,写死了各平台程序的 sha256,不一致就中止。

  • 预览即实物

    网页预览运行同一渲染器编译成的 WebAssembly,相同配置与输入下,输出与原生程序逐字节一致。

v1.2.0 的 sha256(与 Release 的 SHA256SUMS 相同)
install.shf9394766d5f4af658e6433c99e4df78fd88b2748b30a8fae867188a832898923
omnitt-statusline-darwin-arm645ff82083d89e04e6ec75055289822f440fd51b5c063220504b6630c76dc66aab
omnitt-statusline-darwin-x648924329a6f2431f30394b10ec6e428c8b3524df7de088a3d62d1d12d757f98f7
omnitt-statusline-linux-arm64acdf388628769ec4113d47032659daf572a30498b95e43a4622920ac440919ba
omnitt-statusline-linux-x64dd0aeec6979d9d91f4830b705a1ff6b9d252eb45f77082553abb7f02e2c93204

查看 v1.2.0 Release

Manual setup

手动配置 statusLine

安装脚本做的事就是在 ~/.claude/settings.json 写入下面的 statusLine 键(写前自动备份)。Claude Code 每次刷新状态栏时执行这条命令,把会话 JSON 从 stdin 传入,命令的 stdout 就是状态栏内容。路径必须是绝对路径。

~/.claude/settings.json
{
  "statusLine": {
    "type": "command",
    "command": "/Users/you/.claude/bin/omnitt-statusline",
    "padding": 0
  }
}

125 segments

全部指标段

“会话输入”来自 Claude Code 每次刷新时传入的 JSON;git、对话记录、项目与系统信息由程序在本地读取。

模型7会话输入

  • 󰚩模型名称model
  • 󰚩模型 IDmodel-id
  • 󰧑推理强度effort
  • 󰧑扩展思考thinking
  • 󱐋快速模式fast-mode
  • 󰏘输出风格output-style
  • 󰚩Agent 名称agent

上下文10会话输入

  • 󰍛上下文进度条ctx-bar
  • 󰍛上下文已用 %ctx-used-pct
  • 󰍛上下文剩余 %ctx-remaining-pct
  • 󰍛上下文 token(已用/上限)ctx-tokens
  • 󰍛上下文上限ctx-window-size
  • 󰁅上次调用输入last-input
  • 󰁝上次调用输出last-output
  • 󰑐上次缓存读取last-cache-read
  • 󰑐上次缓存写入last-cache-write
  • 󰍛超过 200kexceeds-200k

累计 token2会话输入

  • 󰁅输入 tokentokens-in
  • 󰁝输出 tokentokens-out

Prompt cache4会话输入

  • 󰑐缓存命中率cache-hit
  • 󰈸缓存冷热cache-warm
  • 󰔟缓存剩余时间cache-expires
  • 󰑐缓存未命中次数cache-misses

费用与时间6会话输入

  • 󰇁费用cost
  • 󰥔会话时长session-duration
  • 󰥔API 时长api-duration
  • 󰊚API 时间占比api-ratio
  • 󰐕新增行数lines-added
  • 󰍴删除行数lines-removed

限额9会话输入

  • 󰊚5 小时限额 %limit-5h-pct
  • 󰊚5 小时限额进度条limit-5h-bar
  • 󰔟5 小时限额重置limit-5h-reset
  • 󰊚7 天限额 %limit-7d-pct
  • 󰊚7 天限额进度条limit-7d-bar
  • 󰔟7 天限额重置limit-7d-reset
  • 󰇁消费限额 %spend-pct
  • 󰇁已消费spend-used
  • 󰇁消费上限spend-limit

会话4会话输入

  • 󰦨会话名称session-name
  • 󰦨会话 IDsession-id
  • 󰆍Claude Code 版本version
  • 󰆍Vim 模式vim-mode

工作区6会话输入

  • 󰉋当前目录dir
  • 󰉋项目目录project-dir
  • 󰉋附加目录数added-dirs
  • 󰊤仓库repo
  • 󰊢Worktreeworktree
  • 󰊤Pull requestpr

轮次(transcript)8对话记录

  • 󰔛本轮耗时turn-time
  • 󰓅输出速度speed
  • 󰁪压缩次数compactions
  • 󰦨提问次数prompts
  • 󰖷工具调用(会话)tool-calls
  • 󰖷工具调用(本轮)turn-tool-calls
  • 󰖷最近工具last-tool
  • 󰔟空闲时长idle

Git17git

  • 分支git-branch
  • 󰊢提交哈希git-sha
  • 󰊢有未提交改动git-dirty
  • 󰐕已暂存文件git-staged
  • 󰊢未暂存文件git-unstaged
  • 󰊢未跟踪文件git-untracked
  • 󰁝领先远端git-ahead
  • 󰁅落后远端git-behind
  • 󰊢stash 数git-stash
  • 󰐕改动新增行git-diff-add
  • 󰍴改动删除行git-diff-del
  • 󰥔上次提交距今git-last-commit
  • 󰓹最近标签git-tag
  • 󱓎上游分支git-upstream
  • 󰀩冲突文件git-conflicts
  • 󰘬worktree 数git-worktrees
  • 󰘭进行中的操作git-state

语言与运行时13项目文件与 PATH

  • Node.jsnode
  • Bunbun
  • Denodeno
  • Pythonpython
  • 󰌠Python 虚拟环境python-venv
  • Gogo
  • Rustrust
  • Javajava
  • Rubyruby
  • PHPphp
  • Swiftswift
  • Zigzig
  • .NET SDKdotnet

项目包3项目文件与 PATH

  • 󰏓包名pkg-name
  • 󱈤包版本pkg-version
  • 󰏖包管理器pkg-manager

云与环境10环境变量与 CLI 配置

  • 󱃾Kubernetes contextk8s-context
  • 󱃾Kubernetes 命名空间k8s-namespace
  • 󰡨Docker contextdocker-context
  • 󰸏AWS profileaws-profile
  • 󰸏AWS 区域aws-region
  • 󱇶Google Cloud 项目gcloud-project
  • 󱁢Terraform workspaceterraform
  • 󱄅Nix shellnix-shell
  • 󰣀SSH 会话ssh
  • 󰆧容器内container

系统15系统

  • 󰥔时钟clock
  • 󰃭日期date
  • 󰒋主机名hostname
  • 󰀄用户名user
  • 󰊚系统负载load
  • 󰍛可用内存 %mem-avail
  • 󰻠CPU 占用cpu
  • 󰍛已用内存mem-used
  • 󰍛内存占用 %mem-used-pct
  • 󰓡已用交换区swap-used
  • 󰋊磁盘剩余disk-free
  • 󰋊磁盘占用 %disk-used-pct
  • 󰈐风扇转速fan
  • 󰅐开机时长uptime
  • 󰁹电量battery

磁盘占用8后台测量的目录占用(缓存 5 分钟)

  • 󰉖当前目录占用dir-size
  • node_modulesnode-modules
  • Rust target 目录rust-target
  • Go 构建与模块缓存go-cache
  • 󰏓iOS Pods 目录pods
  • Xcode DerivedDataxcode-derived
  • Gradle 缓存(Android / Java)gradle-cache
  • Maven 本地仓库maven-repo

自定义3自定义

  • 静态文字text
  • 环境变量env
  • 󰆍命令输出command

Codex CLI

Codex 内置状态栏项(0.163.0)

Codex 在 ~/.codex/config.toml 的 [tui] 中读取 status_line(内置项 id 的有序列表)与 status_line_use_colors。setup 只改这两个键,并丢弃当前 Codex 版本不认识的 id;未安装 Codex 时跳过。

  • 模型model
  • 模型与推理强度model-with-reasoning
  • 推理强度reasoning
  • 当前目录current-dir
  • 项目名project-name
  • 主机名hostname
  • Git 分支git-branch
  • PR 编号pull-request-number
  • 相对默认分支的改动branch-changes
  • 运行状态run-state
  • 权限配置permissions
  • 审批模式approval-mode
  • 上下文剩余 %context-remaining
  • 上下文已用 %context-used
  • 主限额剩余five-hour-limit
  • 周限额剩余weekly-limit
  • Codex 版本codex-version
  • 上下文窗口大小context-window-size
  • 会话 token 总量used-tokens
  • 输入 tokentotal-input-tokens
  • 输出 tokentotal-output-tokens
  • 线程额度(企业版)thread-credits
  • 线程费用(企业版)estimated-thread-cost
  • 线程 IDthread-id
  • Fast 模式fast-mode
  • Daybreakdaybreak
  • 原始滚动模式raw-output
  • 线程名thread-name
  • 线程标题thread-title
  • 工作区通知(企业版)workspace-headline
  • 任务进度task-progress

FAQ

常见问题

为什么用 Zig 写,而不是 Node.js 或 Python?

Claude Code 每次刷新状态栏都会重新启动一次命令,启动开销就是延迟和耗电。同一配置、同一输入、输出逐字节一致的条件下(Apple M4,中位数):Zig 版 1.63 ms、峰值内存 2.1 MiB;Node.js 22.68 ms、40.2 MiB;Bun 12.46 ms、18.1 MiB;Python 20.16 ms、15 MiB。差距主要来自解释器与运行时的启动,而不是格式化逻辑本身。

安装会改动哪些文件?

程序装到 ~/.claude/bin/omnitt-statusline,配置写到 ~/.config/omnitt-statusline/config.json;~/.claude/settings.json 先备份,再只改 statusLine 一个键。配置里有 Codex 部分时,备份 ~/.codex/config.toml 后只改 [tui] 下的 status_line 与 status_line_use_colors。setup 会逐条打印改动。

怎么卸载或回到原来的状态栏?

运行 ~/.claude/bin/omnitt-statusline uninstall。它把 statusLine 与 Codex 的两个键恢复成安装前的样子,并删除程序与配置;settings.json 的备份会保留。

程序会联网或自动更新吗?

不会。渲染器只读取 Claude Code 通过标准输入传来的会话 JSON,以及本地 git、对话记录、项目文件与系统信息。语言段只在目录里有对应项目文件时,运行 PATH 上该工具的 --version 查询版本(结果缓存 60 秒);云与环境段只读环境变量和 kubectl、docker、aws、gcloud 的本地配置文件,不调用这些命令。磁盘占用段由一个低优先级的后台进程遍历对应目录(只统计大小,不读文件内容),结果缓存 5 分钟。源码中没有网络代码,也没有自动更新。联网的只有安装脚本:它从 GitHub Release 下载程序。

“命令输出”段安全吗?

命令输出段会在每次刷新时用 /bin/sh 执行你填写的命令。为防止别人分享的配置码夹带命令,setup 安装前会逐条显示这些命令并要求确认;没有终端可确认时直接丢弃这些段。

Codex 能用同样的状态栏吗?

不能完全一样。Codex(0.163.0)不能运行自定义命令,只能从 31 个内置项中挑选与排序,并开关主题颜色;图标、颜色、进度条都不可定制。页面的 Codex 标签页生成这部分配置,可一键对应 Claude 布局里有等价项的段。

图标显示成方框怎么办?

图标来自 Nerd Fonts,终端需要使用 Nerd Font 字体(例如 Maple Mono NF、JetBrainsMono Nerd Font)。也可以在属性面板里选择“不要图标”。