Skip to main content
使用自定义状态行自定义 Claude Code,该状态行显示在 Claude Code 界面的底部,类似于 Oh-my-zsh 等 shell 中的终端提示符(PS1)的工作方式。

创建自定义状态行

您可以:
  • 运行 /statusline 让 Claude Code 帮助您设置自定义状态行。默认情况下,它会尝试重现您的终端提示符,但您可以向 Claude Code 提供有关所需行为的其他说明,例如 /statusline show the model name in orange
  • 直接在 .claude/settings.json 中添加 statusLine 命令:

工作原理

  • 状态行在对话消息更新时更新
  • 更新最多每 300 毫秒运行一次
  • 您的命令的 stdout 的第一行成为状态行文本
  • 支持 ANSI 颜色代码来设置状态行的样式
  • Claude Code 通过 stdin 将当前会话的上下文信息(模型、目录等)作为 JSON 传递给您的脚本

JSON 输入结构

您的状态行命令通过 stdin 接收 JSON 格式的结构化数据:

示例脚本

简单状态行

Git 感知状态行

Python 示例

Node.js 示例

辅助函数方法

对于更复杂的 bash 脚本,您可以创建辅助函数:

上下文窗口使用情况

显示已消耗的上下文窗口百分比。context_window 对象包含:
  • total_input_tokens / total_output_tokens:整个会话中的累积总计
  • current_usage:最后一次 API 调用的当前上下文窗口使用情况(如果还没有消息,可能为 null
    • input_tokens:当前上下文中的输入令牌
    • output_tokens:生成的输出令牌
    • cache_creation_input_tokens:写入缓存的令牌
    • cache_read_input_tokens:从缓存读取的令牌
为了获得准确的上下文百分比,请使用 current_usage,它反映实际的上下文窗口状态:

提示

  • 保持您的状态行简洁 - 它应该适应一行
  • 使用表情符号(如果您的终端支持)和颜色使信息易于扫描
  • 在 Bash 中使用 jq 进行 JSON 解析(请参见上面的示例)
  • 通过使用模拟 JSON 输入手动运行脚本来测试您的脚本:echo '{"model":{"display_name":"Test"},"workspace":{"current_dir":"/test"}}' | ./statusline.sh
  • 如果需要,考虑缓存昂贵的操作(如 git 状态)

故障排除

  • 如果您的状态行没有出现,请检查您的脚本是否可执行(chmod +x
  • 确保您的脚本输出到 stdout(而不是 stderr)
Last modified on February 11, 2026