AI-Token 是一个面向 macOS 14 及以上版本的菜单栏应用,用来集中查看大模型平台的余额、额度和每日用量。它优先使用官方 API 或本机服务;只能通过网页读取的平台,会明确标记为网页同步,不会把解析失败伪装成 0。
项目处于 0.2.x 可用性打磨阶段。核心 App 已能通过 SwiftPM 构建、测试,并打包成临时签名的 Release .app 与拖拽安装 DMG。由于个人开发者暂时没有 Apple Developer 证书,公开分发时仍会触发 macOS Gatekeeper 提示;这不是应用代码可以绕过的限制。
| 平台 | 自动读取 | 网页同步 | 默认启用 | 说明 |
|---|---|---|---|---|
| DeepSeek | 官方余额 API | 支持 | 是 | API Key 保存于 Keychain |
| Codex | 本机 App Server | 不需要 | 是 | 读取本机 Codex 登录账号的额度和 Token 用量 |
| Xiaomi MiMo | 暂无稳定 API | 支持 | 是 | 使用内置 WebView 登录态 |
| Kimi | 余额 API | 支持 | 否 | API Key 保存于 Keychain |
| OpenAI | 暂不启用账单 API | 支持 | 否 | 普通 API Key 不用于账单读取 |
| Anthropic | 暂无账单 API | 支持 | 否 | 严格解析控制台用量页 |
| 通义千问、智谱 AI、豆包、Ninjia | 暂无稳定接入 | 支持 | 否 | 页面结构变化时会报错并保留上次数据 |
- macOS 菜单栏面板、平台开关、手动和定时刷新
- Keychain-only API Key 存储;普通配置与历史数据保存在本机
- Codex
app-server本机 JSON-RPC 集成 - 每日用量、月度趋势、余额预测和低余额通知
- 网络失败时保留上次可信卡片,并持久显示失败来源
- 中文优先界面、浅色/深色/跟随系统模式、开机启动
- 无证书 Release
.app/DMG 打包、图标生成、签名验证和启动冒烟检查
桌面 Widget 源码目前仍是实验性代码,没有嵌入 Release App,不应视为已发布功能。Windows 客户端也仍处于预留状态。
AI-Token/
├── shared/ # 平台中立的 API、模型、解析与趋势逻辑
├── AI-Token-MacOS/ # SwiftUI 菜单栏 App、服务、视图和测试
├── AI-Token-Windows/ # Windows 版本预留边界
├── docs/ # 接入、分发和 Widget 说明
├── scripts/ # 仓库级验证脚本
└── tasks/ # 产品化规格与任务清单
运行完整质量门禁:
./scripts/verify-all.sh它会依次执行共享层测试、macOS 测试、Release 编译、App/DMG 打包、签名/元数据检查、凭据特征扫描,以及本机启动冒烟检查。
只运行单个模块:
swift test --package-path shared
swift test --package-path AI-Token-MacOS
swift build --package-path AI-Token-MacOS -c release生成 Release App:
AI-Token-MacOS/Scripts/package-release-app.sh
open AI-Token-MacOS/Build/Release/AI-Token.app生成可拖拽安装的 DMG:
AI-Token-MacOS/Scripts/package-release-dmg.sh产物默认使用 ad-hoc 临时签名。以后获得 Developer ID 证书后,可直接指定签名身份:
AI_TOKEN_SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
AI-Token-MacOS/Scripts/package-release-app.sh更多限制和分发说明见 docs/distribution.md。
- API Key 使用
kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly存入 macOS Keychain。 - 网络请求单次超时为 10 秒;外部响应先在共享层验证再进入 UI。
- WebView Cookie 保留在 WebKit 默认数据容器,不会导出到普通文件。
- 用量快照位于用户的 Application Support 目录,不包含 API Key。
.env、证书、私钥与构建产物均被 Git 忽略。
- 没有 Apple Developer 证书时,其他 Mac 首次打开会看到 Gatekeeper 提示。
- 网页同步依赖第三方控制台 DOM;页面变化时需要更新解析器。
- 菜单栏弹窗尚缺少稳定的端到端 UI 自动化,当前以单元测试、构建和进程级冒烟检查为主。
- Notarization、自动更新和 Widget Extension 尚未进入当前分发链路。