瀏覽代碼

文档修改

moki 1 天之前
父節點
當前提交
1174fffbf7
共有 3 個文件被更改,包括 300 次插入309 次删除
  1. 179 145
      README.md
  2. 78 63
      docs/api.md
  3. 43 101
      opencode-plugin/README.md

+ 179 - 145
README.md

@@ -1,17 +1,45 @@
-# OpenCode Monitor
+# AI Status Light
 
-OpenCode 状态监控工具,支持实时监控多个 OpenCode 实例的状态,通过 MQTT 或 BLE 蓝牙推送状态信息
+AI 编程工具状态灯,支持 OpenCode、Claude Code、Codex 等工具,通过 MQTT 或 BLE 蓝牙推送状态到硬件灯
 
 ## 功能特性
 
-- 🔍 **自动发现** - 自动扫描并发现运行中的 OpenCode 实例
-- 📊 **实时监控** - 通过 SSE 事件流实时获取状态变化
+- 🔌 **多工具支持** - 支持 OpenCode、Claude Code、Codex
 - 📡 **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
+- 🖥️ **跨平台** - 支持 Linux、Windows、macOS
+
+## 架构
+
+```
+┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
+│    OpenCode     │     │   Claude Code   │     │     Codex       │
+│    (插件)       │     │   (HTTP Hook)   │     │  (Command Hook) │
+└────────┬────────┘     └────────┬────────┘     └────────┬────────┘
+         │                       │                       │
+         └───────────────────────┼───────────────────────┘
+                                 │
+                                 ▼
+                    ┌─────────────────────────┐
+                    │    AI Status Light      │
+                    │    (API 服务)           │
+                    └────────────┬────────────┘
+                                 │
+                    ┌────────────┴────────────┐
+                    │                         │
+                    ▼                         ▼
+           ┌───────────────┐         ┌───────────────┐
+           │     MQTT      │         │     BLE       │
+           └───────┬───────┘         └───────┬───────┘
+                   │                         │
+                   ▼                         ▼
+           ┌───────────────┐         ┌───────────────┐
+           │   硬件灯      │         │   硬件灯      │
+           └───────────────┘         └───────────────┘
+```
 
 ## 安装
 
@@ -19,208 +47,222 @@ OpenCode 状态监控工具,支持实时监控多个 OpenCode 实例的状态
 
 从 `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
+- `ai-status-light-linux-amd64` - Linux x86_64
+- `ai-status-light-linux-arm64` - Linux ARM64
+- `ai-status-light-windows-amd64.exe` - Windows x86_64
+- `ai-status-light-darwin-arm64` - macOS Apple Silicon
 
 ### 从源码编译
 
 ```bash
 # 克隆项目
 git clone <repository-url>
-cd AI-Status-Light
+cd ai-status-light
 
 # 当前平台(不含 BLE)
-go build -o bin/opencode-monitor ./cmd/monitor
+go build -o bin/ai-status-light ./cmd/monitor
 
 # 当前平台(含 BLE 嵌入)
-scripts\build.bat --ble          # Windows
-bash scripts/build.sh --ble      # Linux/macOS
-
-# 仅打包 BLE 中继(供 IDE 调试用)
-scripts\build.bat --only-ble
+scripts/build.sh --ble      # Linux/macOS
+scripts\build.bat --ble     # Windows
 
-# 所有平台(不含 BLE)
-scripts\build.bat
+# 所有平台
+scripts/build.sh
 ```
 
 ## 使用方法
 
-### 启动监控
+### 1. 启动服务
 
 ```bash
-# 自动发现并监控所有 OpenCode 实例
-./opencode-monitor monitor
-
-# 监控指定端口
-./opencode-monitor monitor --ports 4096,4097
+# 启动 API 服务
+./ai-status-light serve --addr :8045
 
-# 启动监控 + API 服务 + WebSocket 实时状态页面
-./opencode-monitor monitor --api-addr :8080
+# 启动服务并启用 HTTPS
+./ai-status-light serve --addr :8045 --tls
 ```
 
-启动监控服务后,访问 `http://localhost:8080` 即可查看实时状态页面。
-
-### API 服务
+### 2. 安装 Hooks
 
 ```bash
-# 启动独立的 API 服务
-./opencode-monitor serve --addr :8080
-```
-
-API 接口详情请参阅 [API 文档](docs/api.md)。
+# 一键安装所有 hooks(OpenCode、Claude Code、Codex)
+./hooks/install.sh
 
-### 配置管理
+# 单独安装
+./hooks/install.sh --opencode
+./hooks/install.sh --claude
+./hooks/install.sh --codex
 
-```bash
-# 查看 MQTT 配置
-./opencode-monitor config list
+# 自定义服务地址
+STATUS_LIGHT_URL=http://192.168.1.100:8045 ./hooks/install.sh
+```
 
-# 设置 MQTT 配置(无认证)
-./opencode-monitor config set --broker tcp://127.0.0.1:1883 --topic opencode/status
+### 3. 配置推送目标
 
-# 设置 MQTT 配置(带认证)
-./opencode-monitor config set --broker tcp://127.0.0.1:1883 --username user --password pass --topic opencode/status
+```bash
+# 配置 MQTT
+./ai-status-light config set --broker tcp://192.168.1.100:1883 --topic opencode/status
 
-# 删除配置
-./opencode-monitor config delete 1
+# 配置 BLE
+./ai-status-light config ble set --device AI-Light --service-uuid "b8b7e001-..." --char-uuid "b8b7e002-..."
 ```
 
-### BLE 蓝牙配置
+### 4. 使用 AI 工具
 
-BLE 中继已嵌入 Go 二进制(使用 `make build-with-ble` 构建时),无需额外文件或 Python 环境
+启动服务并安装 hooks 后,正常使用 OpenCode、Claude Code 或 Codex,灯会自动响应状态变化
 
-```bash
-# 查看 BLE 配置
-./opencode-monitor config ble list
+## Hooks 配置
 
-# 设置 BLE 配置(使用默认设备 AI-Light)
-./opencode-monitor config ble set
+### OpenCode
 
-# 设置 BLE 配置(自定义设备)
-./opencode-monitor config ble set --device MyLight --service-uuid "xxx" --char-uuid "yyy"
+插件文件:`~/.config/opencode/plugins/status-light.ts`
+配置文件:`~/.config/opencode/status-light.json`
 
-# 删除 BLE 配置
-./opencode-monitor config ble delete 1
+```json
+{
+  "serviceUrl": "http://localhost:8045"
+}
 ```
 
-启动监控时,如果存在启用的 BLE 配置,会自动启动蓝牙中继:
+### Claude Code
 
-```bash
-# 启动监控(自动根据配置启用 MQTT 和/或 BLE)
-./opencode-monitor monitor --api-addr :8080
+配置文件:`~/.claude/settings.json`
+
+```json
+{
+  "hooks": {
+    "Stop": [
+      {
+        "hooks": [
+          {
+            "type": "http",
+            "url": "http://localhost:8045/api/event",
+            "async": true
+          }
+        ]
+      }
+    ],
+    "PostToolUse": [
+      {
+        "matcher": "Bash|Edit|Write",
+        "hooks": [
+          {
+            "type": "http",
+            "url": "http://localhost:8045/api/event",
+            "async": true
+          }
+        ]
+      }
+    ]
+  }
+}
 ```
 
-## MQTT 消息格式
+### Codex
 
-消息格式为 JSON:
+配置文件:`~/.codex/hooks.json`
 
 ```json
 {
-  "port": 4096,
-  "status": "工作中",
-  "code": "busy",
-  "timestamp": "2026-06-03T14:30:00Z"
+  "hooks": {
+    "Stop": [
+      {
+        "hooks": [
+          {
+            "type": "command",
+            "command": "curl -s -X POST http://localhost:8045/api/event -d '{\"code\":\"idle\"}' &"
+          }
+        ]
+      }
+    ]
+  }
 }
 ```
 
-### 推送的状态类型
+## API 接口
 
-| status | code | 说明 |
-|--------|------|------|
-| 空闲 | idle | 会话空闲 |
-| 工作中 | busy | 会话工作中 |
-| 重试中 | retry | 会话重试中 |
-| 修改中 | pending | 会话修改中 |
-| 思考中 | reasoning | 模型推理中 |
-| 使用工具中 | using_tool | AI 正在使用工具 |
-| 等待中 | pending | 工具等待执行 |
-| 运行中 | running | 工具执行中(可附带工具名,如 `运行中: read`) |
-| 工具执行完成 | completed | 工具执行完成(可附带工具名,如 `工具执行完成: read`) |
-| 会话完成 | session_completed | 会话执行完成 |
-| 等待权限 | permission | AI 向用户申请权限 |
-| 错误 | error | 会话错误 |
+### 接收事件
 
-## 命令行参数
+```
+POST /api/event
+Content-Type: application/json
 
-### monitor 命令
+{
+  "code": "busy",
+  "source": "opencode"
+}
+```
 
-```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)
-```
+| code | 说明 |
+|------|------|
+| idle | 空闲 |
+| busy | 工作中 |
+| reasoning | 思考中 |
+| using_tool | 使用工具中 |
+| permission | 等待权限 |
+| error | 错误 |
+| init | 初始化 |
+
+更多 API 接口详见 [API 文档](docs/api.md)。
+
+## 命令行参数
 
 ### serve 命令
 
 ```bash
-./opencode-monitor serve [选项]
+./ai-status-light serve [选项]
 
 选项:
-  --addr string    监听地址 (默认 ":8080")
-  --db string      数据库路径 (默认 "./data/config.db")
+  --addr string      监听地址 (默认 ":8080")
+  --db string        数据库路径 (默认 "./data/config.db")
+  --tls              启用 HTTPS
+  --tls-cert string  TLS 证书文件路径
+  --tls-key string   TLS 私钥文件路径
+  --log-file string  日志文件路径
+  --log-level string 日志级别 (debug/info/warn/error)
 ```
 
-### config set 命令
+### config 命令
 
 ```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")
-```
+# 查看 MQTT 配置
+./ai-status-light config list
 
-### config ble set 命令
+# 设置 MQTT 配置
+./ai-status-light config set --broker tcp://127.0.0.1:1883 --topic opencode/status
 
-```bash
-./opencode-monitor config ble set [选项]
+# 查看 BLE 配置
+./ai-status-light config ble list
 
-选项:
-  --device          蓝牙设备名称 (必填)
-  --service-uuid    BLE 服务 UUID (必填)
-  --char-uuid       BLE 特征 UUID (必填)
-  --enabled         是否启用 (true/false, 默认 true)
+# 设置 BLE 配置
+./ai-status-light config ble set --device AI-Light
 ```
 
 ## 项目结构
 
 ```
-AI-Status-Light/
+ai-status-light/
 ├── cmd/monitor/
 │   ├── main.go                    # 程序入口
-│   ├── ble_embed.go               # BLE 嵌入声明 (go:build ble)
-│   └── ble_embed_none.go          # BLE 空声明 (go:build !ble)
+│   ├── ble_embed.go               # BLE 嵌入声明
+│   └── ble_embed_none.go          # BLE 空声明
 ├── internal/
 │   ├── api/              # HTTP API 模块
 │   ├── database/         # SQLite 数据库模块
-│   ├── discovery/        # 端口发现模块
-│   ├── event/            # 事件处理模块
-│   ├── monitor/          # 监控器核心模块
-│   └── mqtt/             # MQTT 客户端模块
+│   ├── logger/           # 日志模块
+│   ├── mqtt/             # MQTT 客户端模块
+│   └── web/              # Web 静态文件
+├── hooks/                # AI 工具 hooks 配置
+│   ├── install.sh        # 一键安装脚本
+│   ├── claude-code/      # Claude Code hooks
+│   └── codex/            # Codex hooks
+├── opencode-plugin/      # OpenCode 插件
+│   └── status-light.ts   # 插件源码
 ├── 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              # 构建配置
+└── scripts/              # 构建脚本
 ```
 
 ## 开发
@@ -229,22 +271,14 @@ AI-Status-Light/
 # 安装依赖
 go mod tidy
 
-# 运行测试
-go test ./...
-
-# 构建(不含 BLE,全平台)
-scripts\build.bat
-
-# 构建(含 BLE,当前平台)
-scripts\build.bat --ble
+# 运行
+go run ./cmd/monitor serve --addr :8045
 
-# 仅生成 BLE 中继(IDE 调试用)
-scripts\build.bat --only-ble
+# 构建
+go build -o bin/ai-status-light ./cmd/monitor
 
-# 或用 Makefile
-make build
-make build-with-ble
-make build-all
+# 构建(含 BLE)
+scripts/build.sh --ble
 ```
 
 ## 许可证

+ 78 - 63
docs/api.md

@@ -1,14 +1,58 @@
-# OpenCode Monitor API 接口文档
+# AI Status Light API 接口文档
 
 ## 基础信息
 
-- Base URL: `http://localhost:8080`
+- Base URL: `http://localhost:8045`
 - Content-Type: `application/json`
 - 响应格式: `{ "code": 0, "message": "ok", "data": {} }`
 
 ## 接口列表
 
-### 1. 健康检查
+### 1. 接收事件(AI 工具 Hooks 调用)
+
+```
+POST /api/event
+```
+
+**请求体:**
+```json
+{
+  "code": "busy",
+  "source": "opencode",
+  "timestamp": "2026-06-27T14:30:00Z"
+}
+```
+
+| 字段 | 类型 | 必填 | 说明 |
+|------|------|------|------|
+| code | string | 是 | 状态码 |
+| source | string | 否 | 来源 (opencode/claude/codex) |
+| timestamp | string | 否 | 时间戳 |
+
+**响应示例:**
+```json
+{
+  "code": 0,
+  "message": "ok"
+}
+```
+
+**状态码说明:**
+
+| code | 说明 |
+|------|------|
+| idle | 空闲 |
+| busy | 工作中 |
+| reasoning | 思考中 |
+| using_tool | 使用工具中 |
+| tool_done | 工具执行完成 |
+| permission | 等待权限 |
+| error | 错误 |
+| init | 初始化 |
+
+---
+
+### 2. 健康检查
 
 ```
 GET /api/health
@@ -317,14 +361,11 @@ DELETE /api/ble/:id
 ## 启动方式
 
 ```bash
-# 方式1: 独立启动 API 服务
-./bin/opencode-monitor serve --addr :8080
+# 启动 API 服务
+./ai-status-light serve --addr :8045
 
-# 方式2: 监控时同时启动 API 服务
-./bin/opencode-monitor monitor --ports 4096 --api-addr :8080
-
-# 方式3: 启用 HTTPS (自签名证书)
-./bin/opencode-monitor serve --addr :8080 --tls
+# 启用 HTTPS (自签名证书)
+./ai-status-light serve --addr :8045 --tls
 ```
 
 ## 子命令选项
@@ -338,20 +379,8 @@ DELETE /api/ble/:id
 | `--tls` | `false` | 启用 HTTPS (使用自签名证书) |
 | `--tls-cert` | `./data/tls/cert.pem` | TLS 证书文件路径 |
 | `--tls-key` | `./data/tls/key.pem` | TLS 私钥文件路径 |
-
-### monitor 子命令
-
-| 选项 | 默认值 | 说明 |
-|------|--------|------|
-| `--host` | `127.0.0.1` | 主机地址 |
-| `--ports` | - | 端口列表,逗号分隔 (如: 4096,4097,4098) |
-| `--scan` | - | 扫描端口范围 (如: 4096-4100) |
-| `--interval` | `1` | 动态扫描间隔(秒) |
-| `--api-addr` | - | API 服务地址 (如: :8080) |
-| `--db` | `./data/config.db` | 数据库路径 |
-| `--tls` | `false` | 启用 HTTPS (使用自签名证书) |
-| `--tls-cert` | `./data/tls/cert.pem` | TLS 证书文件路径 |
-| `--tls-key` | `./data/tls/key.pem` | TLS 私钥文件路径 |
+| `--log-file` | `./logs` | 日志文件路径 |
+| `--log-level` | `info` | 日志级别:`debug`、`info`、`warn`、`error` |
 
 ### config 子命令
 
@@ -362,14 +391,14 @@ DELETE /api/ble/:id
 ### version 子命令
 
 ```bash
-./bin/opencode-monitor version
+./ai-status-light version
 ```
 
 显示版本信息。
 
 ## 全局选项
 
-以下选项适用于 `monitor`、`serve`、`config` 三个子命令:
+以下选项适用于 `serve` 和 `config` 子命令:
 
 | 选项 | 默认值 | 说明 |
 |------|--------|------|
@@ -380,13 +409,13 @@ DELETE /api/ble/:id
 
 ```bash
 # 默认日志到 ./logs/monitor.log
-./bin/opencode-monitor monitor --ports 4096
+./ai-status-light serve --addr :8045
 
 # 指定日志路径
-./bin/opencode-monitor serve --log-file /var/log/monitor.log
+./ai-status-light serve --log-file /var/log/ai-status-light.log
 
 # 开启 debug 日志
-./bin/opencode-monitor monitor --scan 4096-4100 --log-level debug
+./ai-status-light serve --log-level debug
 ```
 
 ### 日志文件轮转
@@ -406,33 +435,27 @@ API 已启用 CORS,支持跨域请求。
 
 ## MQTT 推送说明
 
-配置启用后,监控到状态变化时会自动推送到配置的 topic。消息格式为 JSON:
+配置启用后,收到事件时会自动推送到配置的 topic。消息格式为 JSON:
 
 ```json
 {
-  "port": 4096,
-  "status": "工作中",
   "code": "busy",
-  "timestamp": "2026-06-03T14:30:00Z"
+  "timestamp": "2026-06-27T14:30:00Z"
 }
 ```
 
 ### 推送的状态类型
 
-| status | code | 说明 |
-|--------|------|------|
-| 空闲 | idle | 会话空闲 |
-| 工作中 | busy | 会话工作中 |
-| 重试中 | retry | 会话重试中 |
-| 修改中 | pending | 会话修改中 |
-| 思考中 | reasoning | 模型推理中 |
-| 使用工具中 | using_tool | AI 正在使用工具 |
-| 等待中 | pending | 工具等待执行 |
-| 运行中 | running | 工具执行中(可附带工具名,如 `运行中: read`) |
-| 工具执行完成 | completed | 工具执行完成(可附带工具名,如 `工具执行完成: read`) |
-| 会话完成 | session_completed | 会话执行完成 |
-| 等待权限 | permission | AI 向用户申请权限 |
-| 错误 | error | 会话错误 |
+| code | 说明 |
+|------|------|
+| idle | 空闲 |
+| busy | 工作中 |
+| reasoning | 思考中 |
+| using_tool | 使用工具中 |
+| tool_done | 工具执行完成 |
+| permission | 等待权限 |
+| error | 错误 |
+| init | 初始化 |
 
 ## BLE 蓝牙推送说明
 
@@ -441,31 +464,23 @@ API 已启用 CORS,支持跨域请求。
 ### 构建含 BLE 的版本
 
 ```bash
-# 一键构建(打包 Python 脚本 + 嵌入 Go 二进制)
-make build-with-ble
-
-# 或手动步骤
-python -m PyInstaller --onefile --name ble_relay --distpath bin scripts/ble_relay.py
-cp bin/ble_relay cmd/monitor/ble_relay
-go build -tags ble -o bin/opencode-monitor ./cmd/monitor
-rm -f cmd/monitor/ble_relay
+# 一键构建
+scripts/build.sh --ble      # Linux/macOS
+scripts\build.bat --ble     # Windows
 ```
 
 ### 状态映射
 
-| Go 状态码 | 蓝牙模式 | 说明 |
+| API 状态码 | 蓝牙模式 | 说明 |
 |-----------|---------|------|
 | idle | idle | 空闲 |
 | busy | busy | 工作中 |
-| retry | thinking | 重试中 |
-| pending | thinking | 等待/修改中 |
 | reasoning | thinking | 思考中 |
 | using_tool | ai | 使用工具 |
-| running | ai | 工具运行中 |
-| completed | success | 完成 |
-| session_completed | success | 会话完成 |
+| tool_done | success | 工具完成 |
 | permission | alarm | 等待权限 |
 | error | error | 错误 |
+| init | init | 初始化 |
 
 ### Python 依赖(仅 Python 方式需要)
 
@@ -477,12 +492,12 @@ pip install -r scripts/requirements.txt
 
 ## WebSocket 实时状态
 
-启动监控服务后,可以通过浏览器访问 `http://localhost:8080` 查看实时状态页面。
+启动服务后,可以通过浏览器访问 `http://localhost:8045` 查看实时状态页面。
 
 ### WebSocket 连接
 
 ```
-ws://localhost:8080/ws
+ws://localhost:8045/ws
 ```
 
 ### 消息格式

+ 43 - 101
opencode-plugin/README.md

@@ -1,140 +1,82 @@
 # OpenCode Status Light Plugin
 
-这是一个OpenCode插件,用于将工具执行和会话状态事件发送到AI Status Light监控服务。
+OpenCode 插件,用于将状态事件发送到 AI Status Light 服务。
 
 ## 功能
 
-- 监听工具执行事件(开始、完成
-- 监听会话状态变化(空闲、错误)
+- 监听会话状态变化(空闲、工作中、错误
+- 监听工具执行事件
 - 监听权限请求
-- 监听消息更新(工具状态、推理状态)
-- 通过HTTP webhook发送事件到监控服务
+- 通过 HTTP 发送事件到 AI Status Light 服务
 
 ## 安装
 
-### 方式1:本地安装
+### 方式一:使用安装脚本(推荐)
 
-1. 将此目录复制到OpenCode的插件目录:
-   - 项目级:`.opencode/plugins/`
-   - 全局级:`~/.config/opencode/plugins/`
-
-2. 安装依赖:
-   ```bash
-   cd opencode-plugin
-   npm install
-   ```
+```bash
+# 在项目根目录执行
+./hooks/install.sh --opencode
+```
 
-### 方式2:npm安装(推荐)
+### 方式二:手动安装
 
 ```bash
-npm install opencode-status-light-plugin
-```
+# 复制插件到全局目录
+cp opencode-plugin/status-light.ts ~/.config/opencode/plugins/
 
-然后在`opencode.json`中添加:
-```json
+# 创建配置文件
+cat > ~/.config/opencode/status-light.json << EOF
 {
-  "plugin": ["opencode-status-light-plugin"]
+  "serviceUrl": "http://localhost:8045"
 }
+EOF
 ```
 
 ## 配置
 
-### 环境变量
-
-| 变量名 | 说明 | 默认值 |
-|--------|------|--------|
-| `OPENCODE_WEBHOOK_URL` | Webhook接收地址 | `http://localhost:8080/api/webhook` |
-| `OPENCODE_WEBHOOK_SECRET` | Webhook密钥(用于签名验证) | (空) |
-| `OPENCODE_WEBHOOK_ENABLED` | 是否启用webhook | `true` |
-
-### 示例配置
-
-```bash
-# 设置webhook地址
-export OPENCODE_WEBHOOK_URL="http://your-server:8080/api/webhook"
-
-# 设置密钥(可选)
-export OPENCODE_WEBHOOK_SECRET="your-secret-key"
-
-# 启用webhook
-export OPENCODE_WEBHOOK_ENABLED="true"
-```
-
-## 事件类型
-
-插件会发送以下事件:
+### 配置文件
 
-| 事件类型 | 说明 | 数据格式 |
-|----------|------|----------|
-| `tool.execute.before` | 工具执行前 | `{ tool, args, status: "running" }` |
-| `tool.execute.after` | 工具执行后 | `{ tool, args, result, status: "completed" }` |
-| `session.status` | 会话状态变化 | `{ status }` |
-| `session.idle` | 会话空闲 | `{ status: "idle" }` |
-| `session.error` | 会话错误 | `{ error }` |
-| `permission.asked` | 权限请求 | `{ permission }` |
-| `message.part.updated` | 消息部分更新 | `{ part: { type, tool?, state?, status? } }` |
-
-## Webhook请求格式
+配置文件位置:
+- 全局:`~/.config/opencode/status-light.json`
+- 项目级:`.opencode/status-light.json`
 
 ```json
 {
-  "type": "tool.execute.before",
-  "timestamp": "2026-06-27T10:30:00Z",
-  "project": "my-project",
-  "directory": "/path/to/project",
-  "worktree": "/path/to/worktree",
-  "data": {
-    "tool": "read",
-    "args": { "filePath": "src/index.ts" },
-    "status": "running"
-  }
+  "serviceUrl": "http://localhost:8045"
 }
 ```
 
-## 签名验证
-
-如果设置了`OPENCODE_WEBHOOK_SECRET`,插件会在请求头中添加签名:
+### 环境变量
 
-```
-X-Webhook-Signature: sha256=<hex-signature>
-```
+| 变量名 | 说明 | 默认值 |
+|--------|------|--------|
+| `STATUS_LIGHT_URL` | 服务地址 | `http://localhost:8080` |
 
-验证签名的示例代码(Node.js):
+优先级:环境变量 > 项目级配置 > 全局配置 > 默认值
 
-```javascript
-const crypto = require('crypto')
+## 事件映射
 
-function verifySignature(payload, signature, secret) {
-  const expectedSignature = crypto
-    .createHmac('sha256', secret)
-    .update(JSON.stringify(payload))
-    .digest('hex')
-  
-  return signature === `sha256=${expectedSignature}`
-}
-```
+| OpenCode 事件 | 发送的 code |
+|---------------|-------------|
+| session.idle | idle |
+| session.status (type) | 对应的 type 值 |
+| message.part.updated (tool) | using_tool 或 tool 状态 |
+| message.part.updated (reasoning) | reasoning |
+| permission.asked | permission |
+| session.error | error |
 
-## 开发
+## 服务端接收
 
-### 本地开发
+插件通过 HTTP POST 发送事件到服务:
 
-```bash
-# 安装依赖
-npm install
-
-# 构建
-npm run build
-
-# 测试
-npm test
 ```
+POST /api/event
+Content-Type: application/json
 
-### 调试
-
-设置环境变量启用详细日志:
-
-```bash
-export DEBUG=status-light-plugin
+{
+  "code": "busy",
+  "timestamp": "2026-06-27T14:30:00Z"
+}
 ```
 
 ## 许可证