@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.
Files changed (105) hide show
  1. package/README.md +526 -0
  2. package/bin/opencode-clawmessenger +2 -0
  3. package/bin/opencode-clawmessenger-setup +5 -0
  4. package/bin/opencode-clawmessenger.cmd +5 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +288 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/core/auto-register.d.ts +24 -0
  10. package/dist/core/auto-register.d.ts.map +1 -0
  11. package/dist/core/auto-register.js +174 -0
  12. package/dist/core/auto-register.js.map +1 -0
  13. package/dist/core/config.d.ts +68 -0
  14. package/dist/core/config.d.ts.map +1 -0
  15. package/dist/core/config.js +80 -0
  16. package/dist/core/config.js.map +1 -0
  17. package/dist/core/daemon.d.ts +19 -0
  18. package/dist/core/daemon.d.ts.map +1 -0
  19. package/dist/core/daemon.js +77 -0
  20. package/dist/core/daemon.js.map +1 -0
  21. package/dist/core/dedup.d.ts +8 -0
  22. package/dist/core/dedup.d.ts.map +1 -0
  23. package/dist/core/dedup.js +25 -0
  24. package/dist/core/dedup.js.map +1 -0
  25. package/dist/core/hook-manager.d.ts +11 -0
  26. package/dist/core/hook-manager.d.ts.map +1 -0
  27. package/dist/core/hook-manager.js +33 -0
  28. package/dist/core/hook-manager.js.map +1 -0
  29. package/dist/core/logger.d.ts +5 -0
  30. package/dist/core/logger.d.ts.map +1 -0
  31. package/dist/core/logger.js +49 -0
  32. package/dist/core/logger.js.map +1 -0
  33. package/dist/core/mac-address.d.ts +2 -0
  34. package/dist/core/mac-address.d.ts.map +1 -0
  35. package/dist/core/mac-address.js +43 -0
  36. package/dist/core/mac-address.js.map +1 -0
  37. package/dist/core/message-handler.d.ts +64 -0
  38. package/dist/core/message-handler.d.ts.map +1 -0
  39. package/dist/core/message-handler.js +879 -0
  40. package/dist/core/message-handler.js.map +1 -0
  41. package/dist/core/ops-assistant.d.ts +26 -0
  42. package/dist/core/ops-assistant.d.ts.map +1 -0
  43. package/dist/core/ops-assistant.js +270 -0
  44. package/dist/core/ops-assistant.js.map +1 -0
  45. package/dist/core/qr-crypto.d.ts +2 -0
  46. package/dist/core/qr-crypto.d.ts.map +1 -0
  47. package/dist/core/qr-crypto.js +66 -0
  48. package/dist/core/qr-crypto.js.map +1 -0
  49. package/dist/core/session-manager.d.ts +22 -0
  50. package/dist/core/session-manager.d.ts.map +1 -0
  51. package/dist/core/session-manager.js +144 -0
  52. package/dist/core/session-manager.js.map +1 -0
  53. package/dist/core/types.d.ts +78 -0
  54. package/dist/core/types.d.ts.map +1 -0
  55. package/dist/core/types.js +26 -0
  56. package/dist/core/types.js.map +1 -0
  57. package/dist/index.d.ts +13 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +12 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/openclaw/client.d.ts +36 -0
  62. package/dist/openclaw/client.d.ts.map +1 -0
  63. package/dist/openclaw/client.js +494 -0
  64. package/dist/openclaw/client.js.map +1 -0
  65. package/dist/opencode/client.d.ts +35 -0
  66. package/dist/opencode/client.d.ts.map +1 -0
  67. package/dist/opencode/client.js +276 -0
  68. package/dist/opencode/client.js.map +1 -0
  69. package/dist/opencode/event-handler.d.ts +38 -0
  70. package/dist/opencode/event-handler.d.ts.map +1 -0
  71. package/dist/opencode/event-handler.js +467 -0
  72. package/dist/opencode/event-handler.js.map +1 -0
  73. package/dist/plugin.d.ts +4 -0
  74. package/dist/plugin.d.ts.map +1 -0
  75. package/dist/plugin.js +84 -0
  76. package/dist/plugin.js.map +1 -0
  77. package/dist/rongcloud/client.d.ts +34 -0
  78. package/dist/rongcloud/client.d.ts.map +1 -0
  79. package/dist/rongcloud/client.js +292 -0
  80. package/dist/rongcloud/client.js.map +1 -0
  81. package/dist/rongcloud/env-polyfill.d.ts +2 -0
  82. package/dist/rongcloud/env-polyfill.d.ts.map +1 -0
  83. package/dist/rongcloud/env-polyfill.js +107 -0
  84. package/dist/rongcloud/env-polyfill.js.map +1 -0
  85. package/dist/rongcloud/server-api.d.ts +38 -0
  86. package/dist/rongcloud/server-api.d.ts.map +1 -0
  87. package/dist/rongcloud/server-api.js +157 -0
  88. package/dist/rongcloud/server-api.js.map +1 -0
  89. package/dist/standalone.d.ts +10 -0
  90. package/dist/standalone.d.ts.map +1 -0
  91. package/dist/standalone.js +229 -0
  92. package/dist/standalone.js.map +1 -0
  93. package/dist/types/plugin.d.ts +20 -0
  94. package/dist/types/plugin.d.ts.map +1 -0
  95. package/dist/types/plugin.js +2 -0
  96. package/dist/types/plugin.js.map +1 -0
  97. package/dist/websocket/client.d.ts +20 -0
  98. package/dist/websocket/client.d.ts.map +1 -0
  99. package/dist/websocket/client.js +88 -0
  100. package/dist/websocket/client.js.map +1 -0
  101. package/dist/websocket/server-client.d.ts +22 -0
  102. package/dist/websocket/server-client.d.ts.map +1 -0
  103. package/dist/websocket/server-client.js +98 -0
  104. package/dist/websocket/server-client.js.map +1 -0
  105. package/package.json +71 -0
package/README.md ADDED
@@ -0,0 +1,526 @@
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 插件使用,而非独立守护进程:
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) 提交问题或建议。
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import('../dist/cli.js');
@@ -0,0 +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
+ });
@@ -0,0 +1,5 @@
1
+ @echo off
2
+ :: Set UTF-8 code page for proper Chinese character display in Windows console
3
+ chcp 65001 >nul 2>&1
4
+ :: Run the CLI via Node.js
5
+ node "%~dp0..\dist\cli.js" %*
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}