跳到正文
claudemods

Context Bar:看清 Claude Code 上下文窗口占用

在 Claude Code 输入框上方用一条堆叠横条显示上下文窗口,每个类别一种颜色,并附带 token 数。

权限

  • 修改界面在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
  • 添加命令/工具注册新的斜杠命令或工具,供你或 Claude 调用($.command.register / $.tool.register)。
  • 存储数据在插件的私有存储中跨会话保存数据($.store.*)。
实测版本
v2.1.291
最近实测
需要
Claude Code ≥ 2.1.287
显示位置
输入框上方

在 Claude Code 中安装:

/plugin install context-bar --marketplace hamzafer/claude-code-mods
全部安装方式 ↓

这个插件能做什么?

Context Bar 是一款显示 Claude Code 上下文窗口占用的社区插件,作者是 Hamza Zafar(hamzafer),属于他的 claude-code-mods 合集。它只回答一个问题:到底是什么占满了我的上下文窗口?它会在 Claude Code 输入框上方绘制一个带边框的小横条,里面是一条与终端同宽的堆叠条。这条堆叠条按照 /context 使用的相同类别来划分,例如系统提示词、工具、MCP 工具、记忆文件、技能和消息,后面接着空闲空间和自动压缩缓冲区。

标题行的形式类似 48k of 200k · compacts at 167k,并带有一个彩色百分比徽标。徽标默认为绿色,达到压缩点的 70% 时变黄,达到 90% 时变红(关闭自动压缩时则以整个窗口为基准)。在堆叠条下方,图例列出每个类别的 token 数和它占窗口的比例,按终端宽度需要排成若干行。按需加载的工具 schema 不计入其中,就像 /context 在它的网格中也把它们排除在外一样。

Context Bar 和我们自己的 上下文仪表 很接近,但两者展示的内容不同。上下文仪表 是状态栏中的一行文字,包含整体上下文百分比、5 小时与 7 天套餐窗口、会话花费,以及在 80% 时的一次性提醒。Context Bar 不显示套餐用量和花费,而是把上下文按类别拆开,让你看出占空间的是 MCP 工具、记忆文件,还是对话本身。作者的 README 要求 Claude Code 2.1.287 或更高版本。

演示

录屏中,我们在小型演示项目里启动加载了该插件的 Claude Code,并让 Claude 读取 README.md,用一句话描述这个项目。这一轮完成后,输入框上方的横条显示出按类别拆分的上下文窗口(系统提示词、系统工具、技能、消息、空闲空间)、类似 54k of 200k 的总量、自动压缩触发的位置,以及已使用的百分比。

安装

使用安装区块中的任意一种方式;它们都直接从作者自己的插件市场安装。横条会在下一次会话开始时出现,/context-bar 可以隐藏或显示它。

$ install context-bar

需要 Claude Code ≥ 2.1.287

从作者自己的 marketplace 安装: hamzafer/claude-code-mods

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

    /plugin install context-bar --marketplace hamzafer/claude-code-mods

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

  2. 2.从终端安装

    claude plugin marketplace add hamzafer/claude-code-mods
    claude plugin install context-bar@claude-code-mods

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

  3. 3.免安装试用

    git clone https://github.com/hamzafer/claude-code-mods
    claude --plugin-dir ./claude-code-mods/mods/context-bar

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

工作原理

插件把最新读数保存在由宿主持有的 $.state 原子中,因此热重载后依然保留,并在 AbovePrompt 渲染位置上重新绘制。以下是刷新函数,来自 hooks/register.tsx:

// Asks the engine for /context's breakdown, estimated locally (no token-count calls).
async function refresh($: EngineInterface) {
  if (await read($, isHidden)) return
  const usage = await $.session.usage({ breakdown: 'summary' })
  const b = usage.context.breakdown
  if (!b || !(b.rawMaxTokens > 0)) return // no window to measure against
  await update($, reading, () => toReading(b))
}

refresh 会在 session.start 时运行,在没有 agentId 的 turn.complete 时运行(子代理的轮次会被跳过),也会在 session.compact 时运行,因为 /compact 会在没有轮次结束的情况下清空窗口。toReading 会去掉延迟加载的类别和空类别,把已使用的行排在空闲空间和缓冲区之前,并分配颜色。纯函数 cells 和 legend 把读数转换成横条片段和图例行:每个已使用的类别至少占一个格子,四舍五入剩下的部分优先分给空闲空间。内部宽度不足 20 列时不绘制横条。当问卷占用了输入框上方的空间时,横条会暂时让位。

自定义

/config 中没有任何选项。唯一的开关是 /context-bar 命令,它的隐藏/显示状态通过 $.store 保存。若要改变外观,请编辑 register.tsx 顶部的常量:PALETTE 控制类别颜色,MESSAGES 控制消息的颜色,GLYPH 控制横条字符,MIN_WIDTH 控制仍会绘制的最小宽度。

权限与安全

在运行之前,我们读过了插件可以执行的每一个文件:hooks/hooks.json、hooks/register.tsx、类型声明以及测试。没有 package.json、安装脚本或打包后的代码。

修改界面对应的是输入框上方的横条。添加命令对应的是 /context-bar。插件通过 $.session.usage 读取上下文数据,用 $.store 保存一个真/假值,并把读数保存在 $.state 中。它不运行 shell 命令、不读写文件、不使用网络、不读取环境变量,也不调用模型。claude plugin validate 没有报告任何错误或警告,作者的 6 个测试在 Claude Code 2.1.291 上全部通过。

修改界面
在 Claude Code 界面中绘制内容:横条、面板、状态文字、弹出通知(ui.render / $.ui.*)。
添加命令/工具
注册新的斜杠命令或工具,供你或 Claude 调用($.command.register / $.tool.register)。
存储数据
在插件的私有存储中跨会话保存数据($.store.*)。

兼容性与故障排除

已在 macOS 上使用 Claude Code 2.1.291 检查(validate 和测试)。如果横条没有出现:

  • claude --version 为 2.1.287 或更高版本。
  • 你之前没有把它隐藏:运行一次 /context-bar,看是否出现 "Context bar on"。
  • 终端足够宽:横条至少需要 24 列。
  • 输入框上方正打开着问卷;问卷关闭后横条会回来。
  • 只有在 Claude Code 知道窗口大小之后才能拿到明细。如果刚开始时横条没有出现,先发送一条提示。

常见问题

Context Bar 会消耗 token 或调用 API 吗?
不会。它向 Claude Code 请求与 /context 相同的汇总明细,代码注释说明这些数字是在本地估算的,不会调用 token 计数接口。插件自身不发出任何网络请求。
怎样隐藏这条横条?
运行 /context-bar。它会在关闭和开启之间切换,选择保存在插件自己的存储中,所以新会话会沿用你上次的状态。
横条什么时候刷新?
在会话开始时、主代理的每一轮对话结束后,以及一次压缩之后。子代理的轮次会被跳过,因为它们填充的是自己的窗口,而不是你的。
它和 上下文仪表(cm-context-meter)有什么区别?
上下文仪表 在状态栏写一行简短文字,包含上下文百分比、5 小时与 7 天套餐用量、会话花费,以及 80% 时的提醒通知。Context Bar 在输入框上方绘制一个带边框的横条,把上下文按类别拆开,不显示套餐用量和花费,也不弹出提醒。
颜色和符号分别代表什么?
每个已使用的类别(系统提示词、工具、MCP 工具、记忆文件、技能等)都从固定调色板中分到一种颜色,消息用橙色绘制。空闲空间是一条细灰线,自动压缩缓冲区则用斜线阴影表示。
上下文仪表 在 Claude Code 中运行精选

上下文仪表

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

  • 状态栏
  • 弹出通知
  • 修改界面

已在 v2.1.310 实测

工具调用计数器 在 Claude Code 中运行精选

工具调用计数器

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

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

已在 v2.1.310 实测

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