跳到正文
claudemods

上下文仪表:Claude Code 上下文用量状态栏

在状态栏显示上下文窗口占用、5 小时与 7 天套餐用量和会话花费,并在接近上限时发出提醒。

权限

  • 修改界面在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
实测版本
v2.1.291
最近实测
需要
Claude Code ≥ 2.1.287
显示位置
状态栏、弹出通知

在 Claude Code 中安装:

/plugin install cm-context-meter --marketplace rotbit/claudemods-marketplace
全部安装方式 ↓

这个插件能做什么?

上下文仪表(Context Meter)是一款 Claude Code 上下文用量状态栏插件。它会在状态栏写入一行紧凑的信息:ctx 42% · 5h 23% · 7d 61.5% · $1.20。依次表示上下文窗口已经用了多少、你的 5 小时和 7 天套餐窗口已用多少(仅限订阅账户),以及本次会话到目前为止的花费。当上下文达到 80% 时,会弹出一次提示通知,让你可以在 Claude 开始遗忘早先的细节之前执行 /compact 或 /clear。

它的意义在于让你不再靠猜。你不必再运行 /cost 或 /context 来判断一个长任务能否放得下,而且提醒来得足够早,让你可以按自己的节奏去压缩上下文。需要 Claude Code 2.1.287 或更高版本。

演示

录屏中,我们在加载了该插件的情况下启动一个会话。在第一次回答之前,状态栏显示 ctx –;这一轮完成后,上下文百分比、套餐窗口和花费便会依次填上。

安装

从安装区块中任选一种方式。无需任何配置;默认设置会显示账户所提供的全部数据。

$ install cm-context-meter

需要 Claude Code ≥ 2.1.287

  1. 1.在 Claude Code 中一行安装

    /plugin install cm-context-meter --marketplace rotbit/claudemods-marketplace

    粘贴到正在运行的会话中(v2.1.275+)。Claude Code 会先询问是否添加该插件市场。

  2. 2.从终端安装

    claude plugin marketplace add rotbit/claudemods-marketplace
    claude plugin install cm-context-meter@claudemods

    然后在所有已打开的会话中运行 /reload-plugins。

  3. 3.免安装试用

    git clone https://github.com/rotbit/claudemods-marketplace
    claude --plugin-dir ./claudemods-marketplace/cm-context-meter

    仅在当前会话中加载该插件,不会写入你的设置。

工作原理

整个插件只有三个钩子和一个刷新函数。以下摘自 hooks/register.ts:

async function refresh($: EngineInterface, meter: Meter): Promise<void> {
  // No `breakdown`: the status-line figures alone, which cost no request.
  const usage = await $.session.usage()
  $.ui.status(formatMeter(usage, meter))
  const percent = contextPercent(usage)
  const step = warnStep(percent, meter.warnAtPercent, meter.warned)
  meter.warned = step.warned
  if (step.toast) {
    $.ui.toast(`Context is ${percent}% full. Consider /compact or /clear soon.`)
  }
}

$.session.usage() 返回上下文 token 数与窗口大小、套餐速率限制以及花费。在不带 breakdown 调用时,它读取的是 Claude Code 手头已有的数字,所以仪表想多频繁运行都不会产生额外开销。hooks/format.ts 中的 formatMeter 负责拼出文本,引擎没有的数据会直接省略,而不是显示为零。warnStep 会记住是否已经提醒过,因此每次越过阈值只会弹出一次提示;当一次压缩把上下文降回阈值以下后,它可以再次提醒。

refresh 会在三处被调用:session.start(同时启动一个 $.clock.every 定时器)、仅针对主循环对话的 turn.complete,以及 session.compact。由于 session.compact 可以取消一次压缩,它的钩子会先等待 next(e) 完成,并带有一个 .catch,把 next 最终得到的结果原样交回。仪表永远不会阻止压缩。

自定义

在 /config 中设置这些选项。format: verbose 会把这一行完整写出来,例如 Context 42% (84k/200k) · 5-hour 23% · 7-day 61.5% · Cost $1.20。各项标签保存在 hooks/format.ts 的 LIMIT_LABELS 表中,如果想重命名 5h 或 7d,就改那里。提醒文字则是 refresh 内部的模板字符串。

设置项类型默认值作用
showCostbooleantrueShow cost. Show the session's cost in US dollars, as /cost totals it.
showRateLimitsbooleantrueShow plan usage. Show the 5-hour and 7-day plan usage windows (subscriptions only).
warnAtPercentnumber80Warn at context %. Show a toast once when the context window reaches this percentage; 0 turns the warning off.
formatstring (compact | verbose)"compact"Format. compact: ctx 42% · 5h 23% · $1.20. verbose: Context 42% (84k/200k) · 5-hour 23% · Cost $1.20.
intervalMsnumber60000Refresh interval (ms). How often to refresh between turns, in milliseconds (at least 5000).

在 Claude Code 中通过 /config 修改这些设置,插件会热重载。

权限与安全

它唯一的权限标记是修改界面:插件会写入状态栏并显示提示通知。它不运行命令、不读写文件、不使用网络、不读取你的提示词,也不调用模型。这使它成为你能安装的最安全的插件之一,也非常适合作为你的第一个插件。

要关闭它,运行 /plugin disable cm-context-meter。要启动一个关闭所有插件的会话,使用 claude --safe-mode。

修改界面
在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。

兼容性与故障排除

已在 macOS 终端中使用 Claude Code 2.1.291 测试。如果仪表没有出现:

  • 检查 claude --version;插件需要 2.1.287 或更高版本。
  • 确认该插件已在 /plugin 的 Installed 标签页中启用。
  • 通过 shell 安装后,在已经打开的会话中运行 /reload-plugins。
  • 其他插件或自定义的状态栏命令可能会共用这一行。暂时停用其他状态栏插件,看看文本是否被挤掉了。
  • 使用 API 密钥时没有套餐数据,这是预期行为。

花费数字与 /cost 汇总的会话估算值相同,并不是账单。

常见问题

上下文仪表会消耗 token 或套餐额度吗?
不会。它调用不带 breakdown 的 $.session.usage(),返回的是 Claude Code 已经在统计的数字,不会发出任何请求。
为什么我看不到 5h 和 7d 数据?
套餐用量窗口只存在于订阅账户中。使用 API 密钥时没有这些数据,仪表会直接省略它们,而不是显示 0%。
为什么一开始状态栏显示 ctx –?
在 Claude 回答第一次之前还没有上下文数据。第一轮对话完成后,这个短横线就会被替换。
可以关闭 80% 提醒吗?
在 /config 中把 warnAtPercent 设为 0。设为 1 到 100 之间的其他值则会调整提醒阈值。
它多久刷新一次?
每轮主循环对话结束后、每次压缩之后都会刷新,期间每 60 秒刷新一次。可以用 intervalMs 修改定时器,最短 5 秒。
工具调用计数器 在 Claude Code 中运行

工具调用计数器

统计 Claude 每轮和每个会话的工具调用次数,在加载指示器旁显示计数,并新增 /tally 查看明细。

  • 加载动画
  • 对话记录
  • 状态栏
  • 拦截工具调用
  • 修改界面
  • 添加命令/工具

已在 v2.1.291 实测

提示框上方的 Git 分支 在 Claude Code 中运行

提示框上方的 Git 分支

在 Claude Code 输入框上方用一行横条显示当前 git 分支、已修改文件数和领先/落后状态。

  • 输入框上方
  • 执行命令
  • 拦截工具调用
  • 修改界面

已在 v2.1.291 实测

完成提示 在 Claude Code 中运行

完成提示

Claude 较长的一轮结束时弹出「Done in 2m 14s」提示并播放短促提示音,还可选发送桌面通知。

  • 弹出通知
  • 执行命令
  • 修改界面
  • 播放声音

已在 v2.1.291 实测

更多 上下文、额度与费用、状态栏与提示栏。