Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

自定义状态栏

用任意 shell 脚本在 Claude Code 底部显示上下文用量、成本、git 状态等:/statusline 生成、手动配置、数据如何流入脚本。

状态栏是 Claude Code 底部一条可定制的栏,它运行你配置的任意 shell 脚本:脚本从 stdin 收到会话数据的 JSON,把它打印出来的内容显示出来,让你随时一眼看到上下文用量、成本、git 状态等。

适合这些场景:想在工作时监控上下文窗口用量;需要追踪会话成本;同时在多个会话里工作、需要区分它们;想让 git 分支和状态始终可见。

状态栏渲染在内置页脚徽章上方自己的一行里,并不会替换它们。配置了自定义状态栏后,Claude Code 会不再显示页脚大部分的键盘提示(如 esc to interrupt)。

设置状态栏

两种方式:用 /statusline 命令让 Claude Code 帮你生成脚本,或手动创建脚本并加进设置。

用 /statusline 命令:它接受描述你想显示什么的自然语言,Claude Code 在 ~/.claude/ 里生成脚本文件并自动更新你的设置:

/statusline show model name and context percentage with a progress bar

手动配置:在用户设置(~/.claude/settings.json)或项目设置里添加 statusLine 字段,type 设为 "command",command 指向脚本路径或内联 shell 命令:

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 2
  }
}

command 字段在 shell 里运行,所以也可以用内联命令而不是脚本文件。下面的例子用 jq 解析 JSON 输入,显示模型名和上下文百分比:

{
  "statusLine": {
    "type": "command",
    "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'"
  }
}

可选字段:

  • padding:给状态栏内容增加额外的水平间距(以字符计),默认 0
  • refreshInterval:除了事件驱动的更新外,每 N 秒重新运行你的命令,最小为 1;状态栏显示时钟这类基于时间的数据,或后台子智能体在运行时用它
  • hideVimModeIndicator:抑制提示下方内置的 -- INSERT -- 文字;当你的脚本自己渲染 vim.mode 时设为 true,避免模式显示两次

禁用状态栏:运行 /statusline 并让它移除或清除状态栏(如 /statusline delete),或手动从 settings.json 里删掉 statusLine 字段。

一步步做一个状态栏

下面手动创建一个显示当前模型、工作目录和上下文窗口用量百分比的状态栏,这就是 /statusline 替你做的事。示例用 Bash 脚本(macOS 和 Linux 可用;Windows 见官方的 PowerShell 和 Git Bash 示例)。

  1. Claude Code 通过 stdin 把 JSON 数据发给你的脚本。下面的脚本用命令行 JSON 解析器 jq(可能需要安装)提取模型名、目录和上下文百分比,再打印一行格式化的文字。保存为 ~/.claude/statusline.sh:

    #!/bin/bash
    # 读取 Claude Code 发到 stdin 的 JSON 数据
    input=$(cat)
    
    # 用 jq 提取字段
    MODEL=$(echo "$input" | jq -r '.model.display_name')
    DIR=$(echo "$input" | jq -r '.workspace.current_dir')
    # "// 0" 在字段为 null 时提供回退值
    PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
    
    # 输出状态栏;${DIR##*/} 只取文件夹名
    echo "[$MODEL] 📁 ${DIR##*/} | ${PCT}% context"
  2. 让脚本可执行:

    chmod +x ~/.claude/statusline.sh
  3. 告诉 Claude Code 把你的脚本作为状态栏运行,在 ~/.claude/settings.json 里加上:

    {
      "statusLine": {
        "type": "command",
        "command": "~/.claude/statusline.sh"
      }
    }

保存文件后,Claude Code 会自动重新加载设置并立即运行你的脚本,状态栏出现在界面底部。

官方原文还列出了脚本能拿到的所有字段(模型、工作区、上下文窗口、成本、提示缓存、vim 模式等)、多行状态栏、颜色与可点击链接、子智能体状态栏,以及可直接使用的示例脚本。