本帖最后由 Yuanz08 于 2026-9-24 14:12 编辑
tags:
- Cursor
- Electron
- Windows
- 工具
categories:
- 开发笔记
description:
- 基于 stop hook 与 Dashboard 只读 API,在对话正常结束时展示本周期 Auto/API 与本次 token;Windows 安装版无需 Node。
效果展示
开源地址
Release 安装包可在上述仓库的 Releases 下载(建议不要从 Git 历史里拉整包 exe)。
为什么做
Cursor Agent / Ask 正常结束后,很难在系统通知里稳定看到 本周期 Auto/API 占用 和 本次对话 token。Windows 在前台时 Toast 也常被压掉。
Cursor Usage 在 stop hook、status: completed 时读本机登录态,调账单只读接口,在屏幕右下角弹出置顶小窗(不依赖 Toast)。
弹窗内容
- Auto x% API y%;仅当团队池或个人 已用 > 上限 时显示 超出 $…(不是把团队池总花费直接当超出)。
- 套餐内 in / out / cache(本次对话、水位之后新入账的事件)。
- 合计 x.xx万(in + out + cache,万为单位,两位小数)。
账单比 hook 晚几秒时,最多轮询约 45 秒(间隔 3 秒);仍无 API 事件则用 hook 传入的 token 作兜底文案。
托盘右键 「立即查用量」 可马上查一次周期用量并弹窗(不轮询、不更新水位),不跑 Agent 也能自检。
架构(简要)
Agent 结束 → stop hook (hook.ps1 / hook.js)
→ inbox/*.json
→ 托盘轮询 → usage.js
→ GetCurrentPeriodUsage + GetFilteredUsageEvents
→ 弹窗 → 更新 state.json 水位
| 组件 |
说明 |
| Cursor Usage.exe |
托盘、弹窗、写 ~/.cursor/hooks.json |
| hook.ps1(安装版) |
PowerShell 读 stdin,写 inbox,必要时拉起托盘 |
| hook.js(开发) |
需 Node,逻辑同安装版 |
| 数据目录 |
%LOCALAPPDATA%\cursor-usage\(inbox、state.json、hook.log) |
Token:%APPDATA%\Cursor\User\globalStorage\state.vscdb → cursorAuth/accessToken(与 Cursor 安装目录无关,默认用户数据路径一致)。
安装版为何必须用 hook.ps1
Cursor 把 JSON 打在 hook 的 stdin 上。GUI 的 Cursor Usage.exe --hook 在 Windows 上往往读不到 stdin(hook.log 里 bytes=0),因此 NSIS 安装版应使用:
powershell … -File "<安装目录>\resources\hook.ps1"
首次启动托盘会自动写入 ~/.cursor/hooks.json(timeout: 60)。改 hook 或升级后请重启 Cursor。
使用步骤
- 安装 Cursor Usage Setup 或运行便携
Cursor Usage.exe,确认托盘图标常驻。
- 重启 Cursor。
- 正常结束一轮 Agent / Ask,右下角应弹出用量窗口。
维护者本地打包:
cd electron
npm install
npm run dist
产物在 release\(便携目录 + NSIS)。打包前退出所有 Cursor Usage.exe,避免 app.asar 被占用。
卸载
优先 设置 → 应用 → Cursor Usage → 卸载(NSIS 卸载前会结束进程)。不要用 Geek Uninstaller 强卸(易出现 Geek 自身崩溃 dump、目录删乱)。若需清理残留,仓库内提供 electron/scripts/uninstall-cursor-usage.ps1(可选 -RemoveHooks、-RemoveAppData)。
排查
| 现象 |
建议 |
| 完全不弹窗 |
托盘是否在跑;hook.log 是否 enqueued(非 bytes=0) |
bytes=0 |
hooks 是否误用 exe --hook;改回 hook.ps1 |
| 只有 Auto/API、尚未入账 |
账单延迟或水位;试「立即查用量」 |
| 请重新登录 |
token 缺失或过期,在 Cursor 中重新登录 |
日志:%LOCALAPPDATA%\cursor-usage\hook.log。
小结
stop hook + 本地托盘 + Dashboard 只读 API,在 Windows 上稳定展示 周期占用 与 本次用量;安装版关键是 hook 必须能读 stdin(PowerShell),且 安装后无需 Node。
免责声明:非 Cursor 官方工具;请勿在日志或分享包中泄露 token。API 与 hook 行为随 Cursor 版本可能变化,以实际为准。
|