我完全不知道我的 Claude 代码上下文窗口有多满,于是我构建了一个工具。
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,无需注册。