Skip to content

About

macOS 菜单栏余额看板:聚合 DeepSeek/OpenAI/Claude/GLM/Qwen 及中转站的预付费余额

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

TokenBoard

一个 macOS 菜单栏常驻的小工具,把你在多个 AI 服务(DeepSeek 官方、OpenAI/ChatGPT、Claude、GLM 智谱、通义 Qwen,以及各种 New API / One API 中转站)的预付费余额聚到一个图标里。

不再登录各个平台来回切,只看菜单栏就够了。

截图

下拉菜单截图

截图:当前配置名(带真实品牌 logo)、余额、运行状态、显示开关、所有配置(打勾切换当前配置)、添加/编辑/删除配置。

特性

  • 原生 macOS 菜单栏 app:纯 Swift + AppKit,只依赖 Xcode Command Line Tools(无需完整 Xcode),用 Swift Package Manager + Makefile 一键构建。
  • 单图标 + 三段信息:▶ 状态 | 白色 logo | ¥余额,用白色竖线分隔,三段垂直居中,整体深色菜单栏上一致。
  • 真实品牌 logo:OpenAI/ChatGPT、DeepSeek、Claude、GLM 智谱、Qwen 通义。菜单栏用白色版(暗底可读),下拉菜单用品牌色版,hover 高亮时图标跟随文字变白。
  • 自动探测余额接口:填 Base URL 和 API Key 后自动尝试识别(DeepSeek 官方、OpenAI 风格、New API / One API 通用、未知域名候选探测),失败兜底常见路径;401/403 时给出"中转站余额接口可能需要用户令牌而非 API Key"的提示。
  • URL 规范化:直接粘 Agent 里的完整 endpoint(如 https://x.com/v1/chat/completions)也行,自动剥路径只留 scheme+host。
  • 多配置 + 快速切换:下拉菜单列出所有配置,当前配置打勾,点击切换;菜单栏图标实时跟随切换。
  • 添加 / 编辑 / 删除配置:用原生 NSWindow 表单(名称、Base URL、API Key、低余额阈值、模型/提供商),保存时自动探测;删除有原生 NSAlert 确认。
  • 低余额提醒:定时刷新(默认 5 分钟)后余额低于阈值时发 macOS 系统通知。
  • 本地存储:所有配置保存在 ~/Library/Application Support/TokenBoard/config.json,纯本地,不联网。

系统要求

  • macOS 14+
  • Apple Silicon (arm64)
  • Xcode Command Line Tools(xcode-select --install)即可编译,无需完整 Xcode。

构建

# 直接构建 .app
make app

# 构建并打包 DMG(可用于分发)
make dmg

产物:TokenBoard.app、TokenBoard.dmg。.app 已用 codesign --force --deep --sign - 自签名(仅本机信任);DMG 可直接分发给同架构用户。

运行

open TokenBoard.app

首次启动:

  1. 点击菜单栏图标(默认空状态显示 OpenAI 图标)。
  2. 选择「添加配置…」。
  3. 填写:名称 / Base URL(支持完整 endpoint)/ API Key / 低余额阈值 / 模型提供商。
  4. 保存 → app 自动探测余额接口路径。
  5. 添加成功后菜单栏立即开始显示该渠道的余额、状态。

⚠️ 中转站余额查询如果失败(HTTP 401/403),大多数情况是该中转站需要用户访问令牌(在网页面板登录后获取),而不是聊天用的 sk-... key。

支持的余额接口

提供方 接口 解析字段
DeepSeek 官方 GET /user/balance balance_infos[0].total_balance
OpenAI 兼容(dashboard) GET /dashboard/billing/credit_grants total_available_credits
New API / One API GET /api/user/info data.balance 或 data.quota
未知域名探测 依次尝试 user/balance、v1/usage、api/user/info、dashboard/billing/credit_grants 等 balance / quota / credit / total_available_credits 等启发式
自定义 任意路径 + JSON 路径 你填什么就解析什么

项目结构

token-board/
├── Sources/main.swift          # 全部源码(单文件)
├── Package.swift               # SPM 配置
├── Makefile                    # 构建 / 打包
├── Info.plist                  # app 元数据
├── AppIcon.icns + icon_*.png   # app 图标(含生成脚本 gen_icon.py)
├── logos/                      # 品牌 logo SVG(彩色版 + 白色版各 5 个)
│   ├── openai.svg   openai_w.svg
│   ├── deepseek.svg deepseek_w.svg
│   ├── claude.svg   claude_w.svg
│   ├── glm.svg      glm_w.svg
│   └── qwen.svg     qwen_w.svg
├── docs/screenshot.png         # README 截图
├── .gitignore
└── README.md

设计取舍

  • 单图标 + 当前配置:用菜单列出所有配置、打勾切换当前。比"每服务一个菜单栏图标"更符合"切换"的直觉。
  • 状态用形状而非颜色:播放▶ / 暂停⏸ 都用白色(与菜单栏文字一致),用形状区分正常/异常,避免深色菜单栏上彩色突兀。
  • 品牌色 vs 白色 logo:菜单栏暗底 → 白色版;下拉菜单明亮 / hover → 品牌色版;hover 高亮时通过 NSMenuDelegate.menu(_:willHighlight:) 动态切到白色,保持与文字同步。

许可

MIT

About

macOS 菜单栏余额看板:聚合 DeepSeek/OpenAI/Claude/GLM/Qwen 及中转站的预付费余额

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages