实验室编号 172026

嵌入式固件 / 桌面状态伙伴

Codex 桌面伙伴 · StickS3 固件

把任务状态、审批提醒和多账号额度,放进桌面上的一块小屏

项目
嵌入式固件 / 桌面状态伙伴
角色
产品设计、固件实现、桥接程序与真机调试
状态
运行中
Codex 桌面伙伴 · StickS3 固件 项目界面

项目概览

我把 StickS3 的 Codex 菜单升级成一位桌面状态伙伴:土土会显示空闲、运行中、等待批准与等待操作;新审批会响铃并自动跳转,两个实体按键可以批准或拒绝,后续页面继续查看多账号额度。

为什么做

额度看板解决了“还有多少可用”的问题,但实际使用 Codex 时,更常见的中断是没有及时发现任务已经做完、正在等待批准,或者停在需要我补充信息的节点。一直盯着桌面客户端没有必要,错过提醒又会让任务白白等待。

于是我把 Codex 菜单改成一块视线边缘的任务状态屏:抬眼先知道任务正在工作还是等我,再决定是否伸手操作;额度信息退到后续分页,需要时再切过去看。

先看到任务,而不是先看到额度

Codex 菜单的第一页现在是任务面板,侧键再依次切换到每个额度账号。桥接程序持续汇总当前任务,固件把状态翻译成一眼能读懂的文字和动作:

状态屏幕提示土土的表现
空闲当前没有任务安静休息
运行中N 个任务运行中保持警觉并眨眼
等待批准等待批准举起前爪提醒
等待操作等待你的操作进入关注姿态
状态未知任务状态未知保留中性姿态

“土土”的原型是橘白猫吐司,角色保留了鼻子旁的一小撮黄色毛发,并用四帧蜡笔风像素图做轻量动画。动画约每 420 毫秒切帧,只重绘角色区域,避免整块 135 × 240 屏幕反复闪烁。

把等待批准变成实体提醒

当桥接发现新的待批准请求时,设备只播放一次短促高音,并从当前任何页面自动跳回任务面板。只要批准还没处理,页面就保持锁定,不允许长按正面键退回主页,避免提醒被意外藏起来。

此时两枚按键直接对应决定:侧键拒绝,正面键批准。操作后屏幕会依次显示“正在处理”以及“已批准”“已拒绝”或“操作失败”。执行前,桥接程序还会重新确认目标任务此刻仍在等待批准,避免旧的按键动作落到另一个任务上。

这条审批链路由本机桥接程序定位准确任务,并在 Codex 桌面端执行一次批准或拒绝;它与读取额度所用的 App Server 接口相互独立。这样既能完成实体交互,也不会把桌面控制能力或账号凭据下放到设备。

一条分层的数据链路

StickS3 不会自己登录 ChatGPT,也不保存 Codex 凭据。任务状态、审批动作和额度数据被拆成三个边界清晰的层级:

层级负责什么不保存什么
Codex App Server在各自认证环境中读取账号与额度窗口不向设备暴露登录凭据
Windows USB 桥接汇总桌面任务状态与多账号额度,定位审批目标并转发串口指令日志不记录 Token、Cookie 或完整邮箱
StickS3 固件显示土土、任务状态和额度,发送批准、拒绝与刷新指令不把任务与额度数据写入 Flash

额度部分通过 Codex App Server 的 account/rateLimits/read 获取。官方返回当前窗口的 usedPercent、窗口长度 windowDurationMins 和下次重置时间 resetsAt;桥接程序换算成剩余比例和本地重置时间,再压缩为适合小屏的串口数据。Codex App Server 官方文档

多账号怎样保持隔离

每个账号使用独立的认证目录和独立的 Codex App Server 进程。退出或切换某个账号不会覆盖其他账号的登录状态,桥接程序只读取各实例返回的额度结果,再用自定义昵称组织显示。

更换电脑时,StickS3 固件无需重刷;在新电脑上重新安装桥接程序,并逐个完成账号登录即可。旧电脑的认证文件不作为迁移材料,避免把登录状态当成普通配置复制。

只有电脑在线时才出现

Codex 功能依赖电脑端握手,而不是依赖设备是否正在充电:

  • 连接电脑且桥接程序运行时,主页显示 Codex 入口。
  • 连接普通充电器、使用仅供电线缆,或桥接未运行时,主页不显示入口。
  • 桥接每两秒发送一次心跳,内容包含任务状态、运行任务数和连接状态。
  • 设备约 6.5 秒没有收到心跳,就清除内存中的任务与额度数据并隐藏入口。
  • 如果断开时正在 Codex 页面,设备提示电脑已断开并返回主页,不继续展示旧状态。

看得到入口,就表示电脑端此刻确实在线;拔线后不会留下容易误判的缓存结果。

让桥接常驻但不打扰

桥接程序可以在 Windows 登录时通过启动快捷方式静默运行,不需要管理员权限,也不弹出终端窗口。它会等待 StickS3 插入,连接后开始心跳与数据同步;设备暂时不在电脑旁时,程序保持安静,不占用使用者注意力。

这个常驻方式让动态菜单真正可用:不是每次插线后再手动启动脚本,而是设备接上电脑,Codex 入口自然出现。

额度页仍然保留

通过 USB 连接电脑并显示双额度窗口的 StickS3 渲染

额度渲染图中的账号名与数值均为演示数据。任务面板之后的每一页对应一个账号,顶部显示昵称和页码,例如 MAIN · 2/3。中部两张卡片分别显示短周期与长周期额度,只保留额度周期、剩余百分比、进度条和本地重置时间;短周期使用薄荷绿,长周期使用暖金色。

早期版本直接放大百分比,造成文字与上下内容重合。真机检查后,我重新限定数字字号和卡片高度,把两个额度窗口分开排版,并压缩说明文字,让页面在实际屏幕上能够一眼区分层级。

两个按键怎样操作

Codex 页面会根据当前状态改变按键含义:

场景侧键正面键长按正面键
普通任务页或额度页切换任务面板与各账号请求立即刷新返回主页
等待批准拒绝当前请求批准当前请求暂时禁用,页面保持锁定

批准或拒绝完成后,设备先显示结果,再恢复常规导航。高频决策保持一步完成,查看与刷新则继续沿用原来的轻量操作,不增加触屏或二级菜单。

当前进展

当前源码已经包含任务状态首页、土土的四种状态动画、待批准提示音、自动跳转与页面锁定、实体批准和拒绝、多个额度账号分页,以及隐藏启动与插入等待。桥接程序会观察最多八个运行中的 Codex 任务,并把运行数和最需要关注的状态发送给设备。

此前额度链路已经在 Windows 与 StickS3 真机上跑通:设备通过串口接收两个隔离账号的真实额度数据,账号切换、手动刷新、双额度窗口与重置时间均已接入。新功能则继续沿用同一条 USB 边界——电脑负责认证、任务定位和桌面操作,StickS3 只承担提醒、显示与明确的实体指令。

© 2026 miaoyimin