Skip to content

khscience/claude-usage-widget

Repository files navigation

Claude 用量悬浮窗小工具

English · 中文

Windows 桌面常驻置顶悬浮窗,用进度条实时显示 Claude Code 的 5 小时7 天滚动窗口用量占比,每隔 N 秒自动刷新。限额自动校准、半透明可调、可拖动、不占任务栏。

● Claude              23:45 更新
5h   ▓▓▓▓▓░░░   50%
     剩 4h13m
7d   ▓░░░░░░░   12%
     8h13m后重置

快速开始(推荐,无需 Python)

1. 下载 exe

Releases 页面 下载 ClaudeUsageWidget.exe(单文件,约 36 MB,双击即用)。

2. 安装数据来源(必需)

exe 不含数据源,运行前请先装好 Node.jsccusage

# 1) 装 Node.js:https://nodejs.org (任意 LTS 版本)
# 2) 装 ccusage:
npm install -g ccusage

没装的话,悬浮窗会显示 ⚠ 采集失败。

3. 运行

双击 ClaudeUsageWidget.exe,桌面右下角即出现悬浮窗。

  • 左键拖动:移动窗口,位置自动记忆
  • 右键:菜单(立即刷新 / 设置 / 窗口置顶 / 开机自启 / 退出)
  • 双击:打开设置
  • 想开机自动启动:右键勾选「开机自启」

界面说明

  • 进度条 = ccusage 算的已用费用 ÷ 限额;颜色随占比变(蓝 <70% / 黄 <90% / 红 ≥90%)
  • 鼠标悬停看 tooltip(完整费用、限额来源 [auto]/[手动]、重置时刻)
  • 5h 显示当前活跃块,空闲时显示「空闲」
  • 周窗口与官方 /usage 同口径:从你指定的每周固定时刻重置(默认周三 19:00)

限额校准(自动 vs 手动)

工具有两种模式,默认自动

自动模式(推荐)

基于你的历史用量反推真实限额,无需手填:

  • 5h 限额 = 扫历史 5h 块,找「提前停手 + 等到 5h 窗口重置才再开」的撞限痕迹 → 这些块的 cost 中位数
  • 周限额 = 按你的周重置时刻把每日数据切成完整周 → P95 of 完整周累计 cost
  • 撞限信号不足(< 2 次)或周数据不够(< 5 周)时,自动回退到手动默认值

手动模式

打开 Claude Code 输入 /usage 看官方百分比,用「当前费用 ÷ 官方百分比」算出真实限额,填进设置:

  • 5h:当前 5h 费用 ÷ 5h 官方百分比
  • 周:当前周累计费用 ÷ 周官方百分比

设置

字段 说明
刷新间隔 5–3600 秒,默认 10
不透明度 40%–100% 滑块,实时预览
订阅档位 Pro / Max5 / Max20 / Custom,切换时自动填手动限额预设
限额模式 自动校准(推荐)/ 手动
5h 费用限额 手动模式分母(USD);自动模式作历史不足兜底
周费用限额 同上
按 /usage 校准 输入官方百分比一键反推真实限额(见下)
周窗口重置 与你 /usage 显示的 "Resets …" 对齐(默认周三 19:00)
ccusage 命令 默认 npx -y ccusage;装了全局版可填 ccusage
开机自动启动 HKCU\...\Run,无需管理员权限

一键校准(推荐用一次)

  1. 打开 Claude Code 输入 /usage 看官方 5h % 和 周 %
  2. 在设置里填到「按 /usage 校准」两个输入框
  3. 点「应用」—— 工具按当前实测 cost 反推真实限额,写入手动限额并切到 Custom + 关闭自动校准

之后进度条占比就和官方对齐了。订阅档位变了或感觉飘了,再校准一次即可。

为什么用费用而不是 token? ccusage 的 totalTokens 把 cache read 按全额算(实测 cache 占 97%),而官方限流给 cache read 权重低得多,导致 token 算的占比会严重失真和漂移。费用天然按真实定价加权(cache read 打 0.1 折),更稳。

配置文件路径:%APPDATA%\ClaudeUsageWidget\config.json


从源码运行(开发者)

git clone https://github.com/khscience/claude-usage-widget.git
cd claude-usage-widget
pip install -r requirements.txt
python main.py

重新打包 exe

pip install pyinstaller pillow   # 首次
build.bat                        # 或手动执行下面这行
python -m PyInstaller --noconfirm --onefile --noconsole --name ClaudeUsageWidget --icon app.ico --add-data "app.ico;." main.py

工作原理

Claude Code 官方没有 /usage 数据的程序化接口,桌面端也不渲染 statusLine(已实测)、本地缓存里也不存限流百分比。所以本工具通过社区维护的 ccusage CLI 读取本地会话文件(~/.claude/projects/**/*.jsonl)来统计 token 用量。

[QTimer 每 N 秒] → [QThread 跑 npx ccusage --json]
                     ├→ 解析活跃 5h 块 + 历史块
                     ├→ 自适应算法推真实限额 (auto_limit.py)
                     └→ 更新进度条 + tooltip

常见问题

Q:悬浮窗显示 ⚠ / 采集失败? A:ccusage 调用失败。鼠标悬停看具体错误。常见原因:未装 Node.js / 未装 ccusage / 路径不对。Windows 上 npx 实为 npx.cmd,本工具已自动解析 .cmd/.bat 后缀。

Q:5h 显示「空闲」? A:当前 5 小时窗口内没有任何 Claude Code 活动。一旦你用 Claude Code 发消息,下次刷新就会显示占比和重置时间。

Q:窗口找不到了 / 拖出屏幕了? A:编辑 %APPDATA%\ClaudeUsageWidget\config.json,把 pos_xpos_y 都改成 -1,重启后会自动回到右下角。

Q:自动模式的限额准吗? A:取决于历史数据。撞限信号 ≥ 2 次时很准;不够则退到 P95 兜底;都不行就用手动默认。tooltip 里会写明限额来源,你可以判断。

Q:进度条占比和 Claude Code 里 /usage 不一致? A:本工具是本地估算,与官方口径有差。自动模式靠你历史撞限行为推断;手动模式靠你自己校准。两者都不会和官方完全一致,但能反映趋势。

License

MIT

About

Windows 桌面悬浮窗,实时显示 Claude Code 5h/7天用量进度条(基于 ccusage)

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors