@quukk/opencode-clawmessenger 0.1.0
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 +526 -0
- package/bin/opencode-clawmessenger +2 -0
- package/bin/opencode-clawmessenger-setup +5 -0
- package/bin/opencode-clawmessenger.cmd +5 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +288 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/auto-register.d.ts +24 -0
- package/dist/core/auto-register.d.ts.map +1 -0
- package/dist/core/auto-register.js +174 -0
- package/dist/core/auto-register.js.map +1 -0
- package/dist/core/config.d.ts +68 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +80 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/daemon.d.ts +19 -0
- package/dist/core/daemon.d.ts.map +1 -0
- package/dist/core/daemon.js +77 -0
- package/dist/core/daemon.js.map +1 -0
- package/dist/core/dedup.d.ts +8 -0
- package/dist/core/dedup.d.ts.map +1 -0
- package/dist/core/dedup.js +25 -0
- package/dist/core/dedup.js.map +1 -0
- package/dist/core/hook-manager.d.ts +11 -0
- package/dist/core/hook-manager.d.ts.map +1 -0
- package/dist/core/hook-manager.js +33 -0
- package/dist/core/hook-manager.js.map +1 -0
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +49 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mac-address.d.ts +2 -0
- package/dist/core/mac-address.d.ts.map +1 -0
- package/dist/core/mac-address.js +43 -0
- package/dist/core/mac-address.js.map +1 -0
- package/dist/core/message-handler.d.ts +64 -0
- package/dist/core/message-handler.d.ts.map +1 -0
- package/dist/core/message-handler.js +879 -0
- package/dist/core/message-handler.js.map +1 -0
- package/dist/core/ops-assistant.d.ts +26 -0
- package/dist/core/ops-assistant.d.ts.map +1 -0
- package/dist/core/ops-assistant.js +270 -0
- package/dist/core/ops-assistant.js.map +1 -0
- package/dist/core/qr-crypto.d.ts +2 -0
- package/dist/core/qr-crypto.d.ts.map +1 -0
- package/dist/core/qr-crypto.js +66 -0
- package/dist/core/qr-crypto.js.map +1 -0
- package/dist/core/session-manager.d.ts +22 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +144 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/types.d.ts +78 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +26 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/openclaw/client.d.ts +36 -0
- package/dist/openclaw/client.d.ts.map +1 -0
- package/dist/openclaw/client.js +494 -0
- package/dist/openclaw/client.js.map +1 -0
- package/dist/opencode/client.d.ts +35 -0
- package/dist/opencode/client.d.ts.map +1 -0
- package/dist/opencode/client.js +276 -0
- package/dist/opencode/client.js.map +1 -0
- package/dist/opencode/event-handler.d.ts +38 -0
- package/dist/opencode/event-handler.d.ts.map +1 -0
- package/dist/opencode/event-handler.js +467 -0
- package/dist/opencode/event-handler.js.map +1 -0
- package/dist/plugin.d.ts +4 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +84 -0
- package/dist/plugin.js.map +1 -0
- package/dist/rongcloud/client.d.ts +34 -0
- package/dist/rongcloud/client.d.ts.map +1 -0
- package/dist/rongcloud/client.js +292 -0
- package/dist/rongcloud/client.js.map +1 -0
- package/dist/rongcloud/env-polyfill.d.ts +2 -0
- package/dist/rongcloud/env-polyfill.d.ts.map +1 -0
- package/dist/rongcloud/env-polyfill.js +107 -0
- package/dist/rongcloud/env-polyfill.js.map +1 -0
- package/dist/rongcloud/server-api.d.ts +38 -0
- package/dist/rongcloud/server-api.d.ts.map +1 -0
- package/dist/rongcloud/server-api.js +157 -0
- package/dist/rongcloud/server-api.js.map +1 -0
- package/dist/standalone.d.ts +10 -0
- package/dist/standalone.d.ts.map +1 -0
- package/dist/standalone.js +229 -0
- package/dist/standalone.js.map +1 -0
- package/dist/types/plugin.d.ts +20 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +2 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/websocket/client.d.ts +20 -0
- package/dist/websocket/client.d.ts.map +1 -0
- package/dist/websocket/client.js +88 -0
- package/dist/websocket/client.js.map +1 -0
- package/dist/websocket/server-client.d.ts +22 -0
- package/dist/websocket/server-client.d.ts.map +1 -0
- package/dist/websocket/server-client.js +98 -0
- package/dist/websocket/server-client.js.map +1 -0
- package/package.json +71 -0
package/README.md
ADDED
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
# OpenCode ClawMessenger
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@neomei/opencode-clawmessenger)
|
|
4
|
+
[](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 插件使用,而非独立守护进程:
|
|
365
|
+
|
|
366
|
+
```typescript
|
|
367
|
+
// 在 OpenCode 插件入口中
|
|
368
|
+
import clawMessenger from '@neomei/opencode-clawmessenger/plugin';
|
|
369
|
+
|
|
370
|
+
export default {
|
|
371
|
+
id: 'my-opencode-plugin',
|
|
372
|
+
server: clawMessenger.server,
|
|
373
|
+
};
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
## 开发指南
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# 安装依赖
|
|
380
|
+
npm install
|
|
381
|
+
|
|
382
|
+
# 开发模式(自动编译)
|
|
383
|
+
npm run dev
|
|
384
|
+
|
|
385
|
+
# 类型检查
|
|
386
|
+
npm run typecheck
|
|
387
|
+
|
|
388
|
+
# 构建
|
|
389
|
+
npm run build
|
|
390
|
+
|
|
391
|
+
# 本地运行
|
|
392
|
+
npm run start -- --daemon
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
### 项目脚本
|
|
396
|
+
|
|
397
|
+
| 脚本 | 说明 |
|
|
398
|
+
|------|------|
|
|
399
|
+
| `npm run build` | 编译 TypeScript 到 `dist/` |
|
|
400
|
+
| `npm run dev` | 开发模式自动编译 |
|
|
401
|
+
| `npm run start` | 运行 `dist/cli.js` |
|
|
402
|
+
| `npm run lint` | 类型检查(不生成文件) |
|
|
403
|
+
| `npm run typecheck` | 同 `lint` |
|
|
404
|
+
|
|
405
|
+
### 关键依赖版本
|
|
406
|
+
|
|
407
|
+
- `@rongcloud/imlib-next`: `5.36.6`
|
|
408
|
+
- `@opencode-ai/sdk`: `^1.0.0`
|
|
409
|
+
- `pino` / `pino-pretty`: `^9.0.0` / `^11.0.0`
|
|
410
|
+
- `commander`: `^12.0.0`
|
|
411
|
+
- `zod`: `^3.23.0`
|
|
412
|
+
|
|
413
|
+
## 故障排查
|
|
414
|
+
|
|
415
|
+
### 服务启动后立即退出
|
|
416
|
+
|
|
417
|
+
```bash
|
|
418
|
+
# 查看详细日志
|
|
419
|
+
journalctl -u opencode-clawmessenger -n 50 --no-pager
|
|
420
|
+
opencode-clawmessenger logs -n 100
|
|
421
|
+
|
|
422
|
+
# 常见问题
|
|
423
|
+
# 1. OpenCode 未运行
|
|
424
|
+
# 2. 配置文件中 token 过期
|
|
425
|
+
# 3. 端口冲突
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### 融云连接失败
|
|
429
|
+
|
|
430
|
+
检查 `clawmessenger.json` 中的 `token` 和 `appKey`:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
cat ~/.config/opencode/clawmessenger.json
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
重新运行 `setup` 生成新 token:
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
opencode-clawmessenger setup
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### 消息收不到
|
|
443
|
+
|
|
444
|
+
1. 确认服务状态为 `connected`
|
|
445
|
+
2. 检查融云消息是否被过滤(查看日志中的 "忽略" 信息)
|
|
446
|
+
3. 确认 `RC:ReadNtf` 不影响业务
|
|
447
|
+
|
|
448
|
+
### 流式消息不更新
|
|
449
|
+
|
|
450
|
+
1. 确认前端 `enableReadV5: true`
|
|
451
|
+
2. 检查融云 SDK 版本 >= 5.30
|
|
452
|
+
3. 查看日志中 `seq` 是否从 1 开始递增
|
|
453
|
+
|
|
454
|
+
### 卸载
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
curl -fsSL https://raw.githubusercontent.com/neomei/opencode-clawmessenger/main/scripts/uninstall.sh | sudo bash
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
## NPM 包使用
|
|
461
|
+
|
|
462
|
+
### 作为库导入
|
|
463
|
+
|
|
464
|
+
```bash
|
|
465
|
+
npm install @neomei/opencode-clawmessenger
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
```typescript
|
|
469
|
+
import { createLogger } from '@neomei/opencode-clawmessenger';
|
|
470
|
+
|
|
471
|
+
const log = createLogger('MyApp');
|
|
472
|
+
log.info('Hello from ClawMessenger');
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### 版本更新
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
# 全局安装更新
|
|
479
|
+
npm update -g @neomei/opencode-clawmessenger
|
|
480
|
+
|
|
481
|
+
# 或使用 @latest
|
|
482
|
+
npm install -g @neomei/opencode-clawmessenger@latest
|
|
483
|
+
|
|
484
|
+
# 查看版本
|
|
485
|
+
opencode-clawmessenger --version
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
## GitHub Release 使用
|
|
489
|
+
|
|
490
|
+
每次推送 `v*` 标签会自动触发 GitHub Actions 发布到 NPM:
|
|
491
|
+
|
|
492
|
+
```bash
|
|
493
|
+
# 1. 更新版本号
|
|
494
|
+
npm version patch # 或 minor / major
|
|
495
|
+
|
|
496
|
+
# 2. 推送到 GitHub(带标签)
|
|
497
|
+
git push origin main --tags
|
|
498
|
+
|
|
499
|
+
# 3. GitHub Actions 会自动构建并发布到 NPM Registry
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
Release 流程:
|
|
503
|
+
|
|
504
|
+
1. 代码合并到 `main` 分支
|
|
505
|
+
2. 运行 `npm version <patch|minor|major>` 更新 `package.json` 并创建 Git tag
|
|
506
|
+
3. `git push origin main --tags`
|
|
507
|
+
4. GitHub Actions 触发 `publish.yml`
|
|
508
|
+
5. 自动运行 `npm ci` → `npm run build` → `npm publish --access public`
|
|
509
|
+
|
|
510
|
+
### 从 GitHub Release 直接安装
|
|
511
|
+
|
|
512
|
+
```bash
|
|
513
|
+
# 查看最新 release
|
|
514
|
+
curl -s https://api.github.com/repos/neomei/opencode-clawmessenger/releases/latest | grep tag_name
|
|
515
|
+
|
|
516
|
+
# 下载并安装特定版本
|
|
517
|
+
npm install -g @neomei/opencode-clawmessenger@0.3.0
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
## 许可证
|
|
521
|
+
|
|
522
|
+
[MIT](LICENSE) © neomei
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
**问题反馈**:请通过 [GitHub Issues](https://github.com/neomei/opencode-clawmessenger/issues) 提交问题或建议。
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|