Skip to content

Releases

AI Code Usage Tray v1.8.0

Choose a tag to compare

@saime428 saime428 released this 13 Oct 05:35

新增

  • 用量报表可以导出 CSV。报表窗口筛选那一行最右边的「导出 CSV」按钮,把当前显示的范围和勾选的工具存成一个文件,位置由你选。
    • 每个本地日期 × 工具 × 模型一行。
    • Token 分成不重叠的几列(输入、缓存读、缓存写、输出),相加等于总数,也就是报表里的 Token 数。Codex 和 Grok 自己的输入里含缓存,导出时已经减掉。
    • 每个工具各行相加,等于报表里该工具那一行。
    • 带 BOM 的 UTF-8,Excel 可以直接打开;会被表格软件当成公式的模型名,前面加一个单引号。
    • 命令行同样可以导出:npm run -s usage -- --days 30 --csv。
  • 复制诊断信息。托盘右键菜单新增一项,把版本、设置、每个工具的数据状态和额度数字、挂起记录的最后几条放进剪贴板,反馈问题时直接贴进 issue。
    • 不含会话标题、项目名、工作目录、账号名和令牌,主目录写成 ~。
    • 只写剪贴板,不向任何地方发送,粘贴前可以先看一遍。
  • Codex 点数余额。账号有点数时,面板和悬浮条的 Codex 卡片在 5h / 7d 窗口旁边显示余额,规则和 Codex 自己的 /status 一致。这个数一直就在应用读的会话文件里。

修正

  • Codex 额度显示的是你套餐的数,不再是最后写下的那一条。
    • 以前取会话文件里最新的一条额度快照,而这些快照并不都是在说套餐:某个型号专属的限额(GPT-5.3-Codex-Spark)会被当成你的额度显示;没有窗口的快照(premium 那个桶,或者任何一次走第三方 provider 的调用)会让额度整块消失。
    • 现在只取套餐自己那个桶里最新一条带窗口的快照,从最近 7 天内写过的会话文件里找,和面板选的天数无关。
    • 一天没用 Codex 时额度不再消失,窗口没过重置时间就还在。
    • 数字旧了会说明:悬浮条卡片写成「N 小时前 / N 天前更新」,面板和 npm run usage 在超过一天时加一句说明。
  • Gemini 每个型号一行。Antigravity 会给同一个型号分出带后缀的实验组(gemini-3.8-flash-n、gemini-3.7-flash-control),以前各占一行,现在并入所属型号。只合并「-control 或单个字母」这一种后缀,其他后缀(-preview 等)仍然单独一行。

说明

  • 点数余额是 Codex 最后一次写进会话文件的那个数,旁边标着时间。之后在别处(网页、另一台电脑)花掉的点数,要等 Codex 在本机再运行才会反映出来。
  • Codex 按型号单列的限额没有显示,只显示套餐自己的 5h / 7d 窗口和点数余额。
  • 为什么实验后缀只合并一种形状:更长的型号名借用较短邻居的价格、被悄悄算错,这类问题出现过不止一次。把所有后缀都并进去,会把这种情况藏起来。
  • CSV 每一列的含义、诊断信息包含和不包含哪些内容,README 里有逐项说明。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:77/77 通过。新增的测试覆盖:
    • Codex 点数:余额的各种写法、不限量、窗口全过期后余额仍保留;
    • 额度取哪条快照:别的桶、全空的快照、只有点数的快照、从上一次调用带过来的点数、7 天回看;
    • CSV:各家口径换算、各列相加等于总数、范围过滤、公式防护、引号转义;
    • 诊断信息:主目录的几种写法都被替换、会话标题和账号不出现、挂起记录只列输入法进程;
    • 实验后缀:见过的几种后缀合并,其他后缀不合并。
  • 真实数据:
    • 导出:作者本机 30 天 109 行,五家的金额、token、请求数与报表逐项相等;用打包后的程序又核了一遍,结果相同。
    • 额度:把本机 55,203 条 Codex 额度快照按时间回放,19,790 个时刻新代码与期望值全部一致。按旧代码算,有会话文件可读的时间里 12% 显示的是别的桶的数或者空白。
  • 实机(开发版,隔离的数据目录):
    • 面板和悬浮条显示点数余额;窗口全过期、只剩点数时,悬浮条写的是「没有有效的额度窗口 · 点数更新于 …」;
    • 导出按钮:写出文件、取消、文件被别的程序占用(提示先关掉 Excel)、所有工具都取消勾选,都走过;
    • 「复制诊断信息」的文本里主目录是 ~;把 USERPROFILE 指到别处启动,数据目录同样被替换;
    • 额度修正:三天前的套餐快照加今天一个第三方 provider 的会话,旧代码不显示额度,新代码面板和悬浮条都显示周窗口。
  • 打包后的程序:worker 冒烟通过;打包进去的代码版本是 1.8.0。
  • 干净环境安装:在 Windows 沙盒(全新的 Win10 22H2)里从本页下载 Setup 安装,按 README 发布清单检查正常:没有任何 AI 工具数据时面板、报表和悬浮条正常显示,价格表联网更新,卸载后开机自启条目已清除。
  • 代码审查:都由 Fable 独立审查。
    • 四项新功能审了 4 轮。查出并修复的问题:悬浮条在「窗口全过期、只剩点数」时文案自相矛盾;诊断信息只替换了一种主目录写法;导出失败的提示会被 30 秒刷新清掉;导出进行中关掉报表又立刻重开,保存对话框会弹到新开的窗口上。最后一轮没有发现问题。
    • 额度修正另行审查了多轮。查出并修复的问题:没有窗口、只带着旧点数的快照会把还在生效的窗口顶掉;窗口全过期后,从上一次调用带过来的旧点数会被当成新数据。
  • 价格核对:npm run check-prices 本地核对官方页 223 个值、LiteLLM 42 个型号,无漂移。
  • GitHub Actions:Windows 构建通过(Node 24,测试 77/77)。
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.8.0-win-x64.exe:95a566b99455853bb3f116efae4f209aa73da635d63414ccfd2008fe6791ff7b
    • AI-Code-Usage-Tray-1.8.0-win-x64.exe:2bf75a61430f2c3e797ec6380fa290d0427a101d58d42892b07c9cd0955517ba

AI Code Usage Tray v1.7.2

Choose a tag to compare

@saime428 saime428 released this 09 Oct 12:50

新增

  • 托盘图标改成每家一格,还能告诉你哪家跑完了。悬浮条显示几家,图标就分几格,顺序和悬浮条一样(四家是 2×2,先左后右、先上后下)。
    • 灰是空闲,蓝是在跑,绿是跑完了一轮、你还没看,红是需要你(Claude 弹权限确认,要装 hooks)。
    • 和悬浮条的流光环用同一路信号,一秒内就变,不再等 30 秒刷新。
    • 回答写完约 20 秒后变绿。打开或关上面板(包括鼠标移开后面板自己关上)、那一家又开始跑、或者过了 10 分钟,绿格就变回灰。
    • 鼠标悬停时每格一行,写着那一家的状态和悬浮条上那几个额度窗口。
  • Codex 和 Grok 的流光环在模型长时间思考时不再熄灭。以前最后一次写盘 20 秒后就灭;现在和 Antigravity 一样看各家自己的回合标记:Codex 的 task_started / task_complete(点停止是 turn_aborted),Grok 的 turn_completed。

修正

  • Claude Sonnet 5.5 和 Haiku 5.5 按官方价格页定价。
    • Sonnet 5.5 原来没有自己的一行,沿用了 Sonnet 5 的,缓存读取按官方价(0.05x)的两倍算。
    • Haiku 5.5 原来完全没有价格。现在按每次请求的提示长度计价:提示(输入、缓存读取和缓存写入)超过 10 万 token 时,整次请求按 5 倍算。
    • 已安装的应用一天内会自动拿到新价格表。只有 1.7.2 会按长提示分档,旧版本把每次 Haiku 5.5 请求都按短提示的价格算。

说明

  • 为什么改图标:原来的图标是一个方块,任何会话最近两分钟写过盘就绿,否则是陶土色。它跟 30 秒刷新,比流光环最多晚两分半;开自动模式时从来不会变红;跑完了和空闲看起来一样。
  • 为什么每家一格:也试过按「所有家里最满的额度窗口」给图标上色,但几家会被压成一个数。调研的 14 个同类额度工具,没有一个默认这么做;做得好的会话状态工具(Agent Island、CodePulse 等)都把「跑完了、等你看」作为单独的状态。
  • 只有能准确判断「这一轮结束了」的才会变绿:装了 hooks 的 Claude、Codex、Grok、Antigravity。没装 hooks 的 Claude 和 OpenCode 跑完直接变回灰,免得模型长时间思考时误报。
  • 悬停提示改了:Windows 托盘提示最多显示 127 个字符,原来提示里的金额和 token 数挪到面板里了。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:72/72 通过。新增的测试覆盖:
    • 每格的状态规则:看过、又开始跑、10 分钟到期、启动前结束的不算;
    • 1–5 家的格子布局、颜色的字节顺序、悬停提示不超过 127 个字符;
    • Codex 和 Grok 的回合标记:收尾事件、点停止、超过 4MB 的一行、正在写的半行;
    • Haiku 5.5 的分档:恰好 10 万不算超过,缓存读取和写入都算进提示长度。
  • 回放:把作者本机全部 Codex 日志(244 个文件、约 21.7 万个点)和 Grok 日志(19 个会话、2066 个点)逐行回放,没有一次把还在跑的一轮判成结束。
  • 实机(开发版):
    • 真实数据:正在跑的 Claude 那一格是蓝的,其余三格灰;
    • Codex 一轮进行中是蓝,写入 task_complete 约 20 秒后变绿,打开面板后变灰;
    • 面板开着时一轮结束会变绿,面板自己关上后变灰;面板已经关着时再收到一次多余的关闭事件,绿格不受影响。
  • 干净环境安装:在 Windows 沙盒(全新的 Win10 22H2)里从本页下载 Setup 安装,按 README 发布清单检查正常:没有任何 AI 工具数据时面板、报表和悬浮条正常显示,价格表联网更新,卸载后开机自启条目已清除。
  • 旧版本兼容:用 v1.7.1 的代码读新价格表,照常接受,Sonnet 5.5 的修正生效,Haiku 5.5 按短提示价格算。
  • 代码审查:Fable 独立审了 7 轮(托盘图标 5 轮、价格分档 2 轮) 轮。
    • 托盘图标:五家时悬停提示会超过 127 个字符、截掉最后一家;面板在鼠标移开后会自己关上,最初漏了这条路径;Electron 对已经隐藏的窗口再隐藏也会发事件,多余的关闭会把那段时间结束的一轮当成看过;面板被 Win+D 最小化时状态会不同步;Codex 写出 5MB 的一行之后,每次文件事件主线程卡 43ms(现在 3ms)。以上都已修复,最后一轮没有发现问题。
    • 价格分档:核对脚本原来用阈值的一半检查低档,官方如果调高阈值会看不出来,现在正好用阈值检查。另外补了一条 1 小时缓存写入的测试;第二轮没有发现问题。
  • 价格核对:npm run check-prices 本地核对官方页 229 个值、LiteLLM 42 个型号,无漂移(发版前抓到的两条就是上面修正的 Sonnet 5.5 和 Haiku 5.5)。
  • GitHub Actions:Windows 构建通过(Node 24,测试 72/72);价格检查实跑,官方页 229 个值、LiteLLM 42 个型号,无漂移。
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.7.2-win-x64.exe:04e4db3b0208ed0ca35ef1c40e0a36b324879646d7d722af72183a8e6ace044e
    • AI-Code-Usage-Tray-1.7.2-win-x64.exe:b3815b42489c58b0578ded97e055641056190ae2ff5574c4925a7e5d446ac07e

AI Code Usage Tray v1.7.1

Choose a tag to compare

@saime428 saime428 released this 05 Oct 11:11

新增

  • Antigravity 和 OpenCode 也有流光环了。它们干活时,悬浮条上那一格会绕一圈流动的光:Antigravity 粉、OpenCode 紫,和报表配色一致。
    • Antigravity 的环跟着「这一轮」走:它看 Antigravity 逐步写下的转录,认得出这一轮结束没有,所以模型长时间思考、命令长时间运行时环一直亮着,直到最终回答写完,或者你点了停止,约 20 秒后熄灭。本应用启动时已经在跑的那一轮也能认出来。
    • OpenCode 的环看它数据库的写入。作者不用 OpenCode,这一条还没在真实的 OpenCode 会话上试过;如果你发现它乱闪或不亮,欢迎提 issue。

说明

  • 为什么不看 Antigravity 的数据库:它闲着时开关数据库连接,也会新建、删除数据库旁边的预写日志文件,拿那个判断,环会在没人用时闪。转录只在跑一轮时才写,闲置几分钟一次都没写过。
  • 「这一轮结束没有」的规则是拿作者本机 29 份转录、1672 步逐步回放验证的:从来没有把已经结束的一轮判成进行中,所以环不会亮着不灭。Antigravity 如果中途崩溃、什么都没再写,环最多再亮 10 分钟。
  • 文件监听漏事件的情况也处理了。Windows 的文件监听缓冲不大,Antigravity 每走一步要写十来个文件,装不下时会丢事件。现在一旦发现丢了,就把最近的转录重新判一遍。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:69/69 通过。新增的测试覆盖:
    • Antigravity 每种步骤类型的判断,包括检查点、写了一半的行、超过 64 KB 的行、写坏的行;
    • 数据库收尾写入和备份目录不点亮环;
    • 两个对话并行时,一个结束不熄灭另一个;
    • 启动时认出正在跑的一轮。
  • 实机(开发版,作者本机 Antigravity):
    • 发消息后约 1 秒亮起;
    • 一轮里 2 分钟没有写入,环一直亮着;
    • 最终回答写完约 20 秒后熄灭;
    • 中途点停止,21 秒后熄灭;
    • 一轮跑到一半时重启应用,启动后立刻亮起;
    • 闲置几分钟一次都没误亮。
  • 干净环境安装:在 Windows 沙盒(全新的 Win10 22H2)里从本页下载 Setup 安装,按 README 发布清单检查正常:没有任何 AI 工具数据时面板和报表正常显示,价格表联网更新,卸载后开机自启条目已清除。
  • 文件监听丢事件:用独立进程瞬间写 200 个文件来制造溢出,对照测试各 3 次。不重新判的话,最终回答之后环一直亮着;重新判之后,3 次都正常熄灭。
  • 代码审查:Fable 独立审了三轮。
    • 第一轮用本机转录统计,指出最初的规则只认 3 种步骤、把 10% 的步骤误判成结束,还指出监听丢事件的问题,都已修复;
    • 第二轮指出一种写坏的行可能让主进程抛错,已修复;
    • 最后一轮没有发现缺陷。
  • 价格核对:npm run check-prices 本地核对官方页 219 个值、LiteLLM 40 个型号,无漂移。
  • GitHub Actions:Windows 构建通过(Node 24,测试 69/69);价格检查实跑,官方页 219 个值、LiteLLM 40 个型号,无漂移。
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.7.1-win-x64.exe:772563d3a1e2208c36bf679e270e632220a08f0b1232fbdf49183cc07ebccdef
    • AI-Code-Usage-Tray-1.7.1-win-x64.exe:8cc85de7b54e976c7afb56ab0d433406939aa6fec63330851d99b5c70e6d293c

AI Code Usage Tray v1.7.0

Choose a tag to compare

@saime428 saime428 released this 05 Oct 10:04

新增

  • Antigravity 额度。Antigravity 开着的时候,面板和悬浮条会显示它「设置 → Models」页面上的那几个额度:Gemini 和 Claude/GPT 两组,各有 5 小时和每周窗口,带重置时间。
    • Antigravity 不把额度写到硬盘上,只有正在运行的语言服务手里有,所以应用在本机(127.0.0.1)向这个服务查询,不经过任何外部服务器。
    • 它缓存的数不会跟着用量自己更新,所以本机 Antigravity 一有新用量、某个窗口到了重置时间、以及每 10 分钟,应用会让它刷新一次。实测发完一条消息,下一次 30 秒刷新就看到了新用量,额度 1 秒后更新。
    • Antigravity 关掉后保留最后一次读到的数,标出是多久前的,超过 15 分钟变暗。只装了 agy 命令行时读不到额度:向它要额度得用它自己的登录,可能会弹出浏览器。
  • 悬浮条显示哪几家可以自己选。托盘或悬浮条右键 →「悬浮条显示」:默认是本机检测到的工具,也可以在五家里随意勾选(至少留一家)。
    • Antigravity 和 OpenCode 现在也能放上悬浮条,用的是它们的官方标志。
    • 悬浮条按显示的家数和数字自己算尺寸。屏幕高度放不下展开的卡片时,卡片区可以滚动,每 30 秒刷新不会把滚动位置弹回顶部。

修复

  • Claude Desktop 同一个对话的前几段被列成了单独的 CLI 会话。对话因为上下文用完或回退而接着写进新的转录文件时,旧文件对不上任何 Desktop 会话,会话列表就把它们当成同名的 CLI 会话列出来,作者本机 24h 列表 6 条里有 3 条是这种。现在它们归到这个对话名下:会话列表里一行、报表里一个会话,标题用 Desktop 的。金额逐分不变。

说明

  • 读 Antigravity 额度时,应用会从它的语言服务进程的启动参数里读一个本机访问令牌,只用于向这个服务查询。令牌只留在内存里,不存盘、不发给其他任何地方;隐私政策(PRIVACY.md)已相应更新。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:65/65 通过。新增的测试覆盖:
    • 悬浮条显示哪几家的规则;悬浮条按显示的家数和屏幕大小算尺寸;
    • Antigravity 额度的解析和刷新时机,以及本机接口回了响应头之后卡住的情况:请求必须按时结束,否则 30 秒刷新会整个停住;
    • Desktop 对话的前几段归到同一个会话。
  • 真实数据:
    • Antigravity 额度和它设置页显示的逐项一致,两次核对:Gemini 每周、5 小时都剩 96%,Claude/GPT 100%,重置时间也对上;
    • Claude 今日和 30 天金额改前改后逐分一致。
  • 实机:用开发版截图核对了顶部和右侧两种位置、五家全开、模拟矮屏幕时的封顶滚动、自选两家、两个官方图标。在作者本机从 1.6.0 静默覆盖安装,开机自启保留,启动后 Claude 额度只请求一次、返回 200,安装目录里的代码读到的 Antigravity 额度和设置页一致。
  • 干净环境安装:在 Windows 沙盒(全新的 Win10 22H2)里从本页下载 Setup 安装,按 README 发布清单检查正常:没有任何 AI 工具数据时面板和报表正常显示,价格表联网更新,卸载后开机自启条目已清除。
  • 代码审查:
    • 悬浮条这部分:第一轮由 Opus 审(Fable 两次卡住),第二、三轮由 Fable 审;
    • Antigravity 额度:Fable 独立审了三轮。第一轮指出「接口卡住会让刷新永久停住」和「Antigravity 没开时每 2 分钟起一次 PowerShell」,都已修复并补了测试;
    • 最后一轮没有发现缺陷。
  • 价格核对:npm run check-prices 本地核对官方页 219 个值、LiteLLM 40 个型号,无漂移。
  • GitHub Actions:Windows 构建通过(Node 24,测试 65/65);价格检查实跑,官方页 219 个值、LiteLLM 40 个型号,无漂移。
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.7.0-win-x64.exe:9beb9c1a938aef89ab8d861e2461a2d26ba3a34d586a10b012150e155b605d2c
    • AI-Code-Usage-Tray-1.7.0-win-x64.exe:04ab95155053980f9bcfb3e66308d07f1be8f2de8bfcbb4acb8600150b34c363

AI Code Usage Tray v1.6.0

Choose a tag to compare

@saime428 saime428 released this 05 Oct 04:22

新增

  • 用量报表。托盘菜单「打开用量报表」或面板上的「报表」按钮,打开一个覆盖所有工具的独立窗口:

    • 金额、Token、请求、会话和缓存命中率,并和上一个同样长度的周期对比(今日就是比昨天);
    • 按天、按工具堆叠的趋势图(今日按小时),以及一天里各时段的用量分布;
    • 按工具、按项目(同一目录下不同工具的用量合在一起,Claude Code 的 worktree 归回所在仓库)、最贵的会话、按模型;
    • 范围可选今日 / 7 / 30 / 90 天,可以按工具筛选,图表可在金额和 Token 之间切换。

    命令行也能看同一份报表:npm run usage -- --days 30 --by project(--by 可选 tool、day、hour、model、project、session)。

  • 支持 Antigravity 和 OpenCode。

    • Antigravity:从它本地的会话数据库读取(IDE 和 agy CLI 都支持),按 Gemini 官方 API 价格算等价值;Antigravity 里用的 Claude 模型按 Claude 价算。
    • OpenCode:显示 OpenCode 自己给每条消息记下的金额。
    • 两家都有面板页签(本机有数据时才出现)、会话列表和报表数据。两个数据库都只读打开,不会影响正在写库的工具。
  • 只读新增的数据。每次刷新只读会话文件新追加的部分,读过的每一天都会保留,改统计天数、打开报表都不用重读。实测一个 38 MB 的会话文件追加一行,耗时从整读的 75 ms 降到 1–2 ms。

修复

  • Codex 子代理和 fork 出来的会话,多算少算都有。fork 出来的会话开头会复制一份来源会话的历史,这部分在来源那边已经计过费。旧版的判断方法在新版 Codex 上失效了:子代理在切换模型之前自己做的工作被整段丢掉,而从 Codex Desktop fork 的会话又把复制来的历史重复计了一遍。现在按内容识别副本:复制来的调用,token 数和来源会话里的某次调用一模一样。
  • Codex 会话换到新文件之后的用量没有计入。从 9 月底起,Codex 会把长会话接着写进 rollout-<时间>-<会话id>_<uuid>.jsonl,旧版每个会话只认第一个文件,作者本机最近 7 天约少算 30%。现在一个会话的所有文件都会计入,并且和之前的文件比对,避免把重放的调用再算一遍。
  • resume 过的 Claude 会话可能少算。resume 或 fork 出来的新会话文件里,复制的旧消息可能用量被清零,旧版碰上这份副本就会少算(作者本机 30 天 $0.24)。
  • gpt-6.1-sol 显示为 $0。Codex 在上次核对价格后新上了这个型号,现已按官方价补上。这条修正在价格表里,已安装的 1.5.0 也会在一天内自动拿到。

说明

  • 升级后 Codex 的金额会明显变化,这是纠正,不是数据出了问题。 作者本机:最近 7 天 $294 → $418,30 天 $519 → $676,90 天 $3,533 → $3,465(7 月被重复计算的 fork 历史扣掉了)。经常用 Codex 子代理或长会话的话,最近的金额会变高。
  • 价格表新增 Gemini 一节,并按 Google 官方价格页核对(Gemini 3.6–3.8 Flash 的价格在 2027-01-01 上调,到时会更新价格表)。npm run check-prices 现在也会核对 Gemini。
  • 本地开发改用 Node.js 24(和 Electron 43 内置的版本一致;测试用到了 Node 自带的 node:sqlite)。
  • 安装包和便携版都还没有代码签名,SmartScreen 可能提示,请核对下面的 SHA-256。

校验

  • 本地测试:60/60 通过。新增的测试覆盖:增量读取(追加、半行、文件被改写或截短)、Claude 零值副本、Codex 的各种副本形态(新旧版本的 fork 子代理、切换模型、Desktop fork、fork 的 fork、来源文件太旧或已删除、续写文件)、Antigravity 的 protobuf 解码和备份目录去重、OpenCode 增量读取、报表的周期对比和项目合并。
  • 新旧实现对照:用作者本机的真实数据在 1 / 30 / 90 天上逐项比对 Claude、Codex、Grok 的金额和 token。除了上面列出的修复以外,结果完全一致。另用独立脚本按同样规则重算「同一笔调用被计了几次」,跨文件的重复计费只剩 1 个不同会话之间偶然撞值的数。
  • 代码审查:Fable 子代理独立审查五轮。前四轮各发现真实问题并全部修复,其中三处是旧版就有的 Codex 计费错误(子代理切换模型前的工作被丢、Desktop fork 重复计费、续写文件漏算);第五轮没有发现缺陷。
  • 价格核对:npm run check-prices 本地核对官方页 219 个值、LiteLLM 40 个型号,无漂移(结果见下方 GitHub Actions)。
  • 真机实测:在作者本机从 1.5.0 静默覆盖安装,沿用原安装目录,开机自启保留;启动后 Claude 额度只请求一次,返回 200;直接运行安装目录里的代码出报表,五个工具都能识别。
  • 干净环境安装:在 Windows 沙盒(全新的 Win10 22H2)里从本页下载 Setup,经 SmartScreen「仍要运行」后安装。没有任何 AI 工具数据时面板、报表、悬浮条和开机自启开关都正常,价格表联网更新正常;卸载后开机自启条目已清除。
  • GitHub Actions:Windows 构建通过(Node 24,测试 60/60);价格检查实跑,官方页 219 个值、LiteLLM 40 个型号,无漂移。
  • SHA-256
    • AI-Code-Usage-Tray-Setup-1.6.0-win-x64.exe:bfab03ff92a97891f5dcc9bce611fe82c0ae9f6dfe4ea5b81f243e3033193e4c
    • AI-Code-Usage-Tray-1.6.0-win-x64.exe:f8136f04ba7a752a9cdde347e405256ecf9ca04787c49cb166c6f4c570a33179

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