New
Apps 905Makers 904This week 905
Promote your app−30%
0views in
the last 30 days

Quota Panel

Tauri + Rust desktop widget that shows your Factory, Devin and Cursor quota at a glance.

Built with Factory Droids

by jules-0409 · from CNChina · added Oct 29, 2026
no ratings0 comments

中文 | English

macOS / Windows 桌面上的常驻额度监控小组件。屏幕顶部一个「灵动岛」样式的胶囊, 点开是一张卡片,同时显示 Factory (Droid)、Devin、Cursor(含 Grok Bot) 三个数据源的实时额度。

Quota Panel 展开后的卡片

截图里的账号、组织、额度都是假数据,由 scripts/make-ui-preview.cjs 生成, 不涉及任何真实凭据。

Rust + Tauri v2 实现,界面是一个零依赖的单文件 HTML,没有 Electron。


它显示什么

数据源 卡片内容 凭据从哪来
Factory (Droid) 5 小时 / 7 天 / 30 天三个用量窗口、Core 免费模型池、按量余额 本机 droid CLI 已登录的凭据
Devin 今日已用 / 本周已用百分比、各自的重置时间 本机 Devin Desktop / CLI 已登录的凭据
Cursor Auto / API / Grok Bot 三个额度池、综合用量、账期重置时间 本机 Cursor 桌面端已登录的凭据

关于 Grok Bot:它是 Cursor 的产品,周额度由 Cursor 的服务端接口(GetSandUsageStatus) 提供,吃的也是 Cursor 的登录态,所以它的额度合并显示在 Cursor 卡片里,而不是单独一张卡。

关于 Devin 一栏:每轮刷新都直接调 Cognition 的 seat-management 接口 (server.codeium.com 上的 protobuf over Connect-RPC),没有本地缓存兜底—— 调用失败就如实显示错误,不会拿旧数字冒充。自动每 5 分钟一轮(可在 ⚙ 里改),↻ / 托盘菜单可立即刷新; 前提是这台机器上登录着 Devin Desktop 或 CLI(只读取其登录态)。该接口为逆向所得、非官方, 厂商随时可能改动,所以这一栏的定位是能用但尚不成熟。详见 English 的 "Devin: how the data gets here" 一节。

顶部胶囊上只显示所有数据源里最紧的那个百分比,颜色按阈值变化 (默认 70% 转黄、90% 转红,数值在面板的 ⚙ 设置里改)。

前置条件(先看这里)

本应用不保存任何账号密码,也没有登录界面。它只读取你本机已经登录好的客户端凭据 (全部以只读方式打开)。所以:

  • 想看哪一栏,就先在这台机器上登录对应的客户端:Cursor 桌面端、Devin Desktop 或 CLI、droid CLI。
  • 没登录的数据源会在卡片上显示「读取失败」,不影响其它数据源—— 三个源是并发独立拉取的,一个挂了不会拖垮另外两个。
  • Cursor 一栏里如果只有 Grok 有数、Auto/API 显示「无数据」(或反过来), 说明是其中某一个接口单独失败,页脚会写明原因。

具体读取的位置(全部只读,括号内为对应数据源):

  • ~/.factory/auth.v2.loginkeychain 或 auth.v2.keyring,加上钥匙串 / Windows 凭据管理器里的 auth-encryption-key(Factory)——文件是 AES-256-GCM 密文,在内存中解密,密钥不落盘
  • ~/.config/devin/credentials.toml、~/.codeium/windsurf/credentials.toml, 或 Devin Desktop 的 state.vscdb(Devin)
  • Cursor 桌面端的 state.vscdb 与 ~/.cursor/cli-config.json(Cursor 与 Grok Bot)

构建与运行

前置:

  • Rust stable
  • macOS:Xcode Command Line Tools(xcode-select --install)
  • Windows:MSVC 构建工具 + Windows SDK;WebView2 运行时(Windows 10/11 一般已自带)
cd quota-panel-tauri/src-tauri

cargo run                        # 开发模式
cargo build --release            # 发布构建,产物在 target/release/
cargo build --release --bin quota  # 只编命令行版本

macOS 上直接运行 target/release/quota-panel-tauri 即可; 想要 .app / .dmg / .msi 安装包用 cargo tauri build(需先装 tauri-cli)。

命令行版本

除了桌面组件,同一个 crate 里还有一个 quota 命令行程序,和界面共用同一套取数逻辑, 适合脚本、周报、SSH 里快速看一眼。它必须单独编译:Windows 上的主程序是 GUI 子系统、 本身没有控制台,直接拿主程序跑是打印不出东西的。

cargo build --release --bin quota    # 产物 target/release/quota(.exe)

./quota                  # 三个数据源
./quota factory          # 只看 Factory
./quota devin            # 只看 Devin
./quota cursor           # 只看 Cursor(含 Grok Bot)
./quota --json           # 机器可读输出
./quota watch            # 每 60 秒刷新(Ctrl+C 退出)

环境变量:QUOTA_LANG=en|zh 指定输出语言(默认跟随系统),NO_COLOR=1 关闭颜色。 退出码:全部数据源都取不到数时为 1,参数写错为 2,正常为 0。

怎么用

  • 启动后屏幕顶部出现一个胶囊,上面是各源里最紧的百分比和一个状态点。
  • 点胶囊展开成卡片;点卡片右上的 ✕ 收回胶囊。
  • ↻ 按钮:立即手动刷新一次。
  • ⚙ 按钮:打开设置,改刷新间隔和两个颜色阈值(见下面的「配置」)。
  • 托盘图标(菜单栏):左键点按会显示并聚焦窗口;右键菜单里有「立即刷新额度」和「退出 Quota Panel」。
  • 数据默认每 5 分钟自动刷新一次,卡片底部会显示上次更新时间。
  • 界面语言跟随系统:系统语言是中文时,界面、托盘菜单和所有错误提示都显示中文, 其余情况显示英文。应用内没有语言切换开关。
  • 开机自启:把 /Applications/quota-panel.app 加进「系统设置 → 通用 → 登录项」。 它是菜单栏程序,不会占 Dock 图标。

配置

设置面板里三个数字,点一下立刻生效并写盘(没有「保存」按钮):

项 默认 范围 作用
自动刷新间隔 5 分钟 1–60 后台每隔多久取一次数
警告阈值 70% 1–99 达到就转黄
危险阈值 90% 2–100 达到就转红,必须严格高于警告阈值

配置文件放在系统的应用配置目录下:

  • macOS:~/Library/Application Support/com.quotapanel.desktop/config.json
  • Windows:%APPDATA%\com.quotapanel.desktop\config.json
  • Linux:~/.config/com.quotapanel.desktop/config.json

里面只有这三个数字,没有也不会有任何凭据(凭据全程只在内存里用完即弃)。 删掉它就回到默认值;手改也认,越界值(比如 0 分钟、危险阈值不高于警告阈值)会在读取时被夹回合法区间。

命令行版本(quota)不吃这份配置:它每次都用默认阈值上色。

已知限制

  • 接口都是未公开的内部接口,厂商随时可能改动导致某一栏失效;失效时会显示具体错误而不是假数据。
  • macOS 构建启用了 macOSPrivateApi(无边框透明窗口所需),因此无法提交 Mac App Store。

风险与免责声明

请在使用和二次分发前读完这一段。

  • 本工具调用的是 Cursor / Devin / Factory 未公开的内部接口,并读取它们存放在本机的登录态。 这些行为可能违反相应厂商的服务条款,风险(包括账号被限制的可能)由使用者自行承担。
  • 所有出站请求的 User-Agent 均如实报告为 quota-panel/<版本>,不伪装成任何厂商的客户端。
  • 本应用只读本地凭据,不写入、不上传、不另行存储任何 token; 网络请求只发往对应厂商的官方域名(cursor.com、api2.cursor.sh、server.codeium.com、Factory 的 API)。 对 Cursor / Devin 的本地数据库一律以 SQLite 只读模式打开。
  • Grok Bot 的百分比由 Cursor 服务端按美元额度折算,分母未公开,数值仅供趋势参考, 不要拿它做精确的余量判断。
  • 本项目与 Anysphere (Cursor)、xAI、Cognition (Devin)、Factory 无任何关联。 Cursor、Grok Bot、Devin、Factory / Droid 均为各自所有者的商标。

开发

quota-panel-tauri/
├── src-tauri/
│   ├── src/
│   │   ├── lib.rs           # 应用入口、托盘、后台轮询、三路并发的调度
│   │   ├── cursor/          # Cursor usage-summary + Grok Bot 的 GetSandUsageStatus
│   │   ├── devin.rs         # Devin(protobuf over Connect-RPC)
│   │   ├── factory.rs       # Factory / Droid
│   │   ├── credentials/     # 各客户端本地凭据的只读取用(含 AES-GCM 解密)
│   │   ├── http.rs          # 共享 client 的 UA 与有限次重试
│   │   ├── commands.rs      # Tauri IPC 命令
│   │   ├── models.rs        # 前后端共用的数据结构
│   │   └── bin/quota.rs     # 命令行版本,与界面共用上面的 fetcher
│   └── Cargo.toml           # [[bin]] quota 必须单独声明,见「命令行版本」
└── ui/index.html            # 整个界面:单文件、零外部依赖

测试

取数逻辑依赖本机登录态,CI 上跑不了真实接口,所以纯函数一律配单元测试: 日期解析、protobuf 编解码、AES-GCM 解密、重试判定、前后端数据契约、CLI 的输出与双语文案。

cd quota-panel-tauri/src-tauri
cargo test                    # 单元测试
cargo clippy --all-targets    # 静态检查

界面(单文件、无构建步骤)另有一个静态检查脚本,会核对文案字典的 key 完整性、 前后端字段名一致性和 JS 语法:

node scripts/check-ui.cjs

scripts/ 下还有两个生成测试向量的一次性脚本(用 Node 当对照,见该目录的 README)。

性能参考(macOS 实测,含 WebKit 的 GPU / WebContent / Networking 子进程): 空闲约 150 MB RSS,作为对照,它替代的 Electron 版本约 470 MB。

Description taken from the repository README.

Ratings

–
0 ratings
5 0
4 0
3 0
2 0
1 0

Rate this app

Sign in to rate

Comments 0

Sign in to comment

No comments yet.

Related apps

#tauri · #desktop · #widget