@quukk/opencode-clawmessenger 0.3.0 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -623
- package/bin/opencode-clawmessenger +2 -2
- package/bin/opencode-clawmessenger-setup +5 -5
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +1 -288
- package/dist/core/auto-register.d.ts +0 -1
- package/dist/core/auto-register.js +1 -174
- package/dist/core/auto-serve.d.ts +13 -0
- package/dist/core/auto-serve.js +1 -0
- package/dist/core/config.d.ts +2 -3
- package/dist/core/config.js +1 -80
- package/dist/core/daemon.d.ts +0 -1
- package/dist/core/daemon.js +1 -77
- package/dist/core/dedup.d.ts +0 -1
- package/dist/core/dedup.js +1 -25
- package/dist/core/hook-manager.d.ts +0 -1
- package/dist/core/hook-manager.js +1 -33
- package/dist/core/logger.d.ts +0 -1
- package/dist/core/logger.js +1 -49
- package/dist/core/mac-address.d.ts +0 -1
- package/dist/core/mac-address.js +1 -43
- package/dist/core/message-handler.d.ts +0 -1
- package/dist/core/message-handler.js +1 -988
- package/dist/core/ops-assistant.d.ts +0 -1
- package/dist/core/ops-assistant.js +1 -270
- package/dist/core/qr-crypto.d.ts +0 -1
- package/dist/core/qr-crypto.js +1 -66
- package/dist/core/session-manager.d.ts +0 -1
- package/dist/core/session-manager.js +1 -144
- package/dist/core/types.d.ts +1 -2
- package/dist/core/types.js +1 -26
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -16
- package/dist/openclaw/client.d.ts +0 -1
- package/dist/openclaw/client.js +1 -494
- package/dist/opencode/client.d.ts +0 -1
- package/dist/opencode/client.js +1 -279
- package/dist/opencode/event-handler.d.ts +0 -1
- package/dist/opencode/event-handler.js +1 -467
- package/dist/plugin.d.ts +0 -1
- package/dist/plugin.js +1 -148
- package/dist/rongcloud/client.d.ts +0 -1
- package/dist/rongcloud/client.js +1 -292
- package/dist/rongcloud/env-polyfill.d.ts +0 -1
- package/dist/rongcloud/env-polyfill.js +1 -107
- package/dist/rongcloud/server-api.d.ts +0 -1
- package/dist/rongcloud/server-api.js +1 -157
- package/dist/standalone.d.ts +0 -1
- package/dist/standalone.js +1 -229
- package/dist/types/plugin.d.ts +0 -1
- package/dist/types/plugin.js +1 -2
- package/dist/websocket/client.d.ts +0 -1
- package/dist/websocket/client.js +1 -88
- package/dist/websocket/server-client.d.ts +0 -1
- package/dist/websocket/server-client.js +1 -98
- package/package.json +83 -81
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/core/auto-register.d.ts.map +0 -1
- package/dist/core/auto-register.js.map +0 -1
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js.map +0 -1
- package/dist/core/daemon.d.ts.map +0 -1
- package/dist/core/daemon.js.map +0 -1
- package/dist/core/dedup.d.ts.map +0 -1
- package/dist/core/dedup.js.map +0 -1
- package/dist/core/hook-manager.d.ts.map +0 -1
- package/dist/core/hook-manager.js.map +0 -1
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/mac-address.d.ts.map +0 -1
- package/dist/core/mac-address.js.map +0 -1
- package/dist/core/message-handler.d.ts.map +0 -1
- package/dist/core/message-handler.js.map +0 -1
- package/dist/core/ops-assistant.d.ts.map +0 -1
- package/dist/core/ops-assistant.js.map +0 -1
- package/dist/core/qr-crypto.d.ts.map +0 -1
- package/dist/core/qr-crypto.js.map +0 -1
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/openclaw/client.d.ts.map +0 -1
- package/dist/openclaw/client.js.map +0 -1
- package/dist/opencode/client.d.ts.map +0 -1
- package/dist/opencode/client.js.map +0 -1
- package/dist/opencode/event-handler.d.ts.map +0 -1
- package/dist/opencode/event-handler.js.map +0 -1
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js.map +0 -1
- package/dist/rongcloud/client.d.ts.map +0 -1
- package/dist/rongcloud/client.js.map +0 -1
- package/dist/rongcloud/env-polyfill.d.ts.map +0 -1
- package/dist/rongcloud/env-polyfill.js.map +0 -1
- package/dist/rongcloud/server-api.d.ts.map +0 -1
- package/dist/rongcloud/server-api.js.map +0 -1
- package/dist/standalone.d.ts.map +0 -1
- package/dist/standalone.js.map +0 -1
- package/dist/types/plugin.d.ts.map +0 -1
- package/dist/types/plugin.js.map +0 -1
- package/dist/websocket/client.d.ts.map +0 -1
- package/dist/websocket/client.js.map +0 -1
- package/dist/websocket/server-client.d.ts.map +0 -1
- package/dist/websocket/server-client.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,623 +1,71 @@
|
|
|
1
|
-
# OpenCode ClawMessenger
|
|
2
|
-
|
|
3
|
-
[](https://opensource.org/licenses/MIT)
|
|
5
|
-
|
|
6
|
-
> OpenCode ClawMessenger
|
|
7
|
-
|
|
8
|
-
##
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
git clone https://github.com/neomei/opencode-clawmessenger.git
|
|
73
|
-
cd opencode-clawmessenger
|
|
74
|
-
|
|
75
|
-
# 安装依赖
|
|
76
|
-
npm install
|
|
77
|
-
|
|
78
|
-
# 编译 TypeScript
|
|
79
|
-
npm run build
|
|
80
|
-
|
|
81
|
-
# 初始化
|
|
82
|
-
node dist/cli.js setup
|
|
83
|
-
|
|
84
|
-
# 运行
|
|
85
|
-
node dist/cli.js start
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### 方式三:Docker 运行
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
# 构建镜像
|
|
92
|
-
docker build -t opencode-clawmessenger .
|
|
93
|
-
|
|
94
|
-
# 运行(挂载配置目录)
|
|
95
|
-
docker run -d \
|
|
96
|
-
--name clawmessenger \
|
|
97
|
-
-v ~/.config/opencode:/root/.config/opencode \
|
|
98
|
-
-e CLAW_OPENCODE_URL=http://host.docker.internal:19876 \
|
|
99
|
-
opencode-clawmessenger
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## 初始化配置
|
|
103
|
-
|
|
104
|
-
运行 `opencode-clawmessenger setup` 后,脚本会:
|
|
105
|
-
|
|
106
|
-
1. 向 ClawMessenger 注册服务器注册节点
|
|
107
|
-
2. 生成融云 Token 和节点 ID
|
|
108
|
-
3. 保存配置到 `~/.config/opencode/clawmessenger.json`
|
|
109
|
-
4. 在终端打印 ASCII 二维码
|
|
110
|
-
|
|
111
|
-
然后使用手机 App(虾说)扫描二维码完成绑定。
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
$ opencode-clawmessenger setup
|
|
115
|
-
opencode-clawmessenger Setup Wizard
|
|
116
|
-
|
|
117
|
-
Registering node: my-server...
|
|
118
|
-
Registration successful!
|
|
119
|
-
Node ID: claw_abc123
|
|
120
|
-
|
|
121
|
-
========================================
|
|
122
|
-
Scan QR Code with ClawMessenger App
|
|
123
|
-
========================================
|
|
124
|
-
|
|
125
|
-
[二维码图案]
|
|
126
|
-
|
|
127
|
-
Start the plugin: opencode-clawmessenger start
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## CLI 命令文档
|
|
131
|
-
|
|
132
|
-
### `start` - 启动服务
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
opencode-clawmessenger start [options]
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
选项:
|
|
139
|
-
|
|
140
|
-
| 选项 | 说明 |
|
|
141
|
-
|------|------|
|
|
142
|
-
| `-c, --config <path>` | 指定配置文件路径 |
|
|
143
|
-
| `-u, --url <url>` | 指定 OpenCode 服务器 URL |
|
|
144
|
-
| `-d, --daemon` | 作为后台守护进程启动 |
|
|
145
|
-
| `-s, --serve` | 如果 OpenCode 未运行,自动启动 |
|
|
146
|
-
|
|
147
|
-
示例:
|
|
148
|
-
|
|
149
|
-
```bash
|
|
150
|
-
# 前台运行
|
|
151
|
-
opencode-clawmessenger start
|
|
152
|
-
|
|
153
|
-
# 后台守护进程
|
|
154
|
-
opencode-clawmessenger start --daemon
|
|
155
|
-
|
|
156
|
-
# 指定配置
|
|
157
|
-
opencode-clawmessenger start -c /path/to/config.json
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### `stop` - 停止服务
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
opencode-clawmessenger stop
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
读取 PID 文件并向进程发送 `SIGTERM` 信号。
|
|
167
|
-
|
|
168
|
-
### `status` - 查看状态
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
opencode-clawmessenger status [options]
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
选项:
|
|
175
|
-
|
|
176
|
-
| 选项 | 说明 |
|
|
177
|
-
|------|------|
|
|
178
|
-
| `--json` | 以 JSON 格式输出 |
|
|
179
|
-
|
|
180
|
-
示例:
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
$ opencode-clawmessenger status
|
|
184
|
-
Plugin running
|
|
185
|
-
PID: 12345
|
|
186
|
-
Uptime: 2h 15m 30s
|
|
187
|
-
OpenCode: http://127.0.0.1:19876
|
|
188
|
-
RongCloud: connected
|
|
189
|
-
Sessions: 3
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### `logs` - 查看日志
|
|
193
|
-
|
|
194
|
-
```bash
|
|
195
|
-
opencode-clawmessenger logs [options]
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
选项:
|
|
199
|
-
|
|
200
|
-
| 选项 | 说明 |
|
|
201
|
-
|------|------|
|
|
202
|
-
| `-n, --lines <n>` | 显示最近 n 行(默认 50) |
|
|
203
|
-
| `-f, --follow` | 实时跟踪日志 |
|
|
204
|
-
|
|
205
|
-
示例:
|
|
206
|
-
|
|
207
|
-
```bash
|
|
208
|
-
# 最近 100 行
|
|
209
|
-
opencode-clawmessenger logs -n 100
|
|
210
|
-
|
|
211
|
-
# 实时跟踪
|
|
212
|
-
opencode-clawmessenger logs -f
|
|
213
|
-
|
|
214
|
-
# 搜索错误
|
|
215
|
-
opencode-clawmessenger logs -n 200 | grep ERROR
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
### `setup` - 初始化配置
|
|
219
|
-
|
|
220
|
-
```bash
|
|
221
|
-
opencode-clawmessenger setup
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
交互式向导,完成节点注册并打印绑定二维码。
|
|
225
|
-
|
|
226
|
-
## Linux 生产部署
|
|
227
|
-
|
|
228
|
-
### systemd 服务
|
|
229
|
-
|
|
230
|
-
项目提供完整的 systemd 服务模板:`scripts/opencode-clawmessenger.service`
|
|
231
|
-
|
|
232
|
-
### 自动安装脚本
|
|
233
|
-
|
|
234
|
-
**推荐方式**,一键完成 Node.js 检查、npm 安装、systemd 注册和启动:
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
# 使用 curl
|
|
238
|
-
curl -fsSL https://raw.githubusercontent.com/neomei/opencode-clawmessenger/main/scripts/install.sh | sudo bash
|
|
239
|
-
|
|
240
|
-
# 或使用 wget
|
|
241
|
-
wget -qO- https://raw.githubusercontent.com/neomei/opencode-clawmessenger/main/scripts/install.sh | sudo bash
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
安装完成后运行初始化:
|
|
245
|
-
|
|
246
|
-
```bash
|
|
247
|
-
# 使用安装时自动创建的运行用户
|
|
248
|
-
sudo -u $(whoami) opencode-clawmessenger setup
|
|
249
|
-
|
|
250
|
-
# 启动/停止/重启
|
|
251
|
-
sudo systemctl start opencode-clawmessenger
|
|
252
|
-
sudo systemctl stop opencode-clawmessenger
|
|
253
|
-
sudo systemctl restart opencode-clawmessenger
|
|
254
|
-
|
|
255
|
-
# 查看状态
|
|
256
|
-
sudo systemctl status opencode-clawmessenger
|
|
257
|
-
|
|
258
|
-
# 设置开机自启
|
|
259
|
-
sudo systemctl enable opencode-clawmessenger
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### 手动安装
|
|
263
|
-
|
|
264
|
-
如果你希望完全手动控制:
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
# 1. 安装 Node.js(如未安装)
|
|
268
|
-
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
|
|
269
|
-
sudo apt-get install -y nodejs
|
|
270
|
-
|
|
271
|
-
# 2. 全局安装 npm 包
|
|
272
|
-
sudo npm install -g @neomei/opencode-clawmessenger@latest
|
|
273
|
-
|
|
274
|
-
# 3. 确定 Node 和 CLI 路径
|
|
275
|
-
NODE_BIN=$(which node)
|
|
276
|
-
CLI_PATH=$(npm root -g)/@neomei/opencode-clawmessenger/bin/opencode-clawmessenger
|
|
277
|
-
|
|
278
|
-
# 4. 创建运行用户(可选但推荐)
|
|
279
|
-
sudo useradd -r -s /bin/false clawmessenger
|
|
280
|
-
sudo mkdir -p /home/clawmessenger/.config/opencode
|
|
281
|
-
sudo chown -R clawmessenger:clawmessenger /home/clawmessenger
|
|
282
|
-
|
|
283
|
-
# 5. 复制并编辑 systemd 服务文件
|
|
284
|
-
sudo cp scripts/opencode-clawmessenger.service /etc/systemd/system/
|
|
285
|
-
sudo sed -i "s|%USER%|clawmessenger|g" /etc/systemd/system/opencode-clawmessenger.service
|
|
286
|
-
sudo sed -i "s|%GROUP%|clawmessenger|g" /etc/systemd/system/opencode-clawmessenger.service
|
|
287
|
-
sudo sed -i "s|%HOME%|/home/clawmessenger|g" /etc/systemd/system/opencode-clawmessenger.service
|
|
288
|
-
sudo sed -i "s|%INSTALL_DIR%|/home/clawmessenger/.config/opencode|g" /etc/systemd/system/opencode-clawmessenger.service
|
|
289
|
-
sudo sed -i "s|%NODE_BIN%|$NODE_BIN|g" /etc/systemd/system/opencode-clawmessenger.service
|
|
290
|
-
sudo sed -i "s|%CLI_PATH%|$CLI_PATH|g" /etc/systemd/system/opencode-clawmessenger.service
|
|
291
|
-
|
|
292
|
-
# 6. 初始化配置
|
|
293
|
-
sudo -u clawmessenger opencode-clawmessenger setup
|
|
294
|
-
|
|
295
|
-
# 7. 启动服务
|
|
296
|
-
sudo systemctl daemon-reload
|
|
297
|
-
sudo systemctl enable --now opencode-clawmessenger
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
### 日志查看
|
|
301
|
-
|
|
302
|
-
使用 systemd journal:
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
# 实时跟踪
|
|
306
|
-
sudo journalctl -u opencode-clawmessenger -f
|
|
307
|
-
|
|
308
|
-
# 最近 100 条
|
|
309
|
-
sudo journalctl -u opencode-clawmessenger -n 100
|
|
310
|
-
|
|
311
|
-
# 今天的日志
|
|
312
|
-
sudo journalctl -u opencode-clawmessenger --since today
|
|
313
|
-
|
|
314
|
-
# 搜索错误
|
|
315
|
-
sudo journalctl -u opencode-clawmessenger -g "ERROR|error|失败"
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
应用日志文件位置:
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
# 默认路径
|
|
322
|
-
tail -f ~/.config/opencode/clawmessenger.log
|
|
323
|
-
|
|
324
|
-
# 或通过 CLI
|
|
325
|
-
opencode-clawmessenger logs -f
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
## 环境变量
|
|
329
|
-
|
|
330
|
-
| 变量名 | 默认值 | 说明 |
|
|
331
|
-
|--------|--------|------|
|
|
332
|
-
| `CLAW_TOKEN` | - | 融云 Token |
|
|
333
|
-
| `CLAW_ACCOUNT_ID` | - | 融云账号 ID |
|
|
334
|
-
| `CLAW_APP_KEY` | - | 融云 App Key |
|
|
335
|
-
| `CLAW_APP_SECRET` | - | 融云 App Secret |
|
|
336
|
-
| `DM_SERVER_URL` | `https://newsradar.dreamdt.cn/im` | ClawMessenger 注册服务器 |
|
|
337
|
-
| `CLAW_OPENCODE_URL` | `http://127.0.0.1:19876` | OpenCode 服务地址 |
|
|
338
|
-
| `CLAW_OPENCODE_DIR` | - | OpenCode 工作目录 |
|
|
339
|
-
| `OPENCODE_SERVER_PASSWORD` | - | OpenCode Basic Auth 密码 |
|
|
340
|
-
| `CLAW_SYSTEM_PROMPT` | - | 覆盖默认 system prompt |
|
|
341
|
-
| `CLAW_LOG_LEVEL` | `info` | 日志级别(trace/debug/info/warn/error) |
|
|
342
|
-
| `CLAW_LOG_FILE` | `~/.config/opencode/clawmessenger.log` | 日志文件路径 |
|
|
343
|
-
| `CLAW_CHAT_TIMEOUT` | `600` | 聊天超时时间(秒) |
|
|
344
|
-
| `DEBUG` | - | 遗留调试开关 |
|
|
345
|
-
|
|
346
|
-
在 systemd 中使用:
|
|
347
|
-
|
|
348
|
-
```ini
|
|
349
|
-
[Service]
|
|
350
|
-
Environment="CLAW_LOG_LEVEL=debug"
|
|
351
|
-
Environment="CLAW_OPENCODE_URL=http://127.0.0.1:19876"
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
## 配置优先级
|
|
355
|
-
|
|
356
|
-
配置加载遵循以下优先级(高 → 低):
|
|
357
|
-
|
|
358
|
-
1. **环境变量**(最高优先级)
|
|
359
|
-
2. **自动注册保存的配置**:`~/.claw-bridge/config.json`
|
|
360
|
-
3. **插件配置文件**:`~/.config/opencode/clawmessenger.json`
|
|
361
|
-
|
|
362
|
-
## 插件模式(推荐)
|
|
363
|
-
|
|
364
|
-
ClawMessenger 支持作为 OpenCode 插件运行。安装后运行 `opencode serve` 会自动加载并启动融云桥接。
|
|
365
|
-
|
|
366
|
-
### 一键安装
|
|
367
|
-
|
|
368
|
-
```bash
|
|
369
|
-
# 方式一:使用 OpenCode CLI 安装(推荐)
|
|
370
|
-
opencode plugin @quukk/opencode-clawmessenger
|
|
371
|
-
|
|
372
|
-
# 方式二:全局安装后注册
|
|
373
|
-
npm install -g @quukk/opencode-clawmessenger
|
|
374
|
-
opencode plugin @quukk/opencode-clawmessenger -g
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
安装完成后,启动 OpenCode:
|
|
378
|
-
|
|
379
|
-
```bash
|
|
380
|
-
opencode serve
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
ClawMessenger 会自动完成以下初始化步骤,无需手动运行 `setup`:
|
|
384
|
-
|
|
385
|
-
1. **自动注册节点**:如果没有 token,自动向 ClawMessenger 服务器注册,获取融云 token
|
|
386
|
-
2. **获取 AppKey**:从服务端获取融云 AppKey
|
|
387
|
-
3. **获取 AppSecret**:从服务端获取融云 AppSecret(用于流式消息推送)
|
|
388
|
-
4. **连接融云**:使用获取到的凭据连接融云 IM
|
|
389
|
-
5. **启动消息监听**:开始接收和处理聊天消息
|
|
390
|
-
|
|
391
|
-
整个过程完全自动,无需用户干预。
|
|
392
|
-
|
|
393
|
-
### 手动配置(可选)
|
|
394
|
-
|
|
395
|
-
如果你需要自定义配置,可以在项目根目录创建 `opencode-plugin.ts`:
|
|
396
|
-
|
|
397
|
-
```typescript
|
|
398
|
-
import clawMessenger from '@quukk/opencode-clawmessenger/plugin';
|
|
399
|
-
|
|
400
|
-
export default {
|
|
401
|
-
id: 'clawmessenger',
|
|
402
|
-
server: clawMessenger.server,
|
|
403
|
-
};
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
然后注册到 OpenCode:
|
|
407
|
-
|
|
408
|
-
```bash
|
|
409
|
-
opencode plugin add ./opencode-plugin.ts
|
|
410
|
-
```
|
|
411
|
-
|
|
412
|
-
### 插件模式 vs 独立模式
|
|
413
|
-
|
|
414
|
-
| 特性 | 插件模式 | 独立模式 (CLI) |
|
|
415
|
-
|------|---------|--------------|
|
|
416
|
-
| 安装方式 | `opencode plugin @quukk/opencode-clawmessenger` | `npm install -g @quukk/opencode-clawmessenger` |
|
|
417
|
-
| 启动方式 | `opencode serve` 自动加载 | `opencode-clawmessenger start` |
|
|
418
|
-
| 配置方式 | 自动检测 OpenCode 配置 | 需手动配置环境变量或配置文件 |
|
|
419
|
-
| OpenCode 地址 | 自动使用当前 OpenCode 服务器 | 需配置 `CLAW_OPENCODE_URL` |
|
|
420
|
-
| 工作目录 | 自动使用当前项目目录 | 需配置 `CLAW_OPENCODE_DIR` |
|
|
421
|
-
| 适用场景 | 开发环境、与 OpenCode 一起使用 | 生产环境、独立部署 |
|
|
422
|
-
| 进程管理 | OpenCode 统一管理 | systemd / PM2 / 手动 |
|
|
423
|
-
|
|
424
|
-
### 插件 API
|
|
425
|
-
|
|
426
|
-
插件启动后,其他插件或 OpenCode 内部可以通过以下方式发送消息:
|
|
427
|
-
|
|
428
|
-
```typescript
|
|
429
|
-
// 获取插件实例
|
|
430
|
-
const clawPlugin = await opencode.plugins.get('clawmessenger');
|
|
431
|
-
|
|
432
|
-
// 发送私聊消息
|
|
433
|
-
await clawPlugin.sendToUser('user123', '你好,我是 AI 助手');
|
|
434
|
-
|
|
435
|
-
// 发送群聊消息
|
|
436
|
-
await clawPlugin.sendToUser('group456', '大家好', { conversationType: 3 });
|
|
437
|
-
|
|
438
|
-
// 发送带额外数据的消息
|
|
439
|
-
await clawPlugin.sendToUser('admin', '知识库更新', {
|
|
440
|
-
extra: { category: 'knowledge', priority: 'high' }
|
|
441
|
-
});
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
## 开发指南
|
|
445
|
-
|
|
446
|
-
```bash
|
|
447
|
-
# 安装依赖
|
|
448
|
-
npm install
|
|
449
|
-
|
|
450
|
-
# 开发模式(自动编译)
|
|
451
|
-
npm run dev
|
|
452
|
-
|
|
453
|
-
# 类型检查
|
|
454
|
-
npm run typecheck
|
|
455
|
-
|
|
456
|
-
# 构建
|
|
457
|
-
npm run build
|
|
458
|
-
|
|
459
|
-
# 本地运行
|
|
460
|
-
npm run start -- --daemon
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### 项目脚本
|
|
464
|
-
|
|
465
|
-
| 脚本 | 说明 |
|
|
466
|
-
|------|------|
|
|
467
|
-
| `npm run build` | 编译 TypeScript 到 `dist/` |
|
|
468
|
-
| `npm run dev` | 开发模式自动编译 |
|
|
469
|
-
| `npm run start` | 运行 `dist/cli.js` |
|
|
470
|
-
| `npm run lint` | 类型检查(不生成文件) |
|
|
471
|
-
| `npm run typecheck` | 同 `lint` |
|
|
472
|
-
|
|
473
|
-
### 关键依赖版本
|
|
474
|
-
|
|
475
|
-
- `@rongcloud/imlib-next`: `5.36.6`
|
|
476
|
-
- `@opencode-ai/sdk`: `^1.0.0`
|
|
477
|
-
- `pino` / `pino-pretty`: `^9.0.0` / `^11.0.0`
|
|
478
|
-
- `commander`: `^12.0.0`
|
|
479
|
-
- `zod`: `^3.23.0`
|
|
480
|
-
|
|
481
|
-
## 故障排查
|
|
482
|
-
|
|
483
|
-
### 服务启动后立即退出
|
|
484
|
-
|
|
485
|
-
```bash
|
|
486
|
-
# 查看详细日志
|
|
487
|
-
journalctl -u opencode-clawmessenger -n 50 --no-pager
|
|
488
|
-
opencode-clawmessenger logs -n 100
|
|
489
|
-
|
|
490
|
-
# 常见问题
|
|
491
|
-
# 1. OpenCode 未运行
|
|
492
|
-
# 2. 配置文件中 token 过期
|
|
493
|
-
# 3. 端口冲突
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
### 插件模式自动注册失败
|
|
497
|
-
|
|
498
|
-
如果插件启动时提示自动注册失败,可以尝试以下方法:
|
|
499
|
-
|
|
500
|
-
**1. 使用独立模式手动注册**
|
|
501
|
-
|
|
502
|
-
```bash
|
|
503
|
-
# 安装 CLI 工具
|
|
504
|
-
npm install -g @quukk/opencode-clawmessenger
|
|
505
|
-
|
|
506
|
-
# 手动运行 setup
|
|
507
|
-
opencode-clawmessenger setup
|
|
508
|
-
|
|
509
|
-
# 获取到的 token 会自动保存,然后重新启动 opencode serve
|
|
510
|
-
```
|
|
511
|
-
|
|
512
|
-
**2. 通过环境变量配置已有凭据**
|
|
513
|
-
|
|
514
|
-
```bash
|
|
515
|
-
export CLAW_TOKEN=your_rongcloud_token
|
|
516
|
-
export CLAW_ACCOUNT_ID=your_account_id
|
|
517
|
-
export CLAW_APP_KEY=your_app_key
|
|
518
|
-
opencode serve
|
|
519
|
-
```
|
|
520
|
-
|
|
521
|
-
**3. 检查网络连接**
|
|
522
|
-
|
|
523
|
-
确保能够访问 ClawMessenger 注册服务器(默认:https://newsradar.dreamdt.cn/im)
|
|
524
|
-
|
|
525
|
-
### 融云连接失败
|
|
526
|
-
|
|
527
|
-
检查 `clawmessenger.json` 中的 `token` 和 `appKey`:
|
|
528
|
-
|
|
529
|
-
```bash
|
|
530
|
-
cat ~/.config/opencode/clawmessenger.json
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
重新运行 `setup` 生成新 token:
|
|
534
|
-
|
|
535
|
-
```bash
|
|
536
|
-
opencode-clawmessenger setup
|
|
537
|
-
```
|
|
538
|
-
|
|
539
|
-
### 消息收不到
|
|
540
|
-
|
|
541
|
-
1. 确认服务状态为 `connected`
|
|
542
|
-
2. 检查融云消息是否被过滤(查看日志中的 "忽略" 信息)
|
|
543
|
-
3. 确认 `RC:ReadNtf` 不影响业务
|
|
544
|
-
|
|
545
|
-
### 流式消息不更新
|
|
546
|
-
|
|
547
|
-
1. 确认前端 `enableReadV5: true`
|
|
548
|
-
2. 检查融云 SDK 版本 >= 5.30
|
|
549
|
-
3. 查看日志中 `seq` 是否从 1 开始递增
|
|
550
|
-
|
|
551
|
-
### 卸载
|
|
552
|
-
|
|
553
|
-
```bash
|
|
554
|
-
curl -fsSL https://raw.githubusercontent.com/neomei/opencode-clawmessenger/main/scripts/uninstall.sh | sudo bash
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
## NPM 包使用
|
|
558
|
-
|
|
559
|
-
### 作为库导入
|
|
560
|
-
|
|
561
|
-
```bash
|
|
562
|
-
npm install @neomei/opencode-clawmessenger
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
```typescript
|
|
566
|
-
import { createLogger } from '@neomei/opencode-clawmessenger';
|
|
567
|
-
|
|
568
|
-
const log = createLogger('MyApp');
|
|
569
|
-
log.info('Hello from ClawMessenger');
|
|
570
|
-
```
|
|
571
|
-
|
|
572
|
-
### 版本更新
|
|
573
|
-
|
|
574
|
-
```bash
|
|
575
|
-
# 全局安装更新
|
|
576
|
-
npm update -g @neomei/opencode-clawmessenger
|
|
577
|
-
|
|
578
|
-
# 或使用 @latest
|
|
579
|
-
npm install -g @neomei/opencode-clawmessenger@latest
|
|
580
|
-
|
|
581
|
-
# 查看版本
|
|
582
|
-
opencode-clawmessenger --version
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
## GitHub Release 使用
|
|
586
|
-
|
|
587
|
-
每次推送 `v*` 标签会自动触发 GitHub Actions 发布到 NPM:
|
|
588
|
-
|
|
589
|
-
```bash
|
|
590
|
-
# 1. 更新版本号
|
|
591
|
-
npm version patch # 或 minor / major
|
|
592
|
-
|
|
593
|
-
# 2. 推送到 GitHub(带标签)
|
|
594
|
-
git push origin main --tags
|
|
595
|
-
|
|
596
|
-
# 3. GitHub Actions 会自动构建并发布到 NPM Registry
|
|
597
|
-
```
|
|
598
|
-
|
|
599
|
-
Release 流程:
|
|
600
|
-
|
|
601
|
-
1. 代码合并到 `main` 分支
|
|
602
|
-
2. 运行 `npm version <patch|minor|major>` 更新 `package.json` 并创建 Git tag
|
|
603
|
-
3. `git push origin main --tags`
|
|
604
|
-
4. GitHub Actions 触发 `publish.yml`
|
|
605
|
-
5. 自动运行 `npm ci` → `npm run build` → `npm publish --access public`
|
|
606
|
-
|
|
607
|
-
### 从 GitHub Release 直接安装
|
|
608
|
-
|
|
609
|
-
```bash
|
|
610
|
-
# 查看最新 release
|
|
611
|
-
curl -s https://api.github.com/repos/neomei/opencode-clawmessenger/releases/latest | grep tag_name
|
|
612
|
-
|
|
613
|
-
# 下载并安装特定版本
|
|
614
|
-
npm install -g @neomei/opencode-clawmessenger@0.3.0
|
|
615
|
-
```
|
|
616
|
-
|
|
617
|
-
## 许可证
|
|
618
|
-
|
|
619
|
-
[MIT](LICENSE) © neomei
|
|
620
|
-
|
|
621
|
-
---
|
|
622
|
-
|
|
623
|
-
**问题反馈**:请通过 [GitHub Issues](https://github.com/neomei/opencode-clawmessenger/issues) 提交问题或建议。
|
|
1
|
+
# OpenCode ClawMessenger
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@quukk/opencode-clawmessenger)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
> OpenCode ClawMessenger 是一个智能桥接插件,将 IM 聊天消息接入 OpenCode AI 会话系统,实现 AI 自动回复。
|
|
7
|
+
|
|
8
|
+
## 核心特性
|
|
9
|
+
|
|
10
|
+
- **AI 自动回复**:聊天消息自动转发给 OpenCode 处理,AI 响应实时推回给用户
|
|
11
|
+
- **双模式运行**:支持作为 OpenCode 插件运行,或作为独立守护进程运行
|
|
12
|
+
- **自动注册**:首次运行自动生成二维码,App 扫码即可完成绑定
|
|
13
|
+
- **流式消息**:支持 SSE 流式响应,AI 回答实时到达
|
|
14
|
+
- **消息已读回执**:支持已读回执,单聊和群聊均兼容
|
|
15
|
+
- **设备管理**:支持远程设备状态查询、启动/停止/重启等 P2P 命令
|
|
16
|
+
|
|
17
|
+
## 安装
|
|
18
|
+
|
|
19
|
+
### npm 全局安装(推荐)
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g @quukk/opencode-clawmessenger@latest
|
|
23
|
+
opencode-clawmessenger setup
|
|
24
|
+
opencode-clawmessenger start
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### Docker 运行
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
docker build -t opencode-clawmessenger .
|
|
31
|
+
docker run -d \
|
|
32
|
+
--name clawmessenger \
|
|
33
|
+
-v ~/.config/opencode:/root/.config/opencode \
|
|
34
|
+
-e CLAW_OPENCODE_URL=http://host.docker.internal:19876 \
|
|
35
|
+
opencode-clawmessenger
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 初始化
|
|
39
|
+
|
|
40
|
+
运行 `opencode-clawmessenger setup` 后:
|
|
41
|
+
|
|
42
|
+
1. 自动注册节点
|
|
43
|
+
2. 生成 Token 和节点 ID
|
|
44
|
+
3. 保存配置到 `~/.config/opencode/clawmessenger.json`
|
|
45
|
+
4. 终端打印二维码,App 扫码绑定
|
|
46
|
+
|
|
47
|
+
## CLI 命令
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
# 启动服务(前台)
|
|
51
|
+
opencode-clawmessenger start
|
|
52
|
+
|
|
53
|
+
# 后台守护进程
|
|
54
|
+
opencode-clawmessenger start --daemon
|
|
55
|
+
|
|
56
|
+
# 查看状态
|
|
57
|
+
opencode-clawmessenger status
|
|
58
|
+
|
|
59
|
+
# 查看日志
|
|
60
|
+
opencode-clawmessenger logs -n 100
|
|
61
|
+
|
|
62
|
+
# 初始化配置
|
|
63
|
+
opencode-clawmessenger setup
|
|
64
|
+
|
|
65
|
+
# 停止服务
|
|
66
|
+
opencode-clawmessenger stop
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## 许可证
|
|
70
|
+
|
|
71
|
+
[MIT](LICENSE) © quukk
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import('../dist/cli.js');
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import('../dist/cli.js');
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import('../dist/cli.js').then(() => {}).catch(() => {
|
|
3
|
-
process.argv = [process.argv[0], process.argv[1], 'setup'];
|
|
4
|
-
import('../dist/cli.js');
|
|
5
|
-
});
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import('../dist/cli.js').then(() => {}).catch(() => {
|
|
3
|
+
process.argv = [process.argv[0], process.argv[1], 'setup'];
|
|
4
|
+
import('../dist/cli.js');
|
|
5
|
+
});
|