Sem descrição

moki cb9c9cc7f8 bug 修复 há 1 semana atrás
cmd b3eb2aed4f 修复bug há 1 semana atrás
docs b3eb2aed4f 修复bug há 1 semana atrás
firmware cb9c9cc7f8 bug 修复 há 1 semana atrás
internal b3eb2aed4f 修复bug há 1 semana atrás
scripts 88561522b3 为避免乱闪去掉完成灯效 há 2 semanas atrás
web f11f5a8ed0 通过web ble进行配置 há 1 semana atrás
.gitignore 853fbb17a0 蓝牙使用py中继方案 há 2 semanas atrás
Makefile ddb998f06b 蓝牙使用py中继方案 há 2 semanas atrás
README.md b3eb2aed4f 修复bug há 1 semana atrás
go.mod b3eb2aed4f 修复bug há 1 semana atrás
go.sum b3eb2aed4f 修复bug há 1 semana atrás

README.md

OpenCode Monitor

OpenCode 状态监控工具,支持实时监控多个 OpenCode 实例的状态,通过 MQTT 或 BLE 蓝牙推送状态信息。

功能特性

  • 🔍 自动发现 - 自动扫描并发现运行中的 OpenCode 实例
  • 📊 实时监控 - 通过 SSE 事件流实时获取状态变化
  • 📡 MQTT 推送 - 支持将状态信息推送到 MQTT Broker
  • 🟢 BLE 蓝牙推送 - 通过蓝牙将状态推送到 AI-Light 等 BLE 设备
  • 💾 配置管理 - 使用 SQLite 存储 MQTT 和 BLE 配置
  • 🌐 HTTP API - 提供 RESTful API 接口管理配置(详见 API 文档
  • 🔌 WebSocket - 支持通过 WebSocket 实时推送状态到网页(详见 API 文档
  • 🖥️ 跨平台 - 支持 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

从源码编译

# 克隆项目
git clone <repository-url>
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

使用方法

启动监控

# 自动发现并监控所有 OpenCode 实例
./opencode-monitor monitor

# 监控指定端口
./opencode-monitor monitor --ports 4096,4097

# 启动监控 + API 服务 + WebSocket 实时状态页面
./opencode-monitor monitor --api-addr :8080

启动监控服务后,访问 http://localhost:8080 即可查看实时状态页面。

API 服务

# 启动独立的 API 服务
./opencode-monitor serve --addr :8080

API 接口详情请参阅 API 文档

配置管理

# 查看 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 环境。

# 查看 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 配置,会自动启动蓝牙中继:

# 启动监控(自动根据配置启用 MQTT 和/或 BLE)
./opencode-monitor monitor --api-addr :8080

MQTT 消息格式

消息格式为 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 命令

./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 命令

./opencode-monitor serve [选项]

选项:
  --addr string    监听地址 (默认 ":8080")
  --db string      数据库路径 (默认 "./data/config.db")

config set 命令

./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 命令

./opencode-monitor config ble set [选项]

选项:
  --device          蓝牙设备名称 (必填)
  --service-uuid    BLE 服务 UUID (必填)
  --char-uuid       BLE 特征 UUID (必填)
  --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              # 构建配置

开发

# 安装依赖
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