|
|
1 өдөр өмнө | |
|---|---|---|
| cmd | 1 долоо хоног өмнө | |
| docs | 1 долоо хоног өмнө | |
| firmware | 1 өдөр өмнө | |
| internal | 1 долоо хоног өмнө | |
| scripts | 2 долоо хоног өмнө | |
| .gitignore | 2 долоо хоног өмнө | |
| Makefile | 2 долоо хоног өмнө | |
| README.md | 1 долоо хоног өмнө | |
| go.mod | 1 долоо хоног өмнө | |
| go.sum | 1 долоо хоног өмнө |
OpenCode 状态监控工具,支持实时监控多个 OpenCode 实例的状态,通过 MQTT 或 BLE 蓝牙推送状态信息。
从 dist/ 目录下载对应平台的可执行文件:
opencode-monitor-linux-amd64 - Linux x86_64opencode-monitor-linux-arm64 - Linux ARM64opencode-monitor-windows-amd64.exe - Windows x86_64opencode-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 服务
./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 中继已嵌入 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
消息格式为 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 | 会话错误 |
./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)
./opencode-monitor serve [选项]
选项:
--addr string 监听地址 (默认 ":8080")
--db string 数据库路径 (默认 "./data/config.db")
./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")
./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