PROJECT · Open Source Beta
AI Coding Status Bar
一个运行在 macOS 菜单栏的 Codex 本地状态中心,用真实 Session 数据显示运行任务、最近对话与 Token Usage。
- 背景
- 使用 Codex 处理多个项目时,任务状态、Session 和 Token Usage 分散在终端与不同对话中。为了减少频繁切换,我希望在 Mac 桌面上随时看到真实的 AI Coding 运行状态。
- 要解决的问题
- 如何在不依赖云端模拟数据的前提下,准确识别本机 Codex 正在运行的任务、汇总当日 Token,并把跨项目历史整理成一个低资源占用的原生面板。
- 原有流程
- 在多个终端和 ChatGPT 对话之间切换,逐个确认任务是否仍在运行。
- 从 Session 日志中人工查找项目、任务与 Token 信息。
- 无法快速区分 Completed、Failed 与 Interrupted,也缺少统一的历史视图。
- 解决方案
- 使用 SwiftUI 构建原生菜单栏与可折叠窗口,通过本地 Collector 增量解析 Codex JSONL Session、Writer Lock 和可靠的账户限额响应,再统一写入 SQLite 并呈现为状态面板。
- AI 与人工责任
- Local Collector读取 Codex Session、Writer Lock 和 Token 事件,标准化任务状态并持续增量更新。macOS App以 SwiftUI 菜单栏和桌面窗口呈现任务、用量、历史、隐私模式与诊断信息。隐私边界数据默认只保存在本机;不上传任务标题、项目路径、Session 内容或 Token 历史。
- 工作流程或架构
- Codex Data Sources:读取本地 Session JSONL、Archived Sessions 与 Writer Locks。
- Collector:增量解析任务生命周期、Token Delta、项目路径和最近活动。
- Normalized Model:统一 Running、Completed、Failed、Interrupted 与 Unknown 状态。
- SQLite:保存 Checkpoint、任务、Token Events 与可靠的 Weekly Limit。
- SwiftUI:通过菜单栏和可折叠窗口展示跨项目实时状态。
- FSEvents:以文件变化驱动刷新,并保留 30 秒低频兜底检查。
- 处理流程
- 验证 Codex 本地数据目录、Session JSONL 格式、Token 事件与 Writer Lock 行为。
- 实现增量 Parser 与 SQLite Checkpoint,避免每次重新读取全部历史。
- 用真实 Session 验证 Running、Completed、Failed 与 Interrupted 状态。
- 加入跨项目 Recent Conversations、Today Tokens 和可靠的 Weekly Usage。
- 完成隐私模式、登录启动、诊断页和 Universal 2 自动构建。
- 通过 GitHub Actions 验证测试、Release 编译、DMG/ZIP 和双架构产物。
- Demo 或截图

匿名化演示界面:项目名与任务内容使用通用英文文本,不包含真实工作信息。 - 当前结果
- 已公开发布 v1.2.0-beta.1:提供 Universal 2 DMG/ZIP、自动化测试、SHA-256 校验,以及真实 Codex 状态和 Token Usage 展示。
- 局限与风险
- 当前版本依赖 Codex 本地 JSONL、Writer Lock 与 app-server 等非稳定接口;纯云端 ChatGPT 对话没有可靠本地数据源,因此不会伪造展示。Beta 使用 ad-hoc 签名,首次打开可能需要 macOS 手动允许。
- 下一步计划
- 完成 Apple Developer ID 签名与 Notarization。
- 增加应用内自动更新与更完整的兼容性 Fixtures。
- 继续降低大型 Session 历史下的索引开销。
- 在 Collector 协议稳定后,再评估 Claude Code、Cursor 等新数据源。
