ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

用 Claude Code 写代码,上下文还剩多少全靠猜?我给终端装了个「仪表盘」

用 Claude Code 写代码,上下文还剩多少全靠猜?我给终端装了个「仪表盘」

一个开源插件 Claude HUD,把上下文余量、工具调用、子代理、Todo 进度做成常驻状态栏,就摆在你输入框下面。

先说一个我自己的日常

用 Claude Code 干活的时候,我心里经常悬着几个问题:

  • 上下文窗口(可以理解成 AI 这一次会话的"内存",装满了它就开始忘事)还剩多少?会不会干着干着突然爆掉,前面聊的东西全忘了?
  • 它现在到底在干嘛?是卡住了,还是在后台吭哧吭哧读文件?
  • 派出去的子代理(主 AI 派去干杂活的"小弟")跑了多久了?
  • 任务清单做到第几条了?

这些问题以前怎么解决?翻日志、敲/context、或者干等它自己提示。就像开车不看油表,全凭感觉估计还剩多少油——开短途没事,跑长途迟早趴窝。

前阵子我刷 GitHub 的时候看到一个项目,叫Claude HUD,作者 jarrodwatts。它干的事情很简单:把上面这些信息做成一条(或几条)常驻状态栏,直接放在 Claude Code 输入框下面,不弹窗、不抢焦点、不用另开终端,抬头就能看见。

我试了一个星期,回不去了。这篇文章就讲讲它是怎么回事。

Claude HUD 是个啥?

一句话:给 Claude Code 终端装一个实时仪表盘。

它是一个开源插件(MIT 协议,TypeScript 写的,目前在 GitHub 上大约 3.7k Star、166 Fork,还在持续更新)。装好之后,你的终端输入框下方会多出几行状态栏,实时显示:

你能看到举个例子为啥有用
项目路径my-project(可调 1~3 层深度)同时开几个项目时,确认自己在哪个仓库、哪个分支
上下文健康度█████░░░░░ 45%,绿→黄→红快满之前心里有数,提前压缩或开新会话,而不是等着"失忆"
用量限制██░░░░░░░░ 25% (1h 30m / 5h)Pro/Max/Team 订阅用户看限流余量,避免干到一半被限速
工具活动◐ Edit: auth.ts │ ✓ Read ×3 │ ✓ Grep ×2看 AI 正在读哪个文件、搜索了几次,卡没卡住一目了然
子代理状态◐ explore [haiku]: Finding auth code (2m 15s)小弟在干啥、跑了多久、用的什么模型
Todo 进度▸ Fix authentication bug (2/5)任务清单完成到第几条,方便和 AI 对进度
Git 信息分支、未提交标记*、超前落后↑2 ↓1减少在错误分支上瞎操作的翻车

默认情况下显示两行:第一行是模型名、项目路径和 Git 分支,第二行是上下文条和用量条。其他行(工具、Agent、Todo)默认关着,要自己在配置里打开——这一点后面细说。

三分钟装好

前提:Claude Code v1.0.80 以上,macOS/Linux 需要 Node.js 18+ 或 Bun(Windows 装 Node.js 18+)。

直接在 Claude Code 会话里敲三条命令:

# 第 1 步:添加插件市场 /plugin marketplace add jarrodwatts/claude-hud # 第 2 步:安装插件 /plugin install claude-hud # 第 3 步:配置状态栏(首次会引导你选预设和选项) /claude-hud:setup

装完输入下一条消息时 HUD 就出现了,不用重启。如果你的 Claude Code 版本比较老没反应,完全退出再claude启动一次就行。

Linux 用户注意一个坑:老版本 Claude Code 在/tmp是独立文件系统的机器上安装会报EXDEV: cross-device link not permitted(跨设备硬链接不允许,属于 Claude Code 的老 bug,新版本已修)。暂时升不了级的话,启动前换个临时目录:

mkdir -p ~/.cache/tmp && TMPDIR=~/.cache/tmp claude

然后在同一个会话里执行第 2、3 步。

装完想改设置,随时运行/claude-hud:configure进引导式配置,或者直接编辑~/.claude/plugins/claude-hud/config.json。

它是怎么拿到这些数据的?

这是我翻了下 README 和源码结构之后觉得最巧妙的地方:它没有自己去估 token,也没有黑魔法。

数据来源有两路:

  1. Claude Code 的原生 statusline API(statusline 就是输入框下方那一行状态文字,Claude Code 允许插件接管它)。这一路拿到的是真实 token 数据,不是估算——很多人自己写的监控脚本靠字符数除以系数去猜 token,误差不小,HUD 直接用的官方数字。
  2. 会话的 transcript JSONL(JSONL 就是一行一条 JSON 的日志文件,相当于会话的"行车记录仪")。工具调用、子代理、Todo 这些信息都是从这里面解析出来的。

整条数据链长这样:

Claude Code → stdin JSON → claude-hud → stdout → 显示在终端 ↘ transcript JSONL(工具、Agent、Todo)

刷新方面,Claude Code 每次交互(新消息、/compact压缩完成、权限模式变化等)之后都会重跑一次状态栏,HUD 在这里做了 300ms 的防抖(意思是不管多密集的更新,最多每 300ms 渲染一次,既跟手又不闪屏)。

还有一个细节:由于 Claude Code 在你没发消息的空档不会刷新状态栏,"会话时长""用量倒计时"这种时间类信息会僵住。想让它持续走,可以在~/.claude/settings.json的 statusLine 里加个刷新间隔:

{ "statusLine": { "type": "command", "command": "...", "refreshInterval": 5 } }

官方建议 5 秒就够,设 1 秒倒计时最丝滑但会更费一点资源。

能调到多细?

三种预设,覆盖大多数人的口味:

预设显示内容
Full全开:工具、Agent、Todo、Git、用量、时长
Essential活动行 + Git,信息量适中(我用的就是这个)
Minimal只留模型名和上下文条

选完预设还能逐项微调。常用的配置项我列几个:

配置项说明
lineLayoutexpanded多行 /compact单行
pathLevels项目路径显示 1~3 层,或full全路径
display.showContextBar是否显示上下文进度条
display.contextValue显示百分比、token 数、剩余量或都要
display.showUsage是否显示订阅用量条(Pro/Max/Team)
display.sevenDayThreshold7 天用量超过这个百分比才显示(默认 80,设 0 常显)
display.showTokenBreakdown上下文超 85% 时显示 token 细分
display.showTools/showAgents/showTodos工具行 / Agent 行 / Todo 行开关(默认关)
gitStatus.showAheadBehind显示和远程的超前落后↑N ↓N
colors.*各种颜色,支持色名、256 色号、十六进制

给一个我参考 README 改的配置示例,中文标签 + 开全活动行:

{ "language": "zh", "lineLayout": "expanded", "pathLevels": 2, "gitStatus": { "enabled": true, "showDirty": true, "showAheadBehind": true, "showFileStats": true }, "display": { "showTools": true, "showAgents": true, "showTodos": true, "showDuration": true } }

顺便说一句,它支持简体和繁体中文标签,/claude-hud:configure里选语言就行,对中文用户挺友好。

适合谁装?不适合谁?

从我的使用体验和社区反馈看,这几类人装了提升明显:

  • 重度 Claude Code 用户:长会话经常干到上下文见底的人,上下文条基本是刚需
  • Pro/Max/Team 订阅用户:想直观看限流余量和 7 天占比,别干到一半被限速
  • 喜欢观察 AI 行为的人:看子代理在干嘛、工具调用了几次,调试和学习都方便
  • 多项目切换的人:路径 + Git 信息常驻,不容易搞错仓库和分支

不太适合的情况也说清楚:

  • API Key 按量付费的用户看不到用量条(人家是按 token 计费,没有"限流"概念)
  • 走AWS Bedrock / Vertex的会只显示提供商标签,用量由云厂商管
  • 用量展示依赖 Claude Code 的订阅账号 OAuth 登录,API Key 登录看不到

和另外两种常见做法对比一下:

对比项Claude HUD什么都不装 / 翻日志自己写脚本监控
可见性常驻输入下方,实时要切屏、敲命令看实现
数据准确性原生 statusline,真实 token无多数靠估算
配置成本预设 + 引导配置无自己维护
上手成本三条命令无要对接 API

几个我踩过或看到别人踩的坑

配置改了没反应?先检查 JSON 语法——无效配置会静默回退到默认值,不报错。pathLevels只能是 1、2、3 或full,lineLayout只能是expanded或compact。实在不行删掉配置文件重新跑/claude-hud:configure。

Git 信息不显示?确认当前目录在 Git 仓库里,且gitStatus.enabled没被设成false。

工具/Agent/Todo 行不出现?这几行默认是关的,要在配置里打开;而且它们只在有对应活动时才显示——没有子代理在跑,Agent 行自然不出现,不是坏了。

用量条不显示?按顺序检查:是不是用订阅账号(而不是 API Key)登录的;display.showUsage是不是被关了;当前会话是否至少有过一次模型响应(Claude Code 在首次响应前可能不带限流数据)。

想临时关掉 HUD?不用删配置,启动时加个环境变量:

CLAUDE_HUD_DISABLE=1 claude

安全性方面我特意看了一眼:整个插件是纯本地的,不联网、不抓凭证、不调未公开接口,只读 statusline 输入、会话 transcript 和 Git 元数据。缓存文件也写在本地插件目录下,权限是私有的。

名词速查表

名词一句话解释
上下文窗口AI 单次会话能"记住"的内容上限,类似手机运存,满了就开始忘
tokenAI 处理文字的最小单位,一个汉字约等于一个 token
statuslineClaude Code 输入框下方的那行状态文字,插件可以接管它
子代理(subagent)主 AI 派出去并行干活的辅助 AI,各用各的上下文
transcript会话的流水账日志,AI 的每一步操作都记在上面
JSONL一行一条 JSON 的日志格式
tmux终端里的分屏工具,有些人拿它来盯多个窗口
限流(rate limit)订阅套餐的用量上限,类似手机流量,超了就降速
防抖(debounce)把密集的更新合并,固定间隔才执行一次

项目地址

  • GitHub:jarrodwatts/claude-hud(MIT 协议,README 很完整,有中文文档)
  • 问题反馈:GitHub Issues

如果你也天天用 Claude Code,又被"上下文还剩多少"这个问题折磨过,可以装上试试。装完要是觉得没用,卸载也就一条命令的事。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进