命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
配置 Claude Code 的状态行显示信息
/statusline 是 Claude Code 会话内的 slash 命令,接受自然语言描述作为参数。执行后,Claude Code 会自动生成一个 shell 脚本并更新 settings.json,在终端底部渲染一条可持续刷新的状态行(status line)。
状态行的本质是:Claude Code 将会话 JSON 数据通过 stdin 传给你指定的脚本,脚本把想显示的内容输出到 stdout,底部状态栏就显示该内容。这是一个纯本地机制,不依赖任何云端服务。
在会话内直接输入:
/statusline <你想显示的内容描述>
Claude Code 会读懂意图,生成脚本文件并写入 settings.json。
示例:
/statusline show model name and context usage percentage with a progress bar
/statusline show the model name in orange
/statusline
Show model, current directory, git branch, context percentage, and estimated cost.
Keep it one line and handle missing fields.
/statusline 接受自然语言指令,描述你想显示的内容,Claude Code 会据此在 ~/.claude/ 生成脚本并自动更新 settings(官方文档未记录"不加参数复现终端 prompt"这类默认行为)。
跳过 /statusline 命令,直接编辑配置文件:
用户级(全局生效): ~/.claude/settings.json
项目级: .claude/settings.json
{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"refreshInterval": 5
}
}
| 字段 | 类型 | 说明 |
|---|---|---|
type | string | 固定为 "command" |
command | string | 脚本路径或内联 shell 命令 |
refreshInterval | number (可选) | 周期性刷新间隔,单位秒;仅在需要定时更新部分内容时使用 |
Claude Code 每次刷新时将如下结构的 JSON 通过 stdin 传入脚本:
| 字段 | 说明 |
|---|---|
model.id | 完整 model ID |
model.display_name | 简短 model 名 |
context_window.total_input_tokens | 已消耗 input token 数 |
context_window.total_output_tokens | 已消耗 output token 数 |
context_window.context_window_size | 最大上下文窗口大小 |
context_window.percentage | 上下文使用百分比 |
cost.total_cost_usd | 本次会话累计费用(美元) |
cost.total_duration_ms | 会话已运行时长(毫秒) |
workspace.current_dir / cwd | 当前工作目录 |
git.branch | 当前 git 分支 |
session | 会话标识信息 |
version | Claude Code 版本 |
vim | 是否处于 vim 模式 |
agent | 子 agent 相关信息 |
worktree | worktree 相关信息 |
rate_limits | 速率限制信息(并非所有账户都有) |
注意: 并非每个字段都会在每个账户、版本或路由下出现,脚本必须做防御性字段缺失处理。
一个最小 bash 示例(依赖 jq):
#!/usr/bin/env bash
data=$(cat)
model=$(echo "$data" | jq -r '.model.display_name // "unknown"')
pct=$(echo "$data" | jq -r '.context_window.percentage // "?"')
echo "${model} | ctx: ${pct}%"
脚本输出多行文本即可显示多行状态栏:
#!/usr/bin/env bash
data=$(cat)
branch=$(echo "$data" | jq -r '.git.branch // ""')
pct=$(echo "$data" | jq -r '.context_window.percentage // "?"')
cost=$(echo "$data" | jq -r '.cost.total_cost_usd // 0')
echo "${branch}"
printf "ctx: %s%% cost: \$%.4f\n" "$pct" "$cost"
ANSI 转义码可以正常工作;OSC 8 超链接取决于终端是否支持,建议先用纯文本测试,再按需添加颜色。
| 约束 | 原因 |
|---|---|
项目级 statusLine 执行前需通过 workspace trust 对话框 | statusLine 会执行本地 shell 命令,属于安全敏感操作 |
| 脚本执行时间过长会拖慢 UI 响应 | 状态行在每次刷新时同步等待脚本输出 |
| Windows 环境可能存在路径和 shell 兼容性问题(据通用经验,官方未文档化) | 脚本以系统默认 shell 执行,跨平台写法需额外处理 |
disableAllHooks 会按设计同时停用所有 hooks 和自定义状态行 | 官方 settings 文档:"Disable all hooks and any custom status line",这是预期行为而非缺陷 |
/statusline 改的是终端底部信息行,容易和改配色的 /theme、改输出格式的命令混淆。它们各管一处:
| 命令 | 改什么 | 配置位置 | 机制 |
|---|---|---|---|
/statusline | 终端底部状态行内容 | settings.json 的 statusLine(指向脚本) | 会话 JSON 经 stdin 传脚本,脚本 stdout 即显示内容 |
/theme | 整体配色主题 | settings.json 的 theme / 自定义主题文件 | 内置或自定义 color token |
/output-style | Claude 回复的风格/格式 | 输出风格配置 | 影响模型输出而非 UI 渲染 |
记忆法:底部那一行用 /statusline,颜色用 /theme,回答的口吻/结构用 /output-style。三者互不冲突,可叠加使用。statusLine 脚本纯本地执行,不依赖云端。
git statussession 或 worktree 信息,避免在多窗口间混淆jq 未安装导致脚本无声失败:bash 脚本依赖 jq 解析 stdin JSON。如果 jq 不存在,脚本会静默退出,状态行显示为空白。解决:先 brew install jq 或 apt install jq,或改用 Python/Node.js 脚本。rate_limits、git.branch)不会在所有环境下出现。未做 null 防护的脚本会出错。始终使用 jq -r '.field // "default"' 形式。新增斜杠命令用于自定义终端提示符显示在 Claude Code 中。