
Claude Code SDK #24:Status line 全解——stdin JSON × 本地脚本 × context/cost/git 仪表盘,把长任务状态钉在底部
Status line 是 Claude Code 的本地可编程状态栏:Claude Code 把 session JSON 送进你的脚本,你把模型、目录、上下文、成本、git、worktree 等信息渲染到底部。本篇拆解配置字段、刷新机制、可用 JSON 字段、脚本模板、subagentStatusLine 边界和排障清单。

01 / 它的核心模型:Claude Code 喂 JSON,你的脚本吐文本
- Claude Code 负责提供会话状态,例如模型、工作目录、上下文窗口、费用、rate limit、PR、worktree、vim mode。
- 你的脚本负责决定「哪些字段值得显示」「怎么裁剪」「何时用颜色、进度条或链接」。
- 状态栏脚本在本地运行,不消耗 API token;它会在自动补全、帮助菜单、权限提示等 UI 交互期间暂时隐藏。1
02 / 最小配置:先用 /statusline,再决定要不要手写
/statusline,用自然语言描述你想显示的内容。官方文档给的例子是:/statusline show model name and context percentage with a progress bar。Claude Code 会生成脚本,并更新 ~/.claude/ 下的配置。1statusLine 字段。它的 type 设为 command,command 指向脚本路径或 inline shell 命令。官方手写配置的骨架是这样:1{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh",
"padding": 2
}
}padding 给内容增加水平缩进;refreshInterval 让命令按固定秒数重跑,适合展示时钟或外部状态;hideVimModeIndicator 可以隐藏内置的 -- INSERT --,前提是你的脚本已经自己渲染 vim.mode。1
03 / 什么时候刷新:它不是实时轮询,默认是事件驱动
/compact 完成之后、permission mode 改变时、vim mode 切换时。刷新有 300ms debounce;如果新的刷新事件发生时旧脚本还在跑,旧执行会被取消。1git status、git diff、调用外部 API、扫大仓库文件,都可能让底部信息滞后。官方示例建议给昂贵操作加缓存,并用 session_id 生成稳定但互不冲突的缓存文件名,而不是用每次进程都会变化的 $$ 或 process.pid。1statusLine 设置 refreshInterval。104 / 可读字段:最有价值的是这六组
| 想解决的问题 | 推荐字段 | 使用建议 |
|---|---|---|
| 分清当前模型 | model.id、model.display_name | 多模型切换时显示 display_name,排障时再看 id。1 |
| 分清当前目录 | cwd、workspace.current_dir、workspace.project_dir | 文档建议优先用 workspace.current_dir,因为它与 project dir 语义更一致。1 |
| 盯住上下文 | context_window.used_percentage、remaining_percentage、current_usage | used_percentage 是最省事的指标;自己计算时只按 input/cache 相关 token 算,不把 output token 加进去。1 |
| 盯住成本 | cost.total_cost_usd、cost.total_duration_ms、cost.total_api_duration_ms | 这些是当前 session 的估算成本和耗时,可用于长任务成本感知。1 |
| 分清并行环境 | workspace.git_worktree、worktree.name、worktree.branch | 多 worktree session 同时跑时,把分支名放在状态栏比靠窗口标题靠谱。1 |
| 做订阅额度提醒 | rate_limits.five_hour.used_percentage、rate_limits.seven_day.used_percentage | rate limit 字段只在 Claude.ai Pro/Max 订阅用户且首次 API response 后出现,脚本要处理字段缺失。1 |
null。比如 session_name 只有设置过 --name 或 /rename 才出现,vim 只在启用 vim mode 时出现,context_window.current_usage 在首个 API 调用前和 /compact 后可能是 null。脚本里要用 fallback,别直接假定字段永远存在。105 / 一条可直接改的脚本:模型 + 目录 + context + git
#!/bin/bash
input=$(cat)
MODEL=$(echo "$input" | jq -r '.model.display_name // "Claude"')
DIR=$(echo "$input" | jq -r '.workspace.current_dir // .cwd // ""')
PCT=$(echo "$input" | jq -r '.context_window.used_percentage // 0' | cut -d. -f1)
BRANCH=""
if git rev-parse --git-dir >/dev/null 2>&1; then
BRANCH=$(git branch --show-current 2>/dev/null)
fi
if [ -n "$BRANCH" ]; then
echo "[$MODEL] ${DIR##*/} | git:$BRANCH | ctx:${PCT}%"
else
echo "[$MODEL] ${DIR##*/} | ctx:${PCT}%"
fi{
"statusLine": {
"type": "command",
"command": "~/.claude/statusline.sh"
}
}chmod +x ~/.claude/statusline.sh。设置写入后,Claude Code 会在下一次交互时显示状态栏。1
06 / 三个相邻概念别混了
| 机制 | 适合做什么 | 不适合做什么 |
|---|---|---|
statusLine | 在底部显示你脚本输出的会话状态,例如模型、上下文、费用、git、worktree。1 | 不适合把普通 ID 自动变成 footer badge。 |
footerLinksRegexes | 当对话输出里出现某类 ID 时,在 footer 里生成可点击 badge;官方说明它不需要写脚本。2 | 不适合展示连续变化的 session 仪表盘。 |
subagentStatusLine | 改写 agent panel 中每个可见 subagent 行的内容,输入是包含 tasks 数组的 JSON,并要求每行输出 { "id": "", "content": "" }。1 | 不替代主 session 底部 status line。 |
07 / 排障时先看这 6 件事
- 脚本没执行权限:先跑
chmod +x ~/.claude/statusline.sh。 - 脚本没有 stdout:status line 只显示 stdout,stderr 不会变成状态栏内容。
- Windows 路径写反斜杠:在有 Git Bash 的 Windows 上,未加引号的反斜杠会被当作转义;官方建议在
command里用正斜杠路径,例如C:/Users/username/.claude/statusline.ps1。1 disableAllHooks开着:这个设置会同时禁用 hooks 和自定义 status line。2- 字段是空的:第一次 API response 之前,部分上下文字段本来就可能是
null,用// 0、// empty兜底。1 - 脚本太慢:慢脚本会阻塞状态栏更新;新刷新到来时,旧执行可能被取消。1
08 / 今天就能落地的配置顺序
- 先运行
/statusline show model name, current directory and context percentage,让 Claude Code 生成第一版。 - 打开生成的脚本,把显示内容收敛到「模型 + 当前目录 + context % + git branch」。
- 如果你经常用 worktree,把
worktree.branch或workspace.git_worktree加进去。 - 如果你跑长任务,把
cost.total_cost_usd和cost.total_duration_ms加进去。 - 如果脚本开始变慢,再加缓存;不要一开始就把状态栏写成小型监控系统。
Related content
Picked from other channels by content similarity—find new creators to follow.
Article·2026-06-24 关注圈日报(公开账号抽样版):Claude Tag、Codex Remote、Google Workspace CLI
本期完整关注列表暂时不可读,实际覆盖 13 个公开账号的 2026 年 6 月 24 日动态。重点梳理 Claude Tag 进入 Slack、Codex Remote 的移动控制面、Google Workspace CLI 争议、Apodex 深度研究测试,以及豆包 2.1 Pro / Zcode 的使用反馈。
X Feed 每日中文简报
Article·Claude Code 出实时评审页,Gemini 补临时聊天管控——6 月 21 日 AI 动态
本期补看 6 月 16-21 日可核验的 AI 产品更新:Claude Code Artifacts 把编码会话变成组织内可共享的实时页面,Gemini app 给企业管理员补临时聊天和删除对话控制,Copilot Chat Auto mode 面向所有 Copilot 计划开放,Gemini in Sheets 扩展到更多语言。
AI 产品日报
Article·Claude Fable 5 发布,karpathy 说「停止盯代码」:6月9日核心人物推文精选
Anthropic 发布 Claude Fable 5(Mythos 同级别通用版);karpathy 给出亲测后「值得大版本号」的判断并说「从没这么想停止盯代码」;alexalbert__ 分享 4 条 Fable 使用新范式建议;levie 完整推导「上下文永远无法被模型内置」的逻辑;danshipper 提出 evals 需要「成本/时间」第二轴。来自 10 位核心人物的 6 月 9 日精选。
AI 前沿人物每日推文精选
Image post·5条科技热门 Day 003 | Copilot计费变了 · 免费Claude Code · 本地2倍提速
今日精选5条:①GitHub Copilot宣布从月费订阅转向按用量计费(HN 643分/479评论)②开源项目free-claude-code今日+2949星,提供终端/VSCode/Discord三端免费访问③GitNexus把GitHub仓库变成浏览器内可查询知识图谱④Luce DFlash用推测解码让RTX 3090跑Qwen3-27B速度翻倍⑤r/artificial深度讨论「50%在线内容已是合成内容」引发Model Collapse风险
5条科技热门内容
Article·Claude Code 开始分享 HTML 站点,levie 说开源模型逼近前沿:6月19日精选
本期从 24 个白名单账号的 44 条窗口内推文中筛出 8 条主信号。Claude Code 的 HTML artifacts 走向团队共享,Guillermo Rauch 把 agent 与开放 API、文档、测试和 HTML 重新连起来;Aaron Levie 则用开源权重模型和 Fable 访问更新,讨论应用 AI 层与监管节奏。
AI 前沿人物每日推文精选
Article·X Feed 每日中文简报|2026年6月9日
2026年6月9日简报:Claude Code 一周年深度方法论(Auto Mode 取代 Plan Mode、错误写入规则);Cognition FrontierCode 评测 Opus 4.8 Diamond 子集 13.4%;Skills 仓库新增 Teach Skill;傅盛判断人形机器人行云流水大概率非真自主;Elon Musk 宣布 FSD 丹麦获批;Genspark 推出 Skill Plaza 让普通用户也能用 Skills。
X Feed 每日中文简报
Add more perspectives or context around this Post.