Skip to content

Repository files navigation

Codex 状态浮窗

一个轻量、原生的 macOS 悬浮球,用来自动显示 Codex 当前任务状态和本周额度。

Native macOS floating status widget for Codex. Local-only, open source, and dependency-free.

深色标准尺寸预览

效果

  • 默认显示一个 56 × 56 的小悬浮球,状态灯固定在中央。
  • 鼠标停留 0.4 秒后展开,浮窗会依据屏幕空间自动选择方向。
  • 绿灯:Codex 有任务,正在工作。
  • 黄色状态:任务已经完成,等待查看;若仍有其他任务运行,中心保持绿灯并由黄色外圈提醒。
  • 红灯:当前没有进行中的任务,也没有待查看的完成提醒。
  • 灰灯:暂时无法读取 Codex 数据,避免把读取失败误报为空闲。
  • 新任务完成时,悬浮球边框会在 1.8 秒内高亮三次,并保持低亮提醒,直到切回 Codex 或手动标记为已查看。
  • 本周额度低于 50% 显示暗黄色,低于 30% 显示红色。
  • 支持拖动定位、单击展开、跨桌面显示、外接屏热插拔和位置恢复。
  • 展开和收起使用可打断的图层遮罩动画,快速移入、移出时会从当前位置自然反向。
  • 数据每 1.5 秒在本机同步一次。

个性化

右键悬浮球即可调整:

  • 尺寸:紧凑、标准、大号、特大;
  • 主题:跟随系统、浅色、深色;
  • 语气:简洁、温和、活泼,每种状态会轮换几句同义表达;
  • 悬停响应:0.2、0.4、0.8 秒;
  • 保持展开、重置位置、立即刷新和标记任务已查看。

应用会遵循 macOS 的“减少动态效果”“减少透明度”“增强对比度”和“不以颜色区分”辅助功能设置。开启“不以颜色区分”后,工作中、待查看和空闲会分别使用实心圆、圆环和短横。

隐私

应用不联网,不收集遥测,不读取 Codex 认证信息。

它仅以只读模式访问:

  • $CODEX_SQLITE_HOME/state_*.sqlite 中的活跃任务索引;
  • $CODEX_HOME/sessions/ 下数据库明确引用的 .jsonl 任务事件。

默认的 CODEX_HOME~/.codexCODEX_SQLITE_HOME 默认跟随它。数据库会启用 SQLite query_only,任务文件也会经过路径、后缀、普通文件和真实路径校验。

安装

Releases 下载 universal2 ZIP,解压后将 Codex 状态浮窗.app 放入“应用程序”。同一个安装包支持 Apple 芯片和 Intel Mac。

  • v1.2.0:推荐版本,包含完成提醒和更流畅、可打断的动画。
  • v1.1.0:保留原先更简洁的完成交互,下载包继续提供。

首次打开若被 macOS 拦截,可在 Finder 中右键应用并选择“打开”。Release 使用 ad-hoc 签名,没有 Apple Developer ID 公证。

本地构建

要求:

  • macOS 13 或更高版本
  • Apple Command Line Tools
make test
make package

应用生成在 build/,可分发 ZIP 生成在 dist/。安装当前构建:

make install

默认生成 universal2 安装包。也可通过 TARGET_ARCH=arm64TARGET_ARCH=x86_64 生成单架构版本。

生成界面预览:

zsh scripts/render-previews.sh

项目结构

Sources/App/                 悬浮窗、设置、布局和文案
Sources/Monitoring/          Codex 数据读取与事件解析
Tests/                       解析器、监控器、设置与渲染测试
Resources/Info.plist         macOS 应用元数据
scripts/                     构建、测试和安装脚本
docs/images/                 由真实 AppKit 视图生成的预览

状态判定

监控器读取 Codex 任务事件:

  • task_started → 绿灯
  • task_complete / turn_aborted → 产生未查看完成提醒;无活跃任务时变为黄灯,有活跃任务时保持绿灯并显示黄色外圈
  • 存在未查看完成项时,单击悬浮球 → 展开并显示“有任务已完成”,不会提前清除提醒
  • 用户切回 Codex 或选择“标记为已查看” → 清除完成提醒

长任务会通过渐进式尾部扫描识别,后续更新使用增量解析和文件身份缓存。实现会处理 UTF-8 分片、半写入事件、超过 32 MiB 的单次增长、日志轮转、未来数据库版本和暂时读取失败。为避免异常中断永久显示绿灯,超过 12 小时且没有新事件的任务会被视为过期。本周额度到达重置时间后会自动失效。

Codex 的本地存储格式属于内部实现,未来版本可能变化。若状态失准,请附上 macOS 与 Codex 版本提交 Issue,避免上传任何真实任务内容。

参与贡献

请阅读 CONTRIBUTING.mdSECURITY.md

许可

0BSD:可以免费使用、复制、修改、分发,也可以用于商业项目。

About

macOS 原生 Codex 状态浮窗:自动显示任务状态与本周额度,纯本地、零联网。

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages