Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Codex Micro StopWatch 图标

Codex Micro StopWatch

把 M5Stack StopWatch 变成一块有屏幕、有旋钮、有语音和细腻触感的 Codex 桌面控制器。

Hardware PlatformIO macOS License Release

中文 · English · 功能亮点 · 操作说明 · 下载 · 刷写固件 · Bridge 安装

⭐ 如果这个项目让你的 StopWatch 更有用,欢迎点一个 Star。


它是什么

Codex Micro StopWatch 是一套面向 M5Stack StopWatch 和 Codex 桌面端 的开源固件与 macOS Bridge。它把圆形 AMOLED、触摸屏、两颗实体键、麦克风、IMU 和振动马达组合成一块随手可用的 Codex 控制面板:无需在多个窗口间寻找按钮,就能查看任务状态、切换会话、批准或拒绝请求、发送消息、控制推理强度、导航对话并进行语音输入。

这不是 OpenAI、M5Stack 或 Work Louder 的官方产品;它是社区项目。Codex、OpenAI、M5Stack、StopWatch、Work Louder 及相关名称和标识均属于各自权利人。

StopWatch 上的 Codex 会话状态面板 StopWatch 上的推理强度旋钮
六会话状态面板 推理强度触控旋钮

照片中的显示方向取决于设备摆放方式;固件界面与两颗侧键的相对位置保持一致。


功能亮点

六个 Codex 会话,一眼看清

首页的六个环形触摸键对应 Codex 的六个 Agent 槽位。每个槽位会跟随桌面端显示当前状态:

  • 空闲:白色
  • 思考中:蓝色动态状态
  • 已完成 / 有未读结果:绿色
  • 等待批准或回复:橙色
  • 错误:红色
  • 空槽位:低亮度占位状态

直接点按某个圆键即可切换对应会话;快速双击同一会话还可将 Codex 带到前台。

第二页快捷操作

按一下实体 A 键进入快捷操作页,可直接使用六个常用命令:

位置 功能 用途
12 点 SEND 发送当前输入框内容
2 点 SPLIT 从当前对话继续到新对话
4 点 FAST 切换 Fast 模式
6 点 MIC 按住说话,松开结束
8 点 APPROVE 批准当前请求
10 点 DECLINE 拒绝当前请求

两页的触摸键与实体键采用一致的按下/抬起反馈,连续操作仍能保持清晰、紧凑的触感。

中央触控区

中央区域会根据页面和 Codex 当前的旋钮设置自动承担不同功能:

  • 首页轻点:发送输入框内容。
  • 首页拖动:作为径向控制区使用。
  • 首页长按:开始语音输入,松手结束。
  • 快捷页 + Reasoning 模式:连续拖动调节 LOW / MED / HIGH / XHIGH / ULTRA 五档推理强度。
  • 快捷页 + Composer Navigation 模式:旋转移动输入焦点,长按确认。
  • 快捷页 + Conversation Scroll 模式:作为轻量滚轮滚动对话。
  • 快捷页 + Custom 模式:遵循 Codex 当前的自定义旋钮映射。

旋钮模式以 Mac 上 Codex 的设置为准,设备自动跟随,不会私自改写桌面端设置。

为 StopWatch 定制的触感

  • 会话键、功能键、实体键、确认、拒绝、错误和完成事件都有可辨识的反馈。
  • 推理强度跨档时有清晰刻度感;松手后的 UI 回弹只附带一次很轻的尾部触感,不会误读成第二次确认。
  • 长时间滚动采用轻量离散脉冲,避免连续旋转变成持续嗡鸣。
  • 可随时关闭震动,设置会保存在设备中。

语音输入与 macOS Bridge

  • 优先使用 Codex 原生麦克风路径。
  • 当原生路径不可用时,Bridge 可以接收 StopWatch 麦克风音频,调用 macOS 语音识别,并把文字填入 Codex 输入框。
  • 支持普通话和英语识别。
  • 识别结果只填入输入框,不会自动发送;最终发送仍由你确认。
  • Bridge 会自动重连,并同步推理强度与 Codex 当前旋钮模式。

快速唤醒与摇动清空

  • 长按 A 键:将 Codex 窗口带到前台;Bridge 不可用时会回退到原生会话唤醒方式。
  • 亮屏且 Bridge 在线时连续摇动设备:请求清空当前 Codex 输入框。只有 Codex 位于前台并能验证编辑焦点时才会执行,避免误删其他窗口内容。

手机式待机层级

无操作时间 状态 行为
1 分钟 变暗 降低 AMOLED 亮度
3 分钟 灭屏 关闭显示,降低运行功耗,保留 BLE 与触摸唤醒
10 分钟 连接待机 进一步关闭空闲音频资源,继续保留 BLE 与触摸
  • 灭屏后的第一次触摸只负责唤醒,不会误触发命令。
  • 插入外部电源且屏幕点亮时,绿色状态灯慢闪;拔线、灭屏和连接待机时熄灭。
  • StopWatch 的状态灯是单色绿色 LED,无法按电量改变颜色。

支持的硬件与系统

唯一完整支持的设备

项目 要求
开发板 M5Stack StopWatch(SKU C152)
芯片 ESP32-S3R8
屏幕 1.75 英寸圆形 AMOLED 触摸屏
存储 16 MB Flash、8 MB PSRAM
设备功能 两颗可编程按键、振动马达、麦克风、扬声器、BMI270 IMU、450 mAh 电池
固件工具 PlatformIO Core 或 VS Code 的 PlatformIO IDE
桌面端 Codex 桌面端
可选 Bridge macOS 13 或更高版本;完整体验建议使用当前版本 Codex

固件直接使用 StopWatch 的显示、触摸、电源、音频、马达和传感器布局,不支持仅仅因为同为 ESP32-S3 就刷到 CoreS3、Dial、Core2、Cardputer、Atom、普通 ESP32-S3 开发板或其他 M5Stack 设备。移植到其他硬件需要重新适配。

官方硬件资料:M5Stack StopWatch 文档。

功能依赖

  • 会话键、快捷命令、发送和基本状态显示依赖 Codex 的 Codex Micro 支持。
  • 设备麦克风回退、摇动清空、精确推理强度回读、窗口唤醒和旋钮模式同步需要 macOS Bridge。
  • Bridge 目前只面向 macOS;Windows 和 Linux 尚未提供 Bridge。
  • Codex 桌面端更新可能改变本地状态或辅助功能行为;若某项集成功能失效,请先查看仓库 Issues。

操作说明

实体按键

操作 A 键 B 键
单击 在“会话页 / 快捷页”之间切换 发送当前输入框内容
双击 开启或关闭声音提示 开启或关闭震动反馈
长按 将 Codex 带到前台 按住说话,松开结束

单击需要等待约半秒来排除双击,因此页面切换或发送会在双击判定窗口结束后执行。B 键发送只保留按下时的触感,不会在延迟发送时再次反振。

会话页

  1. 查看六个槽位颜色,判断各会话当前状态。
  2. 点按槽位,切换到对应会话。
  3. 快速双击同一个槽位,将 Codex 带到前台。
  4. 轻点中央区域,发送当前输入框。
  5. 在中央区域拖动,使用径向控制。
  6. 长按中央区域进行语音输入,松手结束。

快捷页

  1. 单击 A 键进入快捷页。
  2. 点按外围六个快捷键执行对应命令。
  3. 在中央旋钮上沿圆周拖动,控制 Codex 当前设置的旋钮功能。
  4. Reasoning 模式下,跨过档位时预览目标,松手后提交目标。
  5. Composer Navigation 模式下,长按中央旋钮可确认当前焦点。
  6. 再次单击 A 键返回会话页。

语音输入

  1. 在 Codex 中打开目标对话并确保输入框可用。
  2. 长按 B 键、长按首页中央区域,或按住快捷页的 MIC。
  3. 看到录音动画后开始说话。
  4. 松开后等待识别结果写入输入框。
  5. 检查文字,确认无误后再按 B、轻点首页中央区域或按 SEND。

如果 Codex 原生语音通道在线,设备会优先使用它;否则在 Bridge 在线时自动使用 StopWatch 麦克风回退。

唤醒、灭屏与关机

  • 任何实体键或触摸都会刷新待机计时。
  • 灭屏后,第一次触摸仅唤醒屏幕;松手后再点一次才会执行命令。
  • 短按电源键可开机/复位;按 M5Stack 官方说明,快速双击电源键可关机。

快速开始

准备清单

  1. M5Stack StopWatch(C152)。
  2. 支持数据传输的 USB-C 线。
  3. 安装并登录 Codex 桌面端。
  4. 安装 Git 与 PlatformIO Core。
  5. 如需 Bridge 功能,准备一台 macOS 13+ 的 Mac,安装 Xcode Command Line Tools,并允许蓝牙、语音识别和辅助功能权限。

获取项目

git clone https://github.com/huaxx-lab/codex-micro-stopwatch.git
cd codex-micro-stopwatch

下载已编译版本(推荐)

不想自行编译时,可直接打开 GitHub Releases 下载:

  • codex-micro-stopwatch-*-full.bin:完整合并固件,写入地址为 0x0。
  • codex-micro-stopwatch-*-firmware.zip:完整固件、分段镜像、刷写说明与许可证。
  • Codex-Micro-Bridge-*-macOS-universal.zip:适用于 Apple Silicon 与 Intel Mac 的 Bridge。
  • SHA256SUMS.txt:下载文件的 SHA-256 校验值。

Release 页面提供中英文安装说明。请只从本仓库 Release 下载,并在需要时使用校验文件确认完整性。


刷写固件

1. 安装 PlatformIO

使用 Homebrew:

brew install platformio

也可以按照 PlatformIO Core 官方安装说明 安装。

确认安装成功:

pio --version

2. 让 StopWatch 进入下载模式

  1. 用 USB-C 数据线连接 StopWatch 与电脑。
  2. 长按电源键约 2 秒。
  3. 看到绿色 LED 亮起后松开。
  4. 查看串口:
pio device list

macOS 常见形式是 /dev/cu.usbmodem...,不同电脑上的数字会不同。Linux 通常是 /dev/ttyACM... 或 /dev/ttyUSB...;Windows 通常显示为 COM...。

3. 构建

pio run -e m5stack-stopwatch

首次构建会下载已固定版本的依赖,需要联网。

4. 上传

PlatformIO 能自动识别唯一串口时:

pio run -e m5stack-stopwatch -t upload

如果电脑上有多个串口,请显式指定:

pio run -e m5stack-stopwatch -t upload --upload-port /dev/cu.usbmodemXXXX

把示例端口替换成 pio device list 显示的实际端口。上传结束出现校验成功并自动复位后即可拔线使用。

5. 可选:查看启动日志

pio device monitor -b 115200 -p /dev/cu.usbmodemXXXX

退出串口监视器通常使用 Ctrl+C。

常见刷写问题

找不到串口
  • 确认使用的是数据线,不是仅充电线。
  • 重新执行下载模式步骤:连接 USB-C,长按电源键约 2 秒,绿灯亮后松开。
  • 换一个 USB 端口或数据线,再运行 pio device list。
  • 关闭可能占用串口的监视器、Arduino IDE 或其他刷机工具。
上传过程中断

重新进入下载模式,再用 --upload-port 显式指定端口。不要在写入期间拔线。

固件已上传但 Codex 没有连接
  • 确认电脑蓝牙已打开。
  • 等待系统完成首次配对与设备枚举。
  • 重新启动 Codex,或让 StopWatch 重新开机。
  • 如果之前配对过其他固件版本,可在系统蓝牙设置中移除旧的 Codex Micro 后重新连接。

安装 macOS Bridge(可选)

Bridge 是一个常驻菜单栏的轻量应用。它负责设备麦克风回退、窗口唤醒、摇动清空、推理强度回读和旋钮模式同步;不安装 Bridge 时,原生会话键与快捷命令仍可使用。

1. 构建并安装

Bridge 需要 Apple 的 Swift 编译工具。尚未安装 Xcode Command Line Tools 时先执行:

xcode-select --install

按系统窗口完成安装后,在仓库根目录执行:

zsh mac-companion/build.sh

默认安装位置:

~/Applications/Codex Micro Bridge.app

脚本使用 Xcode Command Line Tools 提供的 Swift 工具链,生成本地 ad-hoc 签名应用;它不是经过 Apple 公证的发行包。

2. 首次启动

open "$HOME/Applications/Codex Micro Bridge.app"

菜单栏会出现波形麦克风图标。首次运行请按系统提示授予:

权限 用途
蓝牙 与 StopWatch 的附加 BLE 服务通信
语音识别 把 StopWatch 麦克风音频转换为文字
辅助功能 激活 Codex、填入文字并安全清空当前输入框

如果没有弹出辅助功能提示,可从 Bridge 菜单选择 “授予辅助功能权限”,或前往:

系统设置 → 隐私与安全性 → 辅助功能

开启 Codex Micro Bridge 后,退出并重新打开 Bridge。

首次切换到这个公开版 Bundle Identifier 时,macOS 可能会把它视为新的辅助功能客户端,需要重新授权一次。

3. 使用菜单栏

  • 查看当前连接或识别状态。
  • 选择“重新连接”。
  • 切换普通话或英语识别。
  • 重新请求辅助功能权限。
  • 退出 Bridge。

4. 更新 Bridge

拉取新版本后重新执行:

git pull
zsh mac-companion/build.sh

脚本会在临时目录构建完成后替换已安装应用。更新后重新打开即可。

5. 开机自动启动(可选)

在 macOS 中打开:

系统设置 → 通用 → 登录项

点击 +,选择 ~/Applications/Codex Micro Bridge.app。

6. 卸载 Bridge

先从菜单栏退出 Bridge,然后删除:

rm -rf "$HOME/Applications/Codex Micro Bridge.app"
rm -f "$HOME/Library/Logs/CodexMicroBridge.log"

如不再使用,也可以在系统设置中移除对应的蓝牙、语音识别和辅助功能权限。


隐私说明

  • 固件和 Bridge 都在本地运行,没有项目自建的云服务或遥测后台。
  • Bridge 会读取 Codex 本地配置与状态,用于同步当前旋钮模式、当前对话和推理强度;不会修改旋钮配置文件。
  • 语音识别优先请求 macOS 支持的设备端识别。实际是否完全离线取决于 macOS、语言包和系统可用性。
  • 识别文本只在菜单栏短暂显示并填入 Codex,不写入 Bridge 日志。
  • Bridge 的诊断日志位于 ~/Library/Logs/CodexMicroBridge.log,有大小上限,不记录语音转写正文。
  • 辅助功能权限仅用于 Codex 窗口激活、文本填入和经验证的输入框清空。
  • 公开仓库不包含编译后的 Bridge 应用、私钥、证书、个人配置、语音数据或本机日志。

测试

运行不需要硬件的完整契约测试:

zsh tests/run.sh

构建生产固件:

pio run -e m5stack-stopwatch

构建带硬件验收入口的测试固件:

pio run -e m5stack-stopwatch-test

硬件验收脚本面向开发调试,需要官方设备工具包以及明确的串口环境变量,不是普通用户安装所必需。


项目结构

.
├── assets/                 README 图片
├── mac-companion/          macOS 菜单栏 Bridge 与测试
├── src/                    StopWatch 固件
├── tests/                  设备、桌面映射与安全契约测试
├── partitions.csv          ESP32-S3 Flash 分区
└── platformio.ini          PlatformIO 构建配置

兼容性与已知限制

  • 仅完整支持 M5Stack StopWatch C152。
  • Bridge 目前仅支持 macOS。
  • 状态灯为单色绿色,无法显示多种充电颜色。
  • 为保持 BLE 会话,连接待机不会进入会断开 BLE 的深度睡眠。
  • Codex 桌面端不是本项目的一部分,其更新可能改变本项目依赖的集成行为。
  • macOS Bridge 使用本地 ad-hoc 签名,不是公证发行包;适合从源码自行构建。
  • 本项目不包含 OpenAI 服务访问权限;你仍需要自行安装、登录并获得可用的 Codex 访问资格。

参与贡献

欢迎提交 Issue 和 Pull Request。报告问题时请尽量包含:

  1. StopWatch 固件提交版本。
  2. macOS 与 Codex 版本。
  3. 是否安装 Bridge。
  4. 可以复现问题的具体操作顺序。
  5. 与问题相关的串口日志或 Bridge 状态;提交前请先删除个人路径、对话内容、令牌和其他隐私信息。

不要在 Issue 中粘贴 GitHub Token、API Key、Cookie、完整 Codex 对话、语音内容或其他凭据。


许可证与致谢

本项目使用 MIT License 发布。

感谢:


由 huaxx-lab 制作。
如果项目对你有帮助,欢迎 ⭐ Star、反馈体验或参与改进。

About

把 M5Stack StopWatch 变成 Codex 桌面控制器:六会话状态、快捷操作、推理旋钮、语音输入、定制震感与连接待机。

Topics

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages