Four-JJJJ/oh-myusage
GitHub: Four-JJJJ/oh-myusage
一款面向macOS用户的菜单栏应用,用于聚合监控和管理多个AI服务的订阅额度、第三方中转余额及本地账号状态,解决信息分散、难以快速掌握可用性的痛点。
Stars: 171 | Forks: 7
# oh-myusage
面向 macOS 菜单栏的 AI 订阅、额度与账号状态控制台。
oh-myusage 把官方订阅额度、模型使用窗口、第三方中转余额、本地桌面端账号状态和异常诊断统一放到菜单栏里。它不是单一网页余额的封装,而是一个常驻运行、低打扰、可扩展的 AI 用量工作台。
[下载最新版本](https://github.com/Four-JJJJ/oh-myusage/releases/latest) · [安装说明](docs/DOWNLOAD.md) · [支持的服务](docs/PROVIDERS.md) · [扩展指南](docs/EXTENDING.md) · [发布清单](docs/RELEASE_CHECKLIST.md) · [English](docs/README.en.md)
## V2.0.0 大版本
V2 的重点是把 oh-myusage 从“AI 余额读取工具”升级为更稳定、更省电、更容易维护的 AI 订阅与额度控制台。
相比 v1.x,本次大版本优化集中在六件事:
| 方向 | 改进 |
| --- | --- |
| 架构拆分 | 刷新、配置、账号、展示、Provider 接入逐步从大文件中拆出,新增服务和页面调整更安全 |
| 智能刷新 | 当前可见服务优先刷新,后台服务降低无意义轮询,失败时自动退避,减少常驻能耗 |
| 本地用量缓存 | Codex、Claude、Kimi 等本地记录支持缓存与后台刷新,设置页打开更快 |
| 配置可靠性 | 增加备份、恢复、last-known-good 兜底和旧配置兼容,降低覆盖安装后的配置风险 |
| 账号切换事务 | Codex / Claude 账号切换按准备、写入、应用、校验、完成处理,状态更可解释 |
| 展示一致性 | 菜单栏和设置页统一额度、倒计时、异常状态、图标和名称规则,减少重复逻辑 |
## 适合谁
- 同时使用多个 AI 官方产品,希望在菜单栏快速判断额度状态的人
- 依赖多个第三方中转站,希望统一查看余额、Token 用量和异常原因的人
- 经常在多个 Codex 或 Claude 本地账号之间切换的人
- 希望区分“官方确认”“本地估算”“缓存回退”“鉴权失效”等数据可信度的人
- 想要一个长期常驻、低能耗、可诊断的 AI 用量监控工具的人
## 它解决什么问题
AI 用量信息通常分散在很多地方:
- 官方产品各自有不同的额度页、重置周期和显示方式
- 第三方中转站需要处理 Cookie、Bearer、用户 ID、GroupId、组织上下文或自定义 JSON 字段
- 本地桌面端工具的账号状态和历史用量不一定存在公开网页里
- 登录态过期、接口变更、限流和网络失败经常只表现为“刷新失败”
oh-myusage 的目标是让这些信息变得可扫读、可诊断、可维护:
- 在菜单栏快速看到当前服务还能不能用
- 明确看到会话、5 小时、天、周、月等窗口何时重置
- 同时管理官方来源、本地来源和第三方中转来源
- 发现低额度、鉴权失效、连续失败、缓存回退和接口变化
- 在需要时直接管理或切换本地账号,而不是手动翻配置文件
## 核心能力
### 菜单栏状态驾驶舱
- 直接显示额度、百分比、余额、倒计时、刷新状态和异常状态
- 支持固定单模型显示、多模型轮换和多用量展示
- 支持低额度、鉴权失效、连续失败等提醒
- 状态栏外观支持跟随壁纸、强制深色和强制浅色
### 官方订阅与本地账号
- 统一管理官方 Provider、本地桌面端会话和账号资料
- 支持 Codex / Claude OAuth 导入和账号槽位管理
- 支持 Codex 本地多账号识别、保存与切换
- 非当前账号的额度窗口和倒计时也可以保留展示
### 第三方中转账本
- 内置常见站点模板,减少手工填写接口路径和字段解析
- 支持余额通道、Token 通道、账号信息、有效期和额外上下文字段
- 支持 `Manual Preferred`、`Browser Preferred`、`Browser Only` 三种凭证策略
- 对认证失败、限流、端点配置错误、网络不可达等状态做用户可读诊断
### 本地历史用量
- 支持读取 Codex、Claude、Kimi 等本地使用记录
- 缓存聚合结果,避免每次打开设置页都重新扫描
- 刷新失败时保留旧数据,并明确标记缓存回退
- 不保存原始聊天内容,重点保存用量聚合结果
### 更新与发布
- 支持 GitHub Release 驱动的应用内更新检测
- 支持更新说明展示
- 打包脚本支持 DMG / ZIP 输出
- 可接入 Developer ID 签名和 notarization
## 支持的服务
完整说明见 [docs/PROVIDERS.md](docs/PROVIDERS.md)。
### 官方与本地来源
| 类型 | 服务 |
| --- | --- |
| 官方 / 本地桌面端 | Codex、Claude、Gemini、GitHub Copilot、Cursor、Windsurf |
| 官方 / API 或网页来源 | Kimi、Amp、Z.ai、OpenCode Go |
| 官方 / 本地数据来源 | JetBrains AI、Kiro |
### 第三方中转模板
| 模板 | 凭证方式 |
| --- | --- |
| Generic New API | Bearer 或 Cookie |
支持通用的NewAPI站点模板获取信息
## 快速开始
### 下载安装
1. 打开 [Latest Release](https://github.com/Four-JJJJ/oh-myusage/releases/latest)
2. 下载 `oh-myusage.dmg`
3. 打开 DMG,将 `oh-myusage.app` 拖入 `Applications`
4. 第一次启动时如被 macOS 拦截,右键应用并选择“打开”
5. 如果仍被拦截,到“系统设置 -> 隐私与安全性”里选择“仍要打开”
更完整的安装和排障步骤见 [docs/DOWNLOAD.md](docs/DOWNLOAD.md)。
### 系统要求
- macOS 14 或更高版本
- 当前通过 GitHub Releases 分发,非 App Store 安装包
### 初次配置建议
1. 先在设置页启用你真正需要监控的 Provider
2. 官方服务优先使用本地登录态或 OAuth 导入
3. 第三方中转优先选择内置模板,再补充必要的 Token、Cookie 或 GroupId
4. 如果站点登录态更稳定,可把凭证策略切换为 `Browser Preferred`
5. 对高频使用的服务设置低额度提醒和菜单栏显示策略
## 数据与安全
- 手动保存的 Token、Cookie 等凭证默认存放在 macOS Keychain
- 历史 `OhMyUsage` 钥匙串条目会迁移到新的 `oh-myusage`
- 应用配置保存在 `~/Library/Application Support/OhMyUsage`
- 本地历史用量保存聚合缓存,不保存原始聊天内容
- 浏览器凭证读取只用于支持的站点和对应凭证策略
- 第三方站点接入能力会受到目标站点认证方式、权限策略和返回结构变化影响
## 从源码运行
### 环境要求
- macOS 14+
- Xcode / Swift 6.2 工具链
### 常用命令
构建:
swift build
运行:
swift run
测试:
swift test
打包:
./scripts/package_dmg.sh
打包产物默认输出到:
- `dist/oh-myusage.dmg`
- `dist/oh-myusage-macOS.zip`
## 工程结构
Sources/
├── OhMyUsage # 当前可执行应用主体,包含 App、UI、Services、Providers、Resources
├── OhMyUsageDomain # 领域模型与稳定契约骨架
├── OhMyUsageInfrastructure # 基础设施骨架
├── OhMyUsageProviders # Provider 运行时拆分目标骨架
├── OhMyUsageApplication # 应用层调度、退避、诊断等已抽出的逻辑
├── OhMyUsagePresentation # 展示层拆分目标骨架
├── OhMyUsageFeatures # 功能模块拆分目标骨架
└── OhMyUsageBootstrap # 启动组装拆分目标骨架
Tests/OhMyUsageTests # XCTest 测试
docs/ # 安装、支持服务、扩展、发布与重构说明
scripts/ # 打包与发布脚本
当前代码仍保留兼容迁移路径:主应用逻辑主要位于 `Sources/OhMyUsage`,新的 target 用于承接 V2 之后的持续模块化拆分。
## 扩展开发
新增官方 Provider、第三方中转模板或设置项前,优先阅读 [docs/EXTENDING.md](docs/EXTENDING.md)。
推荐原则:
- Provider 接入代码放在 `Sources/OhMyUsage/Providers`
- 共享模型放在 `Sources/OhMyUsage/Models`
- 刷新、账号、配置、通知和更新能力放在 `Sources/OhMyUsage/Services` 或已抽出的应用层模块
- 菜单栏和设置页展示逻辑优先放到 Presenter 或 Settings 子模块
- 新增行为需要补 focused tests,并至少运行 `swift build` 和 `swift test`
## 发布
本地打包:
APP_VERSION=2.0.0 ./scripts/package_dmg.sh
发布前检查:
- 确认 `VERSION` 与目标版本一致
- 运行 `swift build`
- 运行 `swift test`
- 运行本地打包冒烟测试
- 确认 `dist/oh-myusage.dmg` 和 `dist/oh-myusage-macOS.zip` 存在
- 确认 GitHub Release 产物包含 `latest.json`
完整流程见 [docs/RELEASE_CHECKLIST.md](docs/RELEASE_CHECKLIST.md)。
## 常见问题
### 应用无法打开
GitHub 分发的构建可能未完成正式公证。可先右键 `oh-myusage.app` 选择“打开”,或按 [安装说明](docs/DOWNLOAD.md) 处理 Gatekeeper 拦截。
### Provider 显示鉴权失效
重新登录对应官方应用或网站。对于手动凭证模式,重新保存 Token 或 Cookie;对于支持的中转站,可以尝试切换到浏览器优先模式。
### 第三方中转突然刷新失败
优先查看错误类型。如果是认证失败,通常需要重新登录或更新凭证;如果是端点或解析失败,可能是目标站点改版,需要更新模板或字段规则。
### Codex 切换后仍提示验证
本地账号配置可能已经切换成功,但 Codex 桌面端仍需要完成一次官方验证。按 Codex 桌面端提示完成验证后,再回到 oh-myusage 刷新状态。
## 致谢
感谢以下项目带来的启发:
- [openusage](https://github.com/robinebers/openusage)
- [cc-switch](https://github.com/farion1231/cc-switch)
- [codexbar](https://github.com/rajasimon/codexbar)
## 许可证
MIT,详见 [LICENSE](LICENSE)。
面向 macOS 菜单栏的 AI 订阅、额度与账号状态控制台。
oh-myusage 把官方订阅额度、模型使用窗口、第三方中转余额、本地桌面端账号状态和异常诊断统一放到菜单栏里。它不是单一网页余额的封装,而是一个常驻运行、低打扰、可扩展的 AI 用量工作台。
[下载最新版本](https://github.com/Four-JJJJ/oh-myusage/releases/latest) · [安装说明](docs/DOWNLOAD.md) · [支持的服务](docs/PROVIDERS.md) · [扩展指南](docs/EXTENDING.md) · [发布清单](docs/RELEASE_CHECKLIST.md) · [English](docs/README.en.md)
## V2.0.0 大版本
V2 的重点是把 oh-myusage 从“AI 余额读取工具”升级为更稳定、更省电、更容易维护的 AI 订阅与额度控制台。
相比 v1.x,本次大版本优化集中在六件事:
| 方向 | 改进 |
| --- | --- |
| 架构拆分 | 刷新、配置、账号、展示、Provider 接入逐步从大文件中拆出,新增服务和页面调整更安全 |
| 智能刷新 | 当前可见服务优先刷新,后台服务降低无意义轮询,失败时自动退避,减少常驻能耗 |
| 本地用量缓存 | Codex、Claude、Kimi 等本地记录支持缓存与后台刷新,设置页打开更快 |
| 配置可靠性 | 增加备份、恢复、last-known-good 兜底和旧配置兼容,降低覆盖安装后的配置风险 |
| 账号切换事务 | Codex / Claude 账号切换按准备、写入、应用、校验、完成处理,状态更可解释 |
| 展示一致性 | 菜单栏和设置页统一额度、倒计时、异常状态、图标和名称规则,减少重复逻辑 |
## 适合谁
- 同时使用多个 AI 官方产品,希望在菜单栏快速判断额度状态的人
- 依赖多个第三方中转站,希望统一查看余额、Token 用量和异常原因的人
- 经常在多个 Codex 或 Claude 本地账号之间切换的人
- 希望区分“官方确认”“本地估算”“缓存回退”“鉴权失效”等数据可信度的人
- 想要一个长期常驻、低能耗、可诊断的 AI 用量监控工具的人
## 它解决什么问题
AI 用量信息通常分散在很多地方:
- 官方产品各自有不同的额度页、重置周期和显示方式
- 第三方中转站需要处理 Cookie、Bearer、用户 ID、GroupId、组织上下文或自定义 JSON 字段
- 本地桌面端工具的账号状态和历史用量不一定存在公开网页里
- 登录态过期、接口变更、限流和网络失败经常只表现为“刷新失败”
oh-myusage 的目标是让这些信息变得可扫读、可诊断、可维护:
- 在菜单栏快速看到当前服务还能不能用
- 明确看到会话、5 小时、天、周、月等窗口何时重置
- 同时管理官方来源、本地来源和第三方中转来源
- 发现低额度、鉴权失效、连续失败、缓存回退和接口变化
- 在需要时直接管理或切换本地账号,而不是手动翻配置文件
## 核心能力
### 菜单栏状态驾驶舱
- 直接显示额度、百分比、余额、倒计时、刷新状态和异常状态
- 支持固定单模型显示、多模型轮换和多用量展示
- 支持低额度、鉴权失效、连续失败等提醒
- 状态栏外观支持跟随壁纸、强制深色和强制浅色
### 官方订阅与本地账号
- 统一管理官方 Provider、本地桌面端会话和账号资料
- 支持 Codex / Claude OAuth 导入和账号槽位管理
- 支持 Codex 本地多账号识别、保存与切换
- 非当前账号的额度窗口和倒计时也可以保留展示
### 第三方中转账本
- 内置常见站点模板,减少手工填写接口路径和字段解析
- 支持余额通道、Token 通道、账号信息、有效期和额外上下文字段
- 支持 `Manual Preferred`、`Browser Preferred`、`Browser Only` 三种凭证策略
- 对认证失败、限流、端点配置错误、网络不可达等状态做用户可读诊断
### 本地历史用量
- 支持读取 Codex、Claude、Kimi 等本地使用记录
- 缓存聚合结果,避免每次打开设置页都重新扫描
- 刷新失败时保留旧数据,并明确标记缓存回退
- 不保存原始聊天内容,重点保存用量聚合结果
### 更新与发布
- 支持 GitHub Release 驱动的应用内更新检测
- 支持更新说明展示
- 打包脚本支持 DMG / ZIP 输出
- 可接入 Developer ID 签名和 notarization
## 支持的服务
完整说明见 [docs/PROVIDERS.md](docs/PROVIDERS.md)。
### 官方与本地来源
| 类型 | 服务 |
| --- | --- |
| 官方 / 本地桌面端 | Codex、Claude、Gemini、GitHub Copilot、Cursor、Windsurf |
| 官方 / API 或网页来源 | Kimi、Amp、Z.ai、OpenCode Go |
| 官方 / 本地数据来源 | JetBrains AI、Kiro |
### 第三方中转模板
| 模板 | 凭证方式 |
| --- | --- |
| Generic New API | Bearer 或 Cookie |
支持通用的NewAPI站点模板获取信息
## 快速开始
### 下载安装
1. 打开 [Latest Release](https://github.com/Four-JJJJ/oh-myusage/releases/latest)
2. 下载 `oh-myusage.dmg`
3. 打开 DMG,将 `oh-myusage.app` 拖入 `Applications`
4. 第一次启动时如被 macOS 拦截,右键应用并选择“打开”
5. 如果仍被拦截,到“系统设置 -> 隐私与安全性”里选择“仍要打开”
更完整的安装和排障步骤见 [docs/DOWNLOAD.md](docs/DOWNLOAD.md)。
### 系统要求
- macOS 14 或更高版本
- 当前通过 GitHub Releases 分发,非 App Store 安装包
### 初次配置建议
1. 先在设置页启用你真正需要监控的 Provider
2. 官方服务优先使用本地登录态或 OAuth 导入
3. 第三方中转优先选择内置模板,再补充必要的 Token、Cookie 或 GroupId
4. 如果站点登录态更稳定,可把凭证策略切换为 `Browser Preferred`
5. 对高频使用的服务设置低额度提醒和菜单栏显示策略
## 数据与安全
- 手动保存的 Token、Cookie 等凭证默认存放在 macOS Keychain
- 历史 `OhMyUsage` 钥匙串条目会迁移到新的 `oh-myusage`
- 应用配置保存在 `~/Library/Application Support/OhMyUsage`
- 本地历史用量保存聚合缓存,不保存原始聊天内容
- 浏览器凭证读取只用于支持的站点和对应凭证策略
- 第三方站点接入能力会受到目标站点认证方式、权限策略和返回结构变化影响
## 从源码运行
### 环境要求
- macOS 14+
- Xcode / Swift 6.2 工具链
### 常用命令
构建:
swift build
运行:
swift run
测试:
swift test
打包:
./scripts/package_dmg.sh
打包产物默认输出到:
- `dist/oh-myusage.dmg`
- `dist/oh-myusage-macOS.zip`
## 工程结构
Sources/
├── OhMyUsage # 当前可执行应用主体,包含 App、UI、Services、Providers、Resources
├── OhMyUsageDomain # 领域模型与稳定契约骨架
├── OhMyUsageInfrastructure # 基础设施骨架
├── OhMyUsageProviders # Provider 运行时拆分目标骨架
├── OhMyUsageApplication # 应用层调度、退避、诊断等已抽出的逻辑
├── OhMyUsagePresentation # 展示层拆分目标骨架
├── OhMyUsageFeatures # 功能模块拆分目标骨架
└── OhMyUsageBootstrap # 启动组装拆分目标骨架
Tests/OhMyUsageTests # XCTest 测试
docs/ # 安装、支持服务、扩展、发布与重构说明
scripts/ # 打包与发布脚本
当前代码仍保留兼容迁移路径:主应用逻辑主要位于 `Sources/OhMyUsage`,新的 target 用于承接 V2 之后的持续模块化拆分。
## 扩展开发
新增官方 Provider、第三方中转模板或设置项前,优先阅读 [docs/EXTENDING.md](docs/EXTENDING.md)。
推荐原则:
- Provider 接入代码放在 `Sources/OhMyUsage/Providers`
- 共享模型放在 `Sources/OhMyUsage/Models`
- 刷新、账号、配置、通知和更新能力放在 `Sources/OhMyUsage/Services` 或已抽出的应用层模块
- 菜单栏和设置页展示逻辑优先放到 Presenter 或 Settings 子模块
- 新增行为需要补 focused tests,并至少运行 `swift build` 和 `swift test`
## 发布
本地打包:
APP_VERSION=2.0.0 ./scripts/package_dmg.sh
发布前检查:
- 确认 `VERSION` 与目标版本一致
- 运行 `swift build`
- 运行 `swift test`
- 运行本地打包冒烟测试
- 确认 `dist/oh-myusage.dmg` 和 `dist/oh-myusage-macOS.zip` 存在
- 确认 GitHub Release 产物包含 `latest.json`
完整流程见 [docs/RELEASE_CHECKLIST.md](docs/RELEASE_CHECKLIST.md)。
## 常见问题
### 应用无法打开
GitHub 分发的构建可能未完成正式公证。可先右键 `oh-myusage.app` 选择“打开”,或按 [安装说明](docs/DOWNLOAD.md) 处理 Gatekeeper 拦截。
### Provider 显示鉴权失效
重新登录对应官方应用或网站。对于手动凭证模式,重新保存 Token 或 Cookie;对于支持的中转站,可以尝试切换到浏览器优先模式。
### 第三方中转突然刷新失败
优先查看错误类型。如果是认证失败,通常需要重新登录或更新凭证;如果是端点或解析失败,可能是目标站点改版,需要更新模板或字段规则。
### Codex 切换后仍提示验证
本地账号配置可能已经切换成功,但 Codex 桌面端仍需要完成一次官方验证。按 Codex 桌面端提示完成验证后,再回到 oh-myusage 刷新状态。
## 致谢
感谢以下项目带来的启发:
- [openusage](https://github.com/robinebers/openusage)
- [cc-switch](https://github.com/farion1231/cc-switch)
- [codexbar](https://github.com/rajasimon/codexbar)
## 许可证
MIT,详见 [LICENSE](LICENSE)。标签:AI服务管理, AI监控, Codex账户, macOS应用, macOS开发, Token监控, 余额监控, 异常诊断, 效率工具, 智能刷新, 本地缓存, 状态控制台, 用量工作台, 第三方中转, 菜单栏工具, 订阅管理, 账号管理, 配置备份, 额度跟踪