8.8 KiB
title, sidebar_position
| title | sidebar_position |
|---|---|
| ccr statusline | 5 |
ccr statusline
显示可自定义的状态栏,实时展示 Claude Code 会话信息,包括工作区、Git 分支、模型、token 使用情况等。
概述
ccr statusline 命令从 stdin 读取 JSON 数据,并在终端中渲染格式精美的状态栏。它设计用于与 Claude Code 的 hook 系统集成,以显示实时会话信息。
使用方法
基本用法
ccr statusline
该命令期望通过 stdin 接收 JSON 数据,通常通过管道从 Claude Code hook 传递:
echo '{"hook_event_name":"...","session_id":"...","..."}' | ccr statusline
Hook 集成
在您的 Claude Code 设置中配置:
{
"hooks": {
"postResponse": {
"command": "ccr statusline",
"input": "json"
}
}
}
可用主题
默认主题
简洁优雅的主题,使用 Nerd Font 图标和彩色文本:
my-project main claude-3-5-sonnet-20241022 ↑ 12.3k ↓ 5.2k
Powerline 主题
vim-powerline 风格,带背景色和箭头分隔符:
my-project main claude-3-5-sonnet-20241022 ↑ 12.3k ↓ 5.2k
通过在配置中设置 currentStyle: "powerline" 激活。
简单主题
回退主题,不带图标,适用于不支持 Nerd Font 的终端:
my-project main claude-3-5-sonnet-20241022 ↑ 12.3k ↓ 5.2k
当 USE_SIMPLE_ICONS=true 或在不支持的终端上自动使用。
可用模块
状态栏模块显示不同类型的信息:
| 模块 | 说明 | 变量 |
|---|---|---|
| workDir | 当前工作目录名称 | {{workDirName}} |
| gitBranch | 当前 Git 分支 | {{gitBranch}} |
| model | 使用的模型 | {{model}} |
| usage | Token 使用情况(输入/输出) | {{inputTokens}}, {{outputTokens}} |
| context | 上下文窗口使用情况 | {{contextPercent}}, {{contextWindowSize}} |
| speed | Token 处理速度 | {{tokenSpeed}}, {{isStreaming}} |
| cost | API 成本 | {{cost}} |
| duration | 会话持续时间 | {{duration}} |
| lines | 代码变更 | {{linesAdded}}, {{linesRemoved}} |
| script | 自定义脚本输出 | 动态 |
配置
在 ~/.claude-code-router/config.json 中配置 statusline:
默认样式示例
{
"StatusLine": {
"currentStyle": "default",
"default": {
"modules": [
{
"type": "workDir",
"icon": "",
"text": "{{workDirName}}",
"color": "bright_blue"
},
{
"type": "gitBranch",
"icon": "",
"text": "{{gitBranch}}",
"color": "bright_magenta"
},
{
"type": "model",
"icon": "",
"text": "{{model}}",
"color": "bright_cyan"
},
{
"type": "usage",
"icon": "↑",
"text": "{{inputTokens}}",
"color": "bright_green"
},
{
"type": "usage",
"icon": "↓",
"text": "{{outputTokens}}",
"color": "bright_yellow"
}
]
}
}
}
Powerline 样式示例
{
"StatusLine": {
"currentStyle": "powerline",
"powerline": {
"modules": [
{
"type": "workDir",
"icon": "",
"text": "{{workDirName}}",
"color": "white",
"background": "bg_bright_blue"
},
{
"type": "gitBranch",
"icon": "",
"text": "{{gitBranch}}",
"color": "white",
"background": "bg_bright_magenta"
}
]
}
}
}
完整功能示例
{
"StatusLine": {
"currentStyle": "default",
"default": {
"modules": [
{
"type": "workDir",
"icon": "",
"text": "{{workDirName}}",
"color": "bright_blue"
},
{
"type": "gitBranch",
"icon": "",
"text": "{{gitBranch}}",
"color": "bright_magenta"
},
{
"type": "model",
"icon": "",
"text": "{{model}}",
"color": "bright_cyan"
},
{
"type": "context",
"icon": "🪟",
"text": "{{contextPercent}}% / {{contextWindowSize}}",
"color": "bright_green"
},
{
"type": "speed",
"icon": "⚡",
"text": "{{tokenSpeed}} t/s {{isStreaming}}",
"color": "bright_yellow"
},
{
"type": "cost",
"icon": "💰",
"text": "{{cost}}",
"color": "bright_magenta"
},
{
"type": "duration",
"icon": "⏱️",
"text": "{{duration}}",
"color": "bright_white"
},
{
"type": "lines",
"icon": "📝",
"text": "+{{linesAdded}}/-{{linesRemoved}}",
"color": "bright_cyan"
}
]
}
}
}
自定义脚本
您可以通过执行脚本创建自定义模块:
{
"type": "script",
"icon": "🔧",
"scriptPath": "/path/to/script.js",
"options": {
"customOption": "value"
}
}
脚本格式(CommonJS):
// my-status-module.js
module.exports = function(variables, options) {
// 访问变量如 model、gitBranch 等
// 从配置中访问选项
return `Custom: ${variables.model}`;
};
// 或异步
module.exports = async function(variables, options) {
const data = await fetchSomeData();
return data;
};
颜色选项
标准颜色
black,red,green,yellow,blue,magenta,cyan,whitebright_black,bright_red,bright_green,bright_yellow,bright_blue,bright_magenta,bright_cyan,bright_white
背景颜色
添加前缀 bg_:bg_blue, bg_bright_red 等。
十六进制颜色
使用 24 位 TrueColor 和十六进制代码:
{
"color": "#FF5733",
"background": "bg_#1E90FF"
}
可用变量
所有变量都可以在模块文本中使用 {{variableName}} 访问:
| 变量 | 说明 | 示例 |
|---|---|---|
{{workDirName}} |
当前目录名称 | my-project |
{{gitBranch}} |
Git 分支名称 | main |
{{model}} |
模型名称 | claude-3-5-sonnet-20241022 |
{{inputTokens}} |
输入 tokens(格式化) | 12.3k |
{{outputTokens}} |
输出 tokens(格式化) | 5.2k |
{{tokenSpeed}} |
每秒 tokens 数 | 45 |
{{isStreaming}} |
流式传输状态 | streaming 或空 |
{{contextPercent}} |
上下文使用百分比 | 45 |
{{contextWindowSize}} |
总上下文窗口 | 200k |
{{cost}} |
总成本 | $0.15 |
{{duration}} |
会话持续时间 | 2m34s |
{{linesAdded}} |
添加的行数 | 150 |
{{linesRemoved}} |
删除的行数 | 25 |
{{sessionId}} |
会话 ID(前 8 个字符) | a1b2c3d4 |
环境变量
使用环境变量控制行为:
| 变量 | 值 | 说明 |
|---|---|---|
USE_SIMPLE_ICONS |
true/false |
强制使用不带图标的简单主题 |
NERD_FONT |
任意值 | 自动检测 Nerd Font 支持 |
示例
极简状态栏
{
"StatusLine": {
"default": {
"modules": [
{
"type": "model",
"text": "{{model}}"
},
{
"type": "usage",
"text": "↑{{inputTokens}} ↓{{outputTokens}}"
}
]
}
}
}
输出:claude-3-5-sonnet-20241022 ↑12.3k ↓5.2k
开发者生产力重点
{
"StatusLine": {
"default": {
"modules": [
{
"type": "gitBranch",
"icon": "",
"text": "{{gitBranch}}",
"color": "bright_magenta"
},
{
"type": "lines",
"icon": "📝",
"text": "+{{linesAdded}}/-{{linesRemoved}}",
"color": "bright_cyan"
},
{
"type": "duration",
"icon": "⏱️",
"text": "{{duration}}",
"color": "bright_white"
}
]
}
}
}
输出: feature/auth 📝 +150/-25 ⏱️ 2m34s
Preset 集成
Statusline 主题可以包含在 presets 中。当您安装带有 statusline 配置的 preset 时,激活该 preset 时会自动应用。
查看 Presets 了解更多信息。
故障排除
图标不显示
在环境中设置 USE_SIMPLE_ICONS=true:
export USE_SIMPLE_ICONS=true
颜色不工作
确保您的终端支持 TrueColor(24 位颜色):
export COLORTERM=truecolor
Git 分支不显示
确保您在 Git 仓库中并安装了 git 命令。
相关命令
- ccr status - 检查服务状态
- ccr preset - 管理带 statusline 主题的 presets