Skip to content

Releases: saime428/ai-code-usage-tray

AI Code Usage Tray v1.5.0

Choose a tag to compare

@saime428 saime428 released this 27 Sep 13:12

新增

  • 价格表会自己更新。价格表挪到了仓库里的 lib/prices.json,应用启动约 10 秒后下载一次,之后每天一次(没联网就每小时重试,直到成功)。以后改价或新增型号,只要推到仓库,一天内就能到所有已安装的 1.5.0 及以后版本,不用再装新版。
    • 下载的表必须校验通过(认识的格式、数值合理、型号一个不少),而且不比手上正在用的旧,才会被采用;否则继续用上次下载成功的那份或应用内置的那份。
    • 请求不带任何关于你的信息,只是一次普通的文件下载(GitHub,连不上时改用 jsDelivr)。托盘菜单「自动更新价格表」可以关掉,关掉后已经在用的表保持不变。
  • 每周的价格检查改读厂商官方页面。npm run check-prices 现在逐项比对 Anthropic、OpenAI 官方价格页上的每个价格,并要求 Codex 模型页上可选的每个型号在表里都有行。GPT-6 Sol、Luna 在 1.4.0 之前一直算 0,就是因为旧检查只核对表里已有的行。

说明

  • 隐私政策更新:原来那句「除非用户明确要求,不向其他网络系统传输任何信息」不再准确,换成了逐条说明——唯一的自动请求就是上面的价格表下载,其余联网只在你连接 Claude 账户或打开外部链接时发生。见 PRIVACY.md。
  • 价格本身和 1.4.0 相同(2026-09-26 按三家官方页核对)。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:48/48 通过。新增的测试覆盖:下载的表同时进入两家的计价;换表后,按旧价缓存的 Codex 结果会重新计价;各类坏表都会被拒收(格式不认识、日期写成未来、费率离谱、缺行、别名指错或遮住真实的行、下载被截断)。
  • 代码审查:Fable 子代理独立审查,新旧价格表对了 903 组计价,零差异。发现 1 个高风险问题(snapshot 手误写成未来日期,会把所有已安装的副本永久锁在那张表上,发版也救不回)、1 个中、6 个低,均已修复。
  • 价格核对:npm run check-prices 在 GitHub Actions 上实跑,官方页核对 169 个值、LiteLLM 核对 28 个型号,无漂移。把表临时改回 1.4.0 之前的状态再跑,Opus 5.5 的错价和 GPT-6 Sol / Luna 的缺行都会被报出来。
  • 真机实测:在作者本机从 1.4.0 静默覆盖安装,沿用原安装目录,开机自启保留。启动 11.5 秒后,应用自己下载并写出了价格缓存,和仓库 main 上的 lib/prices.json 逐字节一致。
  • GitHub Actions:Windows 构建通过。
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.5.0-win-x64.exe:ae58e896efdc716fa0c361e01a71796f4bf9fc13727827d00a8e159d19df1cce
    • AI-Code-Usage-Tray-1.5.0-win-x64.exe:6019a181300de3dc73fe8f8fab4d735075ac56512273b1da0cfd4a1bc0b7c43e

AI Code Usage Tray v1.4.0

Choose a tag to compare

@saime428 saime428 released this 27 Sep 08:40

新增

  • 任务流光环。有会话在跑时,悬浮条上对应那一家会绕一圈流动的光:Claude 橙、Codex 薄荷绿、Grok 蓝,需处理时转成警示色。托盘菜单「流光环样式」可选品牌色、彩虹或关闭;系统开了「减少动态效果」时变成不转的静态光圈。
  • 环不等 30 秒刷新。主进程直接监听三家的会话目录和 hook 状态目录,有写入 0.4 秒内亮起。一轮对话常常跑不满 30 秒,跟着快照走的话环基本只在任务结束后才亮。
  • 文件事件用 mtime 复核。客户端重命名或迁移老会话文件同样会触发监听,但文件本身不新,不算在跑——Codex Desktop 启动时做会话迁移就曾让环平白转 20 秒。
  • 安装程序现在会问装在哪里。以前一键安装不给选择,直接装到当前用户目录;现在是向导式安装,多一个路径页,默认仍是当前用户、不需要管理员权限。

修正

  • 价格表按 Anthropic、OpenAI、xAI 三家官方价格页重新核对(2026-09-26)。
    • Claude Opus 5.5 之前没有自己的价格行,被当成 Opus 5 计价($5/$25、缓存读取 0.1 倍)。官方价是 $4/$20、缓存读取 0.05 倍,缓存读取一直按官方价的 2.5 倍在算。常用 Opus 5.5 的话,显示的金额会明显下降,这是纠正,不是数据丢了——作者本机近 30 天的 Opus 5.5 从 $592.04 变为 $329.73。
    • GPT-6 Sol、GPT-6 Luna 之前不认识,金额算 0、合计标为不完整;现在按官方价计。
    • Codex 仍列为可选的 GPT-5.4、GPT-5.4 mini 补上了价格;GPT-5.4 nano / pro 也各自成行,否则会被当成 GPT-5.4 计价,差 12 倍。
    • Grok 不需要价格表:金额直接用 Grok CLI 记录的官方结算值。

说明

  • Codex 的快速模式(service_tier: "priority",官方价是标准价的 2 倍,GPT-5.5 为 2.5 倍)目前没有计入,这些回合按标准价显示。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:46/46 通过(新增 Opus 5.5 缓存读取与快速模式、GPT-6 Sol、GPT-5.4 前缀防撞的断言,这几条在旧价格表上会失败)
  • 价格核对:解析三家官方价格页的原始表格,逐格走实际的计价函数比对,165 个值全部一致;npm run check-prices 28 个型号无漂移
  • 真机实测:在作者本机静默覆盖安装,沿用原安装目录,开机自启项保留;用已安装的程序跑本机近 30 天数据,Opus 5.5 和 GPT-6 Sol 的金额与上面一致
  • GitHub Actions:Windows 构建通过
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.4.0-win-x64.exe:23fc3ba6b1f0d8188eee51930c0f123a1bf7f935bb939d12d78af06476c7ca53
    • AI-Code-Usage-Tray-1.4.0-win-x64.exe:38408a94b61c2060efcddca40106f146a9f03ff0179117ab32837038a7460a0e

AI Code Usage Tray v1.3.2

Choose a tag to compare

@saime428 saime428 released this 16 Sep 15:48

装了 v1.3.1 的请升级:v1.3.1 的卸载钩子有个副作用,会让之后每一次升级都悄悄关掉开机自启。直接运行安装包覆盖即可,设置和账号账本都会保留。

修正

  • 升级不再关掉开机自启。v1.3.1 让卸载程序清理开机自启项(避免卸载后残留一条指向已删除程序的启动项),但一键安装包在覆盖升级时会先运行旧版的卸载程序——于是每次升级都把这个设置关掉了,而且没人写回来。现在卸载钩子在「这次卸载其实是升级」时跳过删除,真正卸载时照常清理。这和 electron-builder 自己删除用户数据前用的是同一个判断。
  • 运行便携版不再抢走安装版的开机自启。以前只要开机自启条目存在,启动时的自愈逻辑就会把它刷成当前这一份;装了安装版之后偶尔双击一次便携版,开机启动的就悄悄变成便携版了。安装是明确动作,安装版照常接管;被双击一次不算,所以便携版现在只有在条目指向的程序已经不在时(便携版被挪走、安装版被卸载)才接管。
  • 启动时清理残留的临时文件。写设置、账本和凭据都走「临时文件 + 改名」,正常路径会在最后删掉临时文件;但 v1.3.0 起接管卡死实例用的是强制结束进程,那一步会被跳过。现在启动时清理上一次留下的,只认本应用自己的文件名前缀和 .tmp 后缀。

说明

  • 顺带纠正了 v1.3.0/v1.3.1 文档里的一处错误:便携版写进开机自启的是便携版程序本身的路径(你放它的位置),不是临时解压目录,所以那个条目本身一直是有效的——真正的问题是它不该去接管。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:44/44 通过(新增开机自启判断的单元测试:带空格的注册表路径解析、便携版让出条件)
  • 真机实测:连做两次覆盖升级对照——旧钩子那次开机自启被删、新钩子那次完好保留;造了四个文件验证清理,两个残留被删,无关的 .tmp 和 .backup 原封不动,账本和凭据完好
  • GitHub Actions:Windows 构建通过
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.3.2-win-x64.exe:e95be66db4ea2a4e31a8c31f6fecd1adb93c8f94661ce93a5a5561153f07aeed
    • AI-Code-Usage-Tray-1.3.2-win-x64.exe:424c02a56110faedae833f61d92d782cf74016e4d0e8e38c7ce8a0c188023a8c

AI Code Usage Tray v1.3.1

Choose a tag to compare

@saime428 saime428 released this 16 Sep 15:35

v1.3.0 的限流处理有个会把人永久困住的缺陷,建议所有连接了 Claude 账户的用户升级。直接运行安装包覆盖即可,设置和账号账本都会保留。

修正

  • 限流等待完整执行,重启也不忘。v1.3.0 把 Anthropic 要求的等待封顶在 1 小时;服务端要求更久时,应用每小时又去敲一次,限流永远解不开——实测 Retry-After 从 1350 秒一路累进到 3600 秒以上,应用安静运行两个半小时仍然是 429。现在封顶 24 小时(只防荒谬的响应头),等待期写在 %APPDATA%\ai-code-usage-tray\claude-oauth-throttle.json,冷启动也遵守——以前「重启试试」每次都会立刻再撞一次限流,把等待越续越长。这个文件同时记下上次请求的状态码、服务端错误说明和 Retry-After,不含令牌。
  • 登录过期会明说,并且不再空转重试。刷新令牌失效时(服务端回 400 Refresh token expired),面板以前显示的是登录码阶段的「授权码无效或已过期」,而且每 5 分钟仍会徒劳地撞两次接口。现在提示「登录已过期,请断开后重新连接」,并把下次尝试推到 24 小时后,等重新连接账户时立刻恢复。
  • Codex 价格表补上 cyber 型号和 daybreak 别名。gpt-5.5-cyber 以前前缀命中 gpt-5.5,金额少算 2.5 倍;gpt-5.6-cyber、gpt-daybreak-blue-latest、gpt-daybreak-red-latest 以前完全不认识,金额直接算成 0。四项都已对照 OpenAI 官方价格页核实(两个 cyber 均为 12.50 / 1.25 / 75 每百万 token)。
  • CI 不再被 electron-builder 的隐式发布搞红。改出安装包后会生成自动更新元数据,electron-builder 在 CI 环境下会自作主张去发 Release,没有 token 就让整个构建失败。

说明

  • 这三件事其实是同一条链:密集重启触发限流 → 两天里每次请求都被 429 挡在入口,访问令牌过期后从来没走到触发刷新的 401 → 刷新令牌自己也过期 → 只能重新登录。限流解除后才露出后面两层。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:43/43 通过
  • 真机实测(都在被限流的真实账户上):等待期落盘后第二次冷启动一个请求都没发;刷新令牌失效时下次尝试被推到 24 小时后,空转停止;重新连接账户后立刻拿到 200,Fable 额度恢复显示
  • GitHub Actions:Windows 构建通过
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.3.1-win-x64.exe:550d60b1e733d9adf0cad28afdc0e571d2851e02d30914365cffcd60ce56ef4a
    • AI-Code-Usage-Tray-1.3.1-win-x64.exe:029bba4422ae6c9e4643e93fddd5e00c34b1bcca9344247754cdb9ad12a6726f

AI Code Usage Tray v1.3.0

Choose a tag to compare

@saime428 saime428 released this 16 Sep 12:47

新增

  • 一键安装版(主推下载)。AI-Code-Usage-Tray-Setup-1.3.0-win-x64.exe 按当前用户安装到 %LOCALAPPDATA%\Programs,不需要管理员权限;启动时不用每次解压约 350 MB,托盘图标和开机自启的路径也固定下来。卸载在 Windows 设置 → 应用 里进行,%APPDATA%\ai-code-usage-tray 下的设置和账号账本会保留。便携版继续提供。
  • 挂起记录。主线程停止响应超过 15 秒时,%APPDATA%\ai-code-usage-tray\hang-log.jsonl 会记下发生时间、当时卡在哪一步、卡住前 15 分钟启动了哪些进程(含输入法和文本服务进程),不上传任何内容。看门狗自己没起来也会写一条,所以空日志不会有歧义。

修正

  • 卡死之后再打开就能救回来。以前应用一旦未响应,怎么双击都没反应:卡死的实例一直占着单实例锁,Electron 把新实例转交给它那个无响应的窗口,新实例随即静默退出。现在新启动会先结束 Windows 判定为「未响应」的同名进程再接管,并留下一条 ended-hung-instance 记录。只结束主进程——它的子进程会自己退出,而连坐会把应用打开过的浏览器或 Claude Desktop 一起关掉。
  • 便携版不再误伤正在运行的实例。以前每次启动都解压到同一个临时目录、退出时整个删掉,连正从那个目录运行的实例要用的文件也会被删。现在每次启动用独立目录。
  • Claude 账户额度能从限流中恢复。以前 Anthropic 限流额度查询时,应用每 30 秒刷新都会重试一次,等于一直把限流续着,Fable 额度再也不显示。现在不论上次成功还是失败,每 5 分钟最多请求一次;响应要求等更久时就照它说的等(封顶 1 小时),面板提示也相应改成「稍后会自动重试」。
  • 卸载会清掉开机自启项。开机自启的注册表值是应用自己写的,NSIS 卸载程序原本不会碰它,卸载后会残留一条指向已删除程序的启动项。

说明

  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。
  • 从便携版换到安装版:先退出便携版再运行安装包。装完之后如果再运行便携版,开机自启项会被抢回临时目录——两种版本挑一个用就好。
  • 目前分析过的那次卡死里加载了输入法的文本服务 DLL,这只是线索、不是结论。挂起记录就是为了下次拿到证据。

校验

  • 本地测试:43/43 通过
  • 卡死恢复、便携版独立目录、安装与卸载(含开机自启项清理、设置保留)均在本机实测
  • 限流修复用真实被限流的账户抓包验证:6 分钟内只发出 1 次请求(旧逻辑会发 12 次),并遵守了响应里要求的等待时间(那次是 1350 秒)
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.3.0-win-x64.exe:84bde9e3a28d8c2b04de1bd250d8940a80127b693815920d0f806c09a95a8fef
    • AI-Code-Usage-Tray-1.3.0-win-x64.exe:6c350db88f5376f8aeac06d750811d53e94a6a6311aeca00056aed667e4e0d4a

AI Code Usage Tray v1.2.2

Choose a tag to compare

@saime428 saime428 released this 09 Sep 18:12

修正

  • Grok 周额度在新计费周期开始时整块消失。xAI 的接口在用量为 0 时会把 creditUsagePercent 字段整个省略(proto3 丢默认值),此前这被当成「数据读不出来」而隐藏整个额度块,要等用量涨过 1% 才自己恢复——所以每个计费周期都会触发一次。现在字段缺失即读作 0%;其余字段(周期起止、是否过期)照常校验,记录本身损坏时仍然隐藏,不会自信地报一个 0。

说明

  • 只影响 Grok 额度的显示。Claude / Codex 不受影响,token 统计和金额计算也没有变化。
  • 仍有一处数据源限制:新计费周期开始后,额度要等你下次运行 Grok CLI 才会刷新出来(本机六个周期实测滞后 2–57 小时)。xAI 没有公开 API,这个数字只有 CLI 跑起来才会写进本地日志。这段时间选择不显示而不是猜一个值——周额度是账号级的,你可能已经在网页版或手机上用掉了一部分。

校验

  • 本地测试:42/42 通过(新增两条断言:缺 creditUsagePercent 仍要给出额度、缺周期仍要隐藏)
  • 变异测试:回退修复后,新断言按预期失败
  • GitHub Actions:Windows 构建通过
  • SHA-256:8e1eeb2d56f07d0c6e884e81b5e1f328da5416d6879dc942c163c4e27e6b8a4b

AI Code Usage Tray v1.2.1

Choose a tag to compare

@saime428 saime428 released this 06 Sep 21:56

修正

  • 价格表全面核对:对照 Anthropic / OpenAI 官方价格页逐项校验。Sonnet 5 此前按「原定 9 月 1 日上调」的 $3/$15 计价,官方已取消上调,改回 $2/$10;GPT-5.6 全系(sol / terra / luna)按当前牌价修正,其中 luna 此前高估 5 倍。
  • Claude Fable 5.1 / Mythos 5.1 缓存读取按 0.025x 计。此前统一按 0.1x,是这两个模型最大的一项高估。
  • 模型解析改为最长前缀匹配:claude-opus-4 不再吞掉 claude-opus-4-5,gpt-5.5 不再吞掉 gpt-5.5-pro(后者此前少算 6 倍)。
  • 补上 Opus 5 快速模式 2x、inference_geo: "us" 1.1x、gpt-6-astra 与 gpt-5.5-pro 的价格行,以及退役型号(Opus 4.1 / 4、Sonnet 4、Haiku 3.5)。
  • 识别 Bedrock / Vertex 形式的模型 id(us.anthropic.…、global.…、名称@日期),此前这些会话的金额显示为 0;区域推理配置按官方口径加 10%。

新增

  • npm run check-prices:把价格表和 LiteLLM 价格表比对并报告差异,GitHub Actions 每周自动跑一次。只报告、不改写。
  • npm start 增加启动守卫,防止 node_modules/electron 里残留的 app.asar 顶替工作区。

说明

  • 金额仍是 API 等价估算,不是账单,订阅用户不会按此扣费。
  • 重度使用 Fable 5.1 的用户会看到金额明显下降(本机实测当日 −37%)——这是修正,不是数据丢失。
  • 面板底部的「价格快照」日期现在是 2026-09-06。价格表如何维护见 README「金额是怎么算的」。
  • 没有公开牌价的型号(如 Codex 内部的 codex-auto-review)会标为「不可用」并排除在合计之外,合计随之标为不完整。

校验

  • 本地测试:42/42 通过
  • GitHub Actions:Windows 构建通过
  • SHA-256:48e86212be2fc5d9b1b3a24ae80ee72a4ec089c33b78554aeecd5a3d09f45f8b

AI Code Usage Tray v1.2.0

Choose a tag to compare

@saime428 saime428 released this 27 Aug 16:58

新增

  • Grok 支持:自动读取 Grok CLI 的本地会话数据(~/.grok/sessions),在面板、悬浮条、托盘提示和 npm run usage 中作为第三个来源展示:
    • 逐轮 token(按模型细分,含缓存读写和推理 token)。
    • 金额直接使用 Grok CLI 记录的官方结算值(含缓存折扣),不是本地估算。
    • 订阅周额度百分比、重置时间和套餐名,来自 CLI 落盘的本地日志。
  • 悬浮条展开面板改为三列布局,顶部/右侧两种贴边模式的窗口尺寸相应放大。

说明

  • 与 Claude / Codex 一样,Grok 数据全部本地只读,不上传任何内容,也不需要 API Key。
  • Grok 暂不参与分账号统计(缺少身份识别),会话为 CLI 类型、不支持点击跳转。
  • 订阅额度内使用时,显示的金额不会另外扣费。

校验

  • 本地测试:40/40 通过
  • GitHub Actions:Windows 构建通过
  • SHA-256:27071d8030ebab16ac62ab9f82c2da15dc4e4e7e788918bd8610fd32c2fcb765

AI Code Usage Tray v1.1.0

Choose a tag to compare

@saime428 saime428 released this 21 Aug 13:38

新增

  • 悬浮条在全屏应用前自动隐藏:独占全屏、无边框全屏(游戏常用的"无边框窗口化")、浏览器 F11、演示模式都会触发,退出全屏后 3 秒内恢复显示。默认开启,可在托盘右键菜单「全屏应用时隐藏悬浮条」关闭。

说明

  • 判定复用 Windows 自带的 SHQueryUserNotificationState(系统在全屏时屏蔽通知用的同一接口),普通最大化窗口不会触发。
  • 探测由一个常驻的 PowerShell 子进程完成,关闭该选项或隐藏悬浮条时会随之退出;探测进程意外退出时悬浮条恢复显示并在 30 秒后自动重试。
  • v1.0 曾有过基于窗口矩形的全屏判定并被移除,本版实现与之无关。

校验

  • 本地测试:39/39 通过
  • GitHub Actions:Windows 构建通过
  • SHA-256:281d376cae694d9eef14a66c31a748803b6b43b37d8645669860a8a90c364982

AI Code Usage Tray v1.0.9

Choose a tag to compare

@saime428 saime428 released this 21 Aug 12:34

修复

  • 悬浮条和完整面板不再出现在 Windows 任务栏。此前虽然设置了 skipTaskbar,但窗口为保持置顶反复刷新后该设置会失效(Electron 已知问题),任务栏按钮出现后连关闭悬浮条都无法清除。

说明

  • 两个窗口现在以工具窗口(WS_EX_TOOLWINDOW)方式创建,系统层面不分配任务栏按钮,也不再出现在 Alt+Tab 列表。托盘图标、悬浮条和面板的使用方式不变。

校验

  • 本地测试:38/38 通过
  • GitHub Actions:Windows 构建通过
  • SHA-256:eff8eb4ad971d160611c7807590535b621216ef65f2b915eba9003d34839a37c