我完全不知道我的 Claude 代码上下文窗口有多满,于是我构建了一个工具。

发布: (2026年3月8日 GMT+8 09:16)
4 分钟阅读
原文: Dev.to

Source: Dev.to

概览

你是否有过 Claude 开始给出奇怪、被截断的答案的感觉?或者在一次长会话中它似乎“忘记”了之前的上下文?
那是因为你的上下文窗口已满。

Claude Sonnet 的上下文窗口为 200 k token。当它满了,较早的消息会被丢弃。你精心设置的上下文——加载的文件、设定的约束、解释的代码库——会悄然消失。

我已经在一个自动循环中运行 Claude Code 超过 60 天。上周我意识到自己根本不知道上下文窗口在任何时刻的使用情况,于是我构建了 cc-context-check

功能说明

npx cc-context-check

示例输出

cc-context-check — Context window usage across sessions

Context limit: 200.0k tokens (Claude Sonnet/Opus)

🟢 ~/projects/my-app    [a3f9c12] just now · 12.4 MB
   ████████████░░░░░░░░░░░░░░░░░░ 40.1% used
   80.2k input · 1.2k output · 119.8k remaining

🟡 ~/                   [b7d44e1] 2h ago · 5.9 MB
   █████████████████████░░░░░░░░░ 71.5% used
   143.0k input · 89 output · 57.0k remaining
   △ Warning: Context is getting full — consider /compact

颜色编码

  • 🟢 低于 70 % → 继续使用
  • 🟡 70‑85 % → 考虑压缩
  • 🔴 85 %+ → 立即压缩

工作原理

Claude Code 将会话记录保存为 ~/.claude/projects/ 目录下的 .jsonl 文件。每一行对应一条消息。每条助手消息都包含一个 usage 对象,例如:

{
  "usage": {
    "input_tokens": 1,
    "cache_read_input_tokens": 79927,
    "cache_creation_input_tokens": 917,
    "output_tokens": 158
  }
}

真实的上下文使用量 为:

input_tokens + cache_read_input_tokens + cache_creation_input_tokens

input_tokens: 1 这个条目具有误导性——实际的上下文都在缓存 token 中。

cc-context-check 读取每个会话文件的最后 64 KB,找到最新的使用数据,并计算出真实的占用百分比。

何时使用 /compact

该工具会列出所有项目中的活跃 Claude Code 会话,让你一眼看到:

  • ≈ 40 % – 正常,可继续。
  • ≈ 71 % – 接近满。若要开始新任务,使用 /compact 会有帮助。
  • ≈ 87 % – 需要尽快压缩。上下文正在丢失。

参数选项

npx cc-context-check --all    # 显示前 20 个会话,而非默认的 5 个
npx cc-context-check --json   # 输出 JSON,便于脚本使用

属于 cc‑toolkit

这是 cc-toolkit 中的第 43 个工具 — 为 Claude Code 用户提供的 43 个免费工具。零依赖,可在浏览器或通过 npx 运行。

来源:github.com/yurukusa/cc-context-check

更多工具: Dev Toolkit — 为开发者提供的 56 个免费基于浏览器的工具(JSON、正则、颜色、CSS、SQL 等)。全部为单文件 HTML,无需注册。

0 浏览
Back to Blog

相关文章

阅读更多 »