mcpField
S
statusline-config

statusline-config

github.com/sd0xdevAgent 工作流19467 次安装3 周前更新
代码仓库

关于 statusline-config

statusline-config 是用于配置 Claude Code `statusline-command.sh` 的技能,可选择状态栏信息段和主题,并生成、验证脚本。

主要功能

  1. 01启用或关闭状态栏信息段
  2. 02选择颜色主题
  3. 03显示模型与上下文信息
  4. 04显示费用与速率限制
  5. 05生成并验证 Shell 脚本

适用场景

  1. 01在状态栏中添加 Token 用量
  2. 02更改状态栏配色
  3. 03在状态栏显示 worktree 信息

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sd0xdev/sd0x-harness --skill statusline-config

安装后在 Claude Code 中输入/statusline-config确认已加载。

附带文件references/json-schema.mdreferences/themes.md

详细介绍

StatusLine 配置

自定义 ~/.claude/statusline-command.sh — 分段、主题和颜色。

何时不应使用

场景改用
首次设置状态行(无需自定义)内置的 statusline-setup Agent(Claude Code Agent 类型)——自动应用默认设置
直接编辑 settings.json手动编辑 — 此技能管理的是 statusline-command.sh,而不是 settings.json
调试 Claude Code 启动问题/claude-health — 配置健康检查

分段

分段JSON 字段默认值备注
目录workspace.current_dir开启截断过深的路径:~/.../last-dir
Git 分支shell git开启--no-optional-locks,缓存 5 秒
Agentagent.name开启(有条件)存在时显示;颜色:C_MODEL
模型model.display_name + context_window.context_window_size开启智能档位后缀:Opus 4.6 (1M) — 如果 display_name 已包含上下文信息,则自动跳过
上下文 %context_window.remaining_percentage + context_window_size开启ctx 60% left (600k/1M) — 绿色 >40%,黄色 20-40%,红色 <=20%
Token 用量context_window.total_input_tokens + total_output_tokens开启(有条件){in}k/{out}k 会话累计;颜色:C_COST
费用cost.total_cost_usd开启达到 $0.005 时显示,est $X.XX
速率限制rate_limits.five_hour.used_percentage + seven_day.used_percentage开启(有条件)5h: 85% left · 7d: 82% left — 显示剩余比例(100 - 已用);颜色阈值与上下文 % 相同:绿色 >40%,黄色 20-40%,红色 <=20%;仅 OAuth 用户适用
Worktreeworktree.name + worktree.branch开启(有条件)[WT:{name}] {branch},若分支不存在则显示 [WT:{name}];存在时替代目录 + Git 分支;颜色:C_BRANCH

完整的 JSON 架构请参见 json-schema.md。

主题

主题类型默认备注
ansi-defaultANSI 16✅安全回退,适用于所有环境
catppuccin-mochaTrueColor—推荐 — 柔和色调,WCAG AA >=4.5:1
draculaTrueColor—鲜艳的紫色/粉色点缀
nordTrueColor—北极蓝色,柔和色调
none——无颜色(自动触发 NO_COLOR)

切换方式:export CLAUDE_STATUSLINE_THEME=catppuccin-mocha

完整的 token→十六进制颜色映射请参见 themes.md。

语义令牌

脚本使用语义令牌,而非硬编码颜色:

令牌用途示例
C_CWD目录路径蓝色 / 蓝宝石色
C_BRANCHGit 分支名称洋红色 / 淡紫色
C_MODEL模型显示名称青色 / 蓝绿色
C_CTX_OK上下文 >= 41%绿色
C_CTX_WARN上下文 21-40%黄色
C_CTX_BAD上下文 <= 20%红色
C_COST费用显示柔和文字
C_ALERT>200k Token 警告(旧版,已移除该分段)橙色/蜜桃色 + 粗体
C_SEP管道分隔符 |暗淡/叠加
C_MUTED次要信息次级文本
C_TEXT常规文本前景色
C_RESET重置所有格式\033[0m

工作流

无参数 → 应用最佳实践默认设置(所有片段均启用 + ansi-default 主题)。转到第 4 步。

更改主题(例如“使用 catppuccin-mocha”“切换到 dracula”)→ 阅读 themes.md,应用所请求的主题。转到第 4 步。别名:catppuccin → catppuccin-mocha。

自定义请求(例如“添加成本”“移除 git”“不要颜色”)→ 交互流程:

  1. 读取当前脚本:cat ~/.claude/statusline-command.sh
  2. 询问要启用/禁用的片段(AskUserQuestion 多选)
  3. 询问主题偏好(AskUserQuestion,提供主题选项)
  4. 遵循 Script Rules + 从 themes.md 中选择的主题生成脚本
  5. 写入 ~/.claude/statusline-command.sh
  6. 验证:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh

脚本规则

  • Shebang:#!/bin/sh(POSIX)
  • 读取 stdin:input=$(cat)
  • 解析 JSON:jq -r '.field // fallback'
  • 从环境变量读取主题:theme="${CLAUDE_STATUSLINE_THEME:-ansi-default}"
  • NO_COLOR:[ -n "${NO_COLOR:-}" ] && theme="none"
  • 主题别名:catppuccin → catppuccin-mocha
  • 无效主题:回退到 ansi-default
  • 颜色输出:ANSI/TrueColor 使用 printf "%b",none 使用 printf "%s"
  • TrueColor 格式:\033[38;2;R;G;Bm(24 位前景色)
  • Git:git --no-optional-locks -C "$dir"
  • Git 缓存:/tmp/claude-statusline-git-cache-$(id -u),5 秒 TTL,macOS 使用 stat -f %m / Linux 使用 stat -c %Y
  • CWD 截断:深度 >2 时 → ~/.../basename
  • 成本:仅当 >= 0.005 时显示,格式为 est $X.XX
  • 警报样式:C_ALERT + 粗体(\033[1m),以区别于 C_CTX_BAD
  • Token 格式:通过 awk 使用 %.1fk(例如,8500 → 8.5k);小于 1000 的值显示原始数字
  • 层级格式:>=1M → (1M),>=1000 → ({N}k),否则显示原始值;用于模型后缀 + 上下文绝对值
  • 模型层级后缀:根据 context_window_size 附加 (1M) 或 (200k);如果 display_name 已包含 context、1M 或 200k,则跳过
  • 上下文绝对值:ctx 60% left (600k/1M) — 剩余 Token 数根据 remaining_percentage * context_window_size / 100 计算
  • 清理自由文本:剔除控制字符(tr -d '[:cntrl:]')+ 将 agent.name、worktree.name、worktree.branch 截断至 30 个字符
  • Worktree 替换:存在 worktree.name 时,将 Directory + Git 分支替换为 [WT:{name}] {branch}(若 worktree.branch 不存在,则显示 [WT:{name}] — 基于 hook 的 worktree)
  • 速率限制:存在 rate_limits 时显示;显示剩余百分比(100 - used_percentage)并添加 "left" 后缀;格式为 5h: {rem}% left · 7d: {rem}% left;根据最差剩余值着色 — 绿色 >40%(C_CTX_OK)、黄色 20-40%(C_CTX_WARN)、红色 <=20%(C_CTX_BAD);阈值与上下文百分比一致;仅适用于 OAuth 用户
  • 速率限制 resets_at:已提取,但 v1 中不显示(对于状态栏来说过于冗长)
  • 渲染顺序(普通):Directory | Git branch | Agent? | Model (tier) | Context % (abs) · Token Usage? · Cost? · Rate Limits?
  • 渲染顺序(worktree):[WT:name] branch | Agent? | Model (tier) | Context % (abs) · Token Usage? · Cost? · Rate Limits?

脚本结构

#!/bin/sh
input=$(cat)
# ... extract JSON fields ...

theme="${CLAUDE_STATUSLINE_THEME:-ansi-default}"
[ -n "${NO_COLOR:-}" ] && theme="none"

case "$theme" in
  catppuccin|catppuccin-mocha) # set C_* tokens with TrueColor values ;;
  dracula)          # ... ;;
  nord)             # ... ;;
  none)             # all C_* = "" ;;
  *)                # ansi-default: ANSI 16 colors ;;
esac

# ... build output using C_* tokens ...
if [ "$theme" = "none" ]; then
  printf "%s" "$out"
else
  printf "%b" "$out"
fi

输出示例

Normal mode (1M context):
~/.../my-project | feat/auth | Opus 4.6 (1M) | ctx 60% left (600k/1M) · 85.0k/12.0k · est $18.12

Normal mode (200k context):
~/.../my-project | main | Sonnet 4.6 (200k) | ctx 30% left (60k/200k) · 120.0k/8.0k · est $3.50

With agent:
~/.../my-project | feat/auth | security-reviewer | Opus 4.6 (1M) | ctx 48% left (480k/1M) · est $0.12

Worktree mode:
[WT:fix-123] bugfix/issue-123 | Opus 4.6 (1M) | ctx 22% left (220k/1M) · 42.0k/8.0k · est $1.23

With rate limits (OAuth user, green):
~/.../my-project | feat/auth | Opus 4.6 (1M) | ctx 60% left (600k/1M) · 85.0k/12.0k · est $18.12 · 5h: 58% left · 7d: 82% left

Rate limits warning (yellow):
~/.../my-project | main | Opus 4.6 (1M) | ctx 30% left (300k/1M) · 5h: 25% left · 7d: 35% left

Rate limits critical (red):
~/.../my-project | main | Opus 4.6 (1M) | ctx 30% left (300k/1M) · 5h: 8% left · 7d: 55% left

display_name already has context info (no duplicate suffix):
~/.../my-project | main | Opus 4.6 (1M context) | ctx 60% left (600k/1M) · est $18.12

输出

项目路径描述
StatusLine 脚本~/.claude/statusline-command.sh从 JSON stdin 接收输入的 POSIX shell 脚本

验证

生成脚本后,请验证:

  • ~/.claude/statusline-command.sh 存在且可执行(chmod +x)
  • v2 测试通过:echo '{"model":{"display_name":"Opus 4.6"},"cwd":"/tmp/test","workspace":{"current_dir":"/tmp/test","project_dir":"/tmp/test"},"context_window":{"remaining_percentage":55,"used_percentage":45,"context_window_size":200000,"total_input_tokens":85000,"total_output_tokens":12000,"current_usage":{"input_tokens":8500,"output_tokens":1200,"cache_creation_input_tokens":5000,"cache_read_input_tokens":2000}},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false,"session_id":"test","version":"2.1.80","output_style":{"name":"default"},"rate_limits":{"five_hour":{"used_percentage":42.5,"resets_at":"2026-03-21T14:30:00Z"},"seven_day":{"used_percentage":18.2,"resets_at":"2026-03-25T00:00:00Z"}}}' | ~/.claude/statusline-command.sh
  • 输出包含预期片段(目录、模型、上下文百分比、令牌用量 8.5k/1.2k)
  • Agent 测试:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false,"agent":{"name":"security-reviewer"}}' | ~/.claude/statusline-command.sh 会显示 security-reviewer 片段
  • Worktree 测试:echo '{"model":{"display_name":"Opus 4.6"},"worktree":{"name":"fix-123","branch":"bugfix/issue-123"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh 会显示 [WT:fix-123] bugfix/issue-123,替代目录/分支
  • 速率限制测试:输出包含绿色的 5h: 58% left · 7d: 82% left
  • 缺少速率限制时:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh 会生成不含速率限制片段的有效输出(无错误)
  • v1 向后兼容:echo '{"model":{"display_name":"Opus 4.6"},"workspace":{"current_dir":"/tmp/test"},"context_window":{"remaining_percentage":55},"cost":{"total_cost_usd":0.42},"exceeds_200k_tokens":false}' | ~/.claude/statusline-command.sh 会生成有效输出且无错误
  • 主题与用户选择一致(检查脚本中的颜色代码)
  • 设置 NO_COLOR=1 后会生成无颜色输出

评论

支持 Markdown