|
|
hai 2 días | |
|---|---|---|
| .. | ||
| README.md | hai 2 días | |
| index.ts | hai 2 días | |
| package.json | hai 2 días | |
| status-light.ts | hai 2 días | |
这是一个OpenCode插件,用于将工具执行和会话状态事件发送到AI Status Light监控服务。
将此目录复制到OpenCode的插件目录:
.opencode/plugins/~/.config/opencode/plugins/安装依赖:
cd opencode-plugin
npm install
npm install opencode-status-light-plugin
然后在opencode.json中添加:
{
"plugin": ["opencode-status-light-plugin"]
}
| 变量名 | 说明 | 默认值 |
|---|---|---|
OPENCODE_WEBHOOK_URL |
Webhook接收地址 | http://localhost:8080/api/webhook |
OPENCODE_WEBHOOK_SECRET |
Webhook密钥(用于签名验证) | (空) |
OPENCODE_WEBHOOK_ENABLED |
是否启用webhook | true |
# 设置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? } } |
{
"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"
}
}
如果设置了OPENCODE_WEBHOOK_SECRET,插件会在请求头中添加签名:
X-Webhook-Signature: sha256=<hex-signature>
验证签名的示例代码(Node.js):
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}`
}
# 安装依赖
npm install
# 构建
npm run build
# 测试
npm test
设置环境变量启用详细日志:
export DEBUG=status-light-plugin
MIT