这周大半时间在折腾盯 AI 额度的工具和几个自用小工具。

Agent HUD 的 Grok 额度总是过期

菜单栏工具里 Grok 一栏长期显示"去登录 Grok CLI"加一个几天前的旧百分比,哪怕账号一直登着。查下来根因是 Grok CLI 的 access token 只活 6 小时、且只有 CLI 启动时才续期,工具直接读 ~/.grok/auth.json 里的 token 去查接口,过期就拿 401、只能显示旧读数。我给 fork 写了个修复:过期时先跑一次 grok models 让 CLI 自己续期再重读,自己绝不碰 refresh_token,并给上游开了 PR。详见这篇。

ESP32 桌面小板:加 OpenCode、token 面板、按厂商对齐

给桌上那块 ESP32-P4 的 HUD 板改了固件和 bridge。修了一个"Codex 显示两组额度"的问题——第二组是已登出的旧账号,数据层把它当成最后一次读数留着,bridge 当成在线账号发给了板子,改成只发当前登录的账号。加了 OpenCode / OpenCode Go 的额度和 DeepSeek 余额,右栏从会话列表换成每个 agent 的 token 用量(今天 / 最近 7 天,cache 单独算),最后按厂商分组、让板子的卡片顺序和高度跟电脑上的 Agent HUD 对齐。板子没有 OTA,刷固件得插 USB——用 P4 自带的 USB 口(/dev/cu.usbmodem*)921600 能直接刷,不一定要走 CH340 那个口。

让四个 AI CLI 显示完整执行命令

在公司发的 Linux 笔记本上,想让 Claude Code / Codex / Gemini / OpenCode 执行命令时显示完整 CLI 而不是折叠摘要。逐个逆了二进制确认开关:Claude Code 有官方 verbose(写进 ~/.claude/settings.json);Codex 用 [tui] raw_output_mode = true(代价是纯文本无配色、输出不截断);Gemini 没有持久配置项——显示那行写死了"高度 1 行、超出截断",只能给安装包打补丁(npm 升级后会被覆盖,要重打);OpenCode 本机没装没动。改前都备份了配置。

微信在 Mac 上截图空白

微信主窗口一截图就空白。排除了 App 被篡改和系统管控之后,定位到是 wechat.dylib 调了 setSharingType:,属于应用层防截屏,这个版本里还没放出关闭开关。日常用微信自带截图 ⌃⌘A 或把聊天拖成独立窗口就能正常截。详见这篇。

speak-drill:跟读发音练习 CLI

写了个 Python 小工具练英语发音:电脑用 say 领读 → 自己读 → 本地 mlx-whisper 识别并逐词比对,同一条 3 次读不对就把录音发给 wenkangnas.local (192.168.1.4) 上的 Gemini 中转,让它指出是哪个音素/重音/连读的问题。后来加了本地网页 GUI 和一个双击就打开的 macOS app(后台起服务再开浏览器,录音在浏览器里做所以 app 本身不要麦克风权限)。两个坑:wav 直接当表单文件传会被服务端按 audio/x-wav 拒收,改成编码进请求正文;带音频的分析用 pro 模型会超过服务端 120s 超时,默认换成 flash。只用电脑 TTS 生成的录音测过识别和分析,真麦克风那一遍还没走。顺手发现中转的某个接口会明文返回 Gemini API key,记下来待修。

macOS 多输出音频设备 + 音量工具

“扬声器+录音"这种多输出设备 macOS 不给总音量,菜单栏滑块拖了没用,得改每个子设备自己的音量。写了个读写 CoreAudio 的小工具直接设扬声器音量,又照着现有多输出设备新建了一个"AirPods+录音”(AirPods 做主时钟、BlackHole 勾漂移校正),外放和戴耳机各切一个、两种都能录到声音。系统不支持给多输出设备改名,改名是靠删掉重建实现的,UID 保持不变。

其它零碎

  • OBS 录不到系统声音:Main Screen 音频源没分配到任何音轨(mixers=0),改成分配到所有音轨(mixers=255)就行。改前 OBS 没开着,不会被覆盖;没实录验证,留给自己确认。
  • OpenCode 里同一模型显示两遍:一个是订阅的 OpenCode Go,一个是按量付费的 Personal provider(没余额,所有调用都 Insufficient account funds)。在 ~/.config/opencode/opencode.jsonc 里加 "disabled_providers": ["opencode"] 把按量付费那个关掉,没登出(两个 provider 共用一个账号,登出会把订阅也切了)。
  • 测了一下 TypeSafe 的 Jev 模型:它是只返回是/否概率或选项的分类/判断模型。两轮共 133 题,常规判断题(情感、蕴含、指代、垃圾识别、简单算术)又快又准;多步推算、追踪多次状态变化、数字母这类明显会错,错的时候它给出的置信度也低——可以按它的置信度设阈值,拿不准的转给更强的模型。结论记进了共享记忆给其它 AI 参考。