# OpenCode Monitor OpenCode 状态监控工具,支持实时监控多个 OpenCode 实例的状态,通过 MQTT 或 BLE 蓝牙推送状态信息。 ## 功能特性 - 🔍 **自动发现** - 自动扫描并发现运行中的 OpenCode 实例 - 📊 **实时监控** - 通过 SSE 事件流实时获取状态变化 - 📡 **MQTT 推送** - 支持将状态信息推送到 MQTT Broker - 🟢 **BLE 蓝牙推送** - 通过蓝牙将状态推送到 [AI-Light](firmware/) 等 BLE 设备 - 💾 **配置管理** - 使用 SQLite 存储 MQTT 和 BLE 配置 - 🌐 **HTTP API** - 提供 RESTful API 接口管理配置(详见 [API 文档](docs/api.md)) - 🔌 **WebSocket** - 支持通过 WebSocket 实时推送状态到网页(详见 [API 文档](docs/api.md)) - 🖥️ **跨平台** - 支持 Linux、Windows ## 安装 ### 下载预编译版本 从 `dist/` 目录下载对应平台的可执行文件: - `opencode-monitor-linux-amd64` - Linux x86_64 - `opencode-monitor-linux-arm64` - Linux ARM64 - `opencode-monitor-windows-amd64.exe` - Windows x86_64 - `opencode-monitor-windows-arm64.exe` - Windows ARM64 ### 从源码编译 ```bash # 克隆项目 git clone cd AI-Status-Light # 当前平台(不含 BLE) go build -o bin/opencode-monitor ./cmd/monitor # 当前平台(含 BLE 嵌入) scripts\build.bat --ble # Windows bash scripts/build.sh --ble # Linux/macOS # 仅打包 BLE 中继(供 IDE 调试用) scripts\build.bat --only-ble # 所有平台(不含 BLE) scripts\build.bat ``` ## 使用方法 ### 启动监控 ```bash # 自动发现并监控所有 OpenCode 实例 ./opencode-monitor monitor # 监控指定端口 ./opencode-monitor monitor --ports 4096,4097 # 启动监控 + API 服务 + WebSocket 实时状态页面 ./opencode-monitor monitor --api-addr :8080 ``` 启动监控服务后,访问 `http://localhost:8080` 即可查看实时状态页面。 ### API 服务 ```bash # 启动独立的 API 服务 ./opencode-monitor serve --addr :8080 ``` API 接口详情请参阅 [API 文档](docs/api.md)。 ### 配置管理 ```bash # 查看 MQTT 配置 ./opencode-monitor config list # 设置 MQTT 配置(无认证) ./opencode-monitor config set --broker tcp://127.0.0.1:1883 --topic opencode/status # 设置 MQTT 配置(带认证) ./opencode-monitor config set --broker tcp://127.0.0.1:1883 --username user --password pass --topic opencode/status # 删除配置 ./opencode-monitor config delete 1 ``` ### BLE 蓝牙配置 BLE 中继已嵌入 Go 二进制(使用 `make build-with-ble` 构建时),无需额外文件或 Python 环境。 ```bash # 查看 BLE 配置 ./opencode-monitor config ble list # 设置 BLE 配置(使用默认设备 AI-Light) ./opencode-monitor config ble set # 设置 BLE 配置(自定义设备) ./opencode-monitor config ble set --device MyLight --service-uuid "xxx" --char-uuid "yyy" # 删除 BLE 配置 ./opencode-monitor config ble delete 1 ``` 启动监控时,如果存在启用的 BLE 配置,会自动启动蓝牙中继: ```bash # 启动监控(自动根据配置启用 MQTT 和/或 BLE) ./opencode-monitor monitor --api-addr :8080 ``` ## MQTT 消息格式 消息格式为 JSON: ```json { "port": 4096, "status": "工作中", "code": "busy", "timestamp": "2026-06-03T14:30:00Z" } ``` ### 推送的状态类型 | status | code | 说明 | |--------|------|------| | 空闲 | idle | 会话空闲 | | 工作中 | busy | 会话工作中 | | 重试中 | retry | 会话重试中 | | 修改中 | pending | 会话修改中 | | 思考中 | reasoning | 模型推理中 | | 使用工具中 | using_tool | AI 正在使用工具 | | 等待中 | pending | 工具等待执行 | | 运行中 | running | 工具执行中(可附带工具名,如 `运行中: read`) | | 工具执行完成 | completed | 工具执行完成(可附带工具名,如 `工具执行完成: read`) | | 会话完成 | session_completed | 会话执行完成 | | 等待权限 | permission | AI 向用户申请权限 | | 错误 | error | 会话错误 | ## 命令行参数 ### monitor 命令 ```bash ./opencode-monitor monitor [选项] 选项: --host string 主机地址 (默认 "127.0.0.1") --ports string 端口列表,逗号分隔 (如: 4096,4097,4098) --scan string 扫描端口范围 (如: 4096-4100) --interval int 动态扫描间隔(秒) (默认 5) --db string 数据库路径 (默认 "./data/config.db") --api-addr string API 服务地址 (如: :8080) ``` ### serve 命令 ```bash ./opencode-monitor serve [选项] 选项: --addr string 监听地址 (默认 ":8080") --db string 数据库路径 (默认 "./data/config.db") ``` ### config set 命令 ```bash ./opencode-monitor config set [选项] 选项: --broker MQTT Broker 地址 (必填) --client-id MQTT 客户端 ID (默认 "opencode-monitor") --username MQTT 用户名 --password MQTT 密码 --topic MQTT 主题 (默认 "opencode/status") --enabled 是否启用 (true/false, 默认 true) --db 数据库路径 (默认 "./data/config.db") ``` ### config ble set 命令 ```bash ./opencode-monitor config ble set [选项] 选项: --device 蓝牙设备名称 (默认 "AI-Light") --service-uuid BLE 服务 UUID (默认 "b8b7e001-7a6b-4f4f-9a8b-11c0ffee0001") --char-uuid BLE 特征 UUID (默认 "b8b7e002-7a6b-4f4f-9a8b-11c0ffee0001") --enabled 是否启用 (true/false, 默认 true) ``` ## 项目结构 ``` AI-Status-Light/ ├── cmd/monitor/ │ ├── main.go # 程序入口 │ ├── ble_embed.go # BLE 嵌入声明 (go:build ble) │ └── ble_embed_none.go # BLE 空声明 (go:build !ble) ├── internal/ │ ├── api/ # HTTP API 模块 │ ├── database/ # SQLite 数据库模块 │ ├── discovery/ # 端口发现模块 │ ├── event/ # 事件处理模块 │ ├── monitor/ # 监控器核心模块 │ └── mqtt/ # MQTT 客户端模块 ├── firmware/ # ESP32-C3 硬件固件 │ ├── ble/ # BLE 蓝牙固件 │ ├── mqtt/ # MQTT 固件 │ └── README.md # 硬件说明 ├── scripts/ │ ├── build.bat # Windows 构建脚本 │ ├── build.sh # Linux/macOS 构建脚本 │ ├── ble_relay.py # Python BLE 蓝牙中继脚本 │ └── requirements.txt # Python 依赖 ├── docs/ # 文档 └── Makefile # 构建配置 ``` ## 开发 ```bash # 安装依赖 go mod tidy # 运行测试 go test ./... # 构建(不含 BLE,全平台) scripts\build.bat # 构建(含 BLE,当前平台) scripts\build.bat --ble # 仅生成 BLE 中继(IDE 调试用) scripts\build.bat --only-ble # 或用 Makefile make build make build-with-ble make build-all ``` ## 许可证 MIT License