@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.
Files changed (106) hide show
  1. package/README.md +71 -623
  2. package/bin/opencode-clawmessenger +2 -2
  3. package/bin/opencode-clawmessenger-setup +5 -5
  4. package/dist/cli.d.ts +0 -1
  5. package/dist/cli.js +1 -288
  6. package/dist/core/auto-register.d.ts +0 -1
  7. package/dist/core/auto-register.js +1 -174
  8. package/dist/core/auto-serve.d.ts +13 -0
  9. package/dist/core/auto-serve.js +1 -0
  10. package/dist/core/config.d.ts +2 -3
  11. package/dist/core/config.js +1 -80
  12. package/dist/core/daemon.d.ts +0 -1
  13. package/dist/core/daemon.js +1 -77
  14. package/dist/core/dedup.d.ts +0 -1
  15. package/dist/core/dedup.js +1 -25
  16. package/dist/core/hook-manager.d.ts +0 -1
  17. package/dist/core/hook-manager.js +1 -33
  18. package/dist/core/logger.d.ts +0 -1
  19. package/dist/core/logger.js +1 -49
  20. package/dist/core/mac-address.d.ts +0 -1
  21. package/dist/core/mac-address.js +1 -43
  22. package/dist/core/message-handler.d.ts +0 -1
  23. package/dist/core/message-handler.js +1 -988
  24. package/dist/core/ops-assistant.d.ts +0 -1
  25. package/dist/core/ops-assistant.js +1 -270
  26. package/dist/core/qr-crypto.d.ts +0 -1
  27. package/dist/core/qr-crypto.js +1 -66
  28. package/dist/core/session-manager.d.ts +0 -1
  29. package/dist/core/session-manager.js +1 -144
  30. package/dist/core/types.d.ts +1 -2
  31. package/dist/core/types.js +1 -26
  32. package/dist/index.d.ts +0 -1
  33. package/dist/index.js +1 -16
  34. package/dist/openclaw/client.d.ts +0 -1
  35. package/dist/openclaw/client.js +1 -494
  36. package/dist/opencode/client.d.ts +0 -1
  37. package/dist/opencode/client.js +1 -279
  38. package/dist/opencode/event-handler.d.ts +0 -1
  39. package/dist/opencode/event-handler.js +1 -467
  40. package/dist/plugin.d.ts +0 -1
  41. package/dist/plugin.js +1 -148
  42. package/dist/rongcloud/client.d.ts +0 -1
  43. package/dist/rongcloud/client.js +1 -292
  44. package/dist/rongcloud/env-polyfill.d.ts +0 -1
  45. package/dist/rongcloud/env-polyfill.js +1 -107
  46. package/dist/rongcloud/server-api.d.ts +0 -1
  47. package/dist/rongcloud/server-api.js +1 -157
  48. package/dist/standalone.d.ts +0 -1
  49. package/dist/standalone.js +1 -229
  50. package/dist/types/plugin.d.ts +0 -1
  51. package/dist/types/plugin.js +1 -2
  52. package/dist/websocket/client.d.ts +0 -1
  53. package/dist/websocket/client.js +1 -88
  54. package/dist/websocket/server-client.d.ts +0 -1
  55. package/dist/websocket/server-client.js +1 -98
  56. package/package.json +83 -81
  57. package/dist/cli.d.ts.map +0 -1
  58. package/dist/cli.js.map +0 -1
  59. package/dist/core/auto-register.d.ts.map +0 -1
  60. package/dist/core/auto-register.js.map +0 -1
  61. package/dist/core/config.d.ts.map +0 -1
  62. package/dist/core/config.js.map +0 -1
  63. package/dist/core/daemon.d.ts.map +0 -1
  64. package/dist/core/daemon.js.map +0 -1
  65. package/dist/core/dedup.d.ts.map +0 -1
  66. package/dist/core/dedup.js.map +0 -1
  67. package/dist/core/hook-manager.d.ts.map +0 -1
  68. package/dist/core/hook-manager.js.map +0 -1
  69. package/dist/core/logger.d.ts.map +0 -1
  70. package/dist/core/logger.js.map +0 -1
  71. package/dist/core/mac-address.d.ts.map +0 -1
  72. package/dist/core/mac-address.js.map +0 -1
  73. package/dist/core/message-handler.d.ts.map +0 -1
  74. package/dist/core/message-handler.js.map +0 -1
  75. package/dist/core/ops-assistant.d.ts.map +0 -1
  76. package/dist/core/ops-assistant.js.map +0 -1
  77. package/dist/core/qr-crypto.d.ts.map +0 -1
  78. package/dist/core/qr-crypto.js.map +0 -1
  79. package/dist/core/session-manager.d.ts.map +0 -1
  80. package/dist/core/session-manager.js.map +0 -1
  81. package/dist/core/types.d.ts.map +0 -1
  82. package/dist/core/types.js.map +0 -1
  83. package/dist/index.d.ts.map +0 -1
  84. package/dist/index.js.map +0 -1
  85. package/dist/openclaw/client.d.ts.map +0 -1
  86. package/dist/openclaw/client.js.map +0 -1
  87. package/dist/opencode/client.d.ts.map +0 -1
  88. package/dist/opencode/client.js.map +0 -1
  89. package/dist/opencode/event-handler.d.ts.map +0 -1
  90. package/dist/opencode/event-handler.js.map +0 -1
  91. package/dist/plugin.d.ts.map +0 -1
  92. package/dist/plugin.js.map +0 -1
  93. package/dist/rongcloud/client.d.ts.map +0 -1
  94. package/dist/rongcloud/client.js.map +0 -1
  95. package/dist/rongcloud/env-polyfill.d.ts.map +0 -1
  96. package/dist/rongcloud/env-polyfill.js.map +0 -1
  97. package/dist/rongcloud/server-api.d.ts.map +0 -1
  98. package/dist/rongcloud/server-api.js.map +0 -1
  99. package/dist/standalone.d.ts.map +0 -1
  100. package/dist/standalone.js.map +0 -1
  101. package/dist/types/plugin.d.ts.map +0 -1
  102. package/dist/types/plugin.js.map +0 -1
  103. package/dist/websocket/client.d.ts.map +0 -1
  104. package/dist/websocket/client.js.map +0 -1
  105. package/dist/websocket/server-client.d.ts.map +0 -1
  106. package/dist/websocket/server-client.js.map +0 -1
package/README.md CHANGED
@@ -1,623 +1,71 @@
1
- # OpenCode ClawMessenger
2
-
3
- [![npm version](https://img.shields.io/npm/v/@neomei/opencode-clawmessenger.svg)](https://www.npmjs.com/package/@neomei/opencode-clawmessenger)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
-
6
- > OpenCode ClawMessenger 是一个 TypeScript 桥接插件,连接 [RongCloud IM(融云/虾说)](https://www.rongcloud.cn/) [OpenCode](https://opencode.ai/) 会话 API。它接收来自融云的聊天消息,转发给 OpenCode 处理,并将流式响应实时推回给用户。
7
-
8
- ## 目录
9
-
10
- - [核心特性](#核心特性)
11
- - [快速开始](#快速开始)
12
- - [前置要求](#前置要求)
13
- - [方式一:npm 全局安装(推荐)](#方式一npm-全局安装推荐)
14
- - [方式二:源码安装](#方式二源码安装)
15
- - [方式三:Docker 运行](#方式三docker-运行)
16
- - [初始化配置](#初始化配置)
17
- - [CLI 命令文档](#cli-命令文档)
18
- - [Linux 生产部署](#linux-生产部署)
19
- - [systemd 服务](#systemd-服务)
20
- - [自动安装脚本](#自动安装脚本)
21
- - [手动安装](#手动安装)
22
- - [日志查看](#日志查看)
23
- - [环境变量](#环境变量)
24
- - [配置优先级](#配置优先级)
25
- - [插件模式](#插件模式)
26
- - [开发指南](#开发指南)
27
- - [故障排查](#故障排查)
28
- - [NPM 包使用](#npm-包使用)
29
- - [GitHub Release 使用](#github-release-使用)
30
- - [许可证](#许可证)
31
-
32
- ## 核心特性
33
-
34
- - **双模式运行**:既支持作为 OpenCode 插件加载,也支持作为独立守护进程运行
35
- - **流式消息推送**:OpenCode SSE 响应通过融云 `RC:StreamMsg` 实时推送给前端
36
- - **消息已读回执**:支持 V5/V2/旧版已读回执 API,单聊和群聊均兼容
37
- - **设备管理协议**:支持远程设备状态查询、启动/停止/重启、配置修复等 P2P 命令
38
- - **自动注册**:首次运行 `setup` 自动向 ClawMessenger 服务器注册节点并生成二维码
39
- - **二维码加密**:与小程序共享 XOR + Base64 加密算法,保证扫码绑定安全
40
- - **结构化日志**:基于 Pino 的日志输出,支持文件和控制台双输出
41
-
42
-
43
- ## 快速开始
44
-
45
- ### 前置要求
46
-
47
- - **Node.js** >= 18.0.0
48
- - **操作系统**:Windows / macOS / Linux(推荐 Linux + systemd 生产环境)
49
- - **OpenCode Server**:本地或远程可访问的 OpenCode 服务
50
- - **融云账号**:用于 IM 消息收发(通过 ClawMessenger 服务器自动注册)
51
-
52
- ### 方式一:npm 全局安装(推荐)
53
-
54
- ```bash
55
- # 安装
56
- npm install -g @neomei/opencode-clawmessenger@latest
57
-
58
- # 初始化(生成二维码,手机 App 扫码绑定)
59
- opencode-clawmessenger setup
60
-
61
- # 前台运行(调试)
62
- opencode-clawmessenger start
63
-
64
- # 或作为守护进程运行
65
- opencode-clawmessenger start --daemon
66
- ```
67
-
68
- ### 方式二:源码安装
69
-
70
- ```bash
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
+ [![npm version](https://img.shields.io/npm/v/@quukk/opencode-clawmessenger.svg)](https://www.npmjs.com/package/@quukk/opencode-clawmessenger)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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
+ });