@wu529778790/open-im 1.2.1 → 1.2.3-beta.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 (2) hide show
  1. package/README.md +32 -290
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -13,7 +13,7 @@
13
13
  ## 环境要求
14
14
 
15
15
  - **Node.js** >= 20
16
- - **AI CLI**:已安装 Claude Code CLI(或 Codex/Cursor)并加入 PATH
16
+ - **Claude API**:需要 API Key Auth Token([获取方式](https://console.anthropic.com/))
17
17
 
18
18
  ## 安装
19
19
 
@@ -50,13 +50,6 @@ open-im start # 后台运行
50
50
  | `open-im stop` | 停止后台服务 |
51
51
  | `open-im dev` | 前台运行(调试模式),Ctrl+C 停止 |
52
52
 
53
- ## 开发
54
-
55
- ```bash
56
- npm run build # 构建编译
57
- npm run dev # 直接运行源码(tsx,无需 build)
58
- ```
59
-
60
53
  ## 会话说明
61
54
 
62
55
  **会话上下文存储在本地**(`~/.open-im/data/sessions.json`),与 IM 聊天记录无关。每用户在本地维护独立的 session 和 Claude 会话 ID,`/new` 可重置当前会话。
@@ -65,179 +58,60 @@ npm run dev # 直接运行源码(tsx,无需 build)
65
58
 
66
59
  | 变量 | 说明 |
67
60
  |------|------|
68
- | `TELEGRAM_BOT_TOKEN` | Telegram Bot Token(从 @BotFather 获取) |
69
- | `FEISHU_APP_ID` | 飞书应用 App ID |
70
- | `FEISHU_APP_SECRET` | 飞书应用 App Secret |
71
- | `WEWORK_CORP_ID` | 企业微信机器人 ID(Bot ID |
72
- | `WEWORK_SECRET` | 企业微信机器人 Secret |
73
- | `WEWORK_WS_URL` | 企业微信 WebSocket URL(可选,默认官方) |
74
- | `WECHAT_APP_ID` | 微信应用 App ID(AGP/Qclaw 协议,测试中) |
75
- | `WECHAT_APP_SECRET` | 微信应用 App Secret |
76
- | `WECHAT_WS_URL` | AGP WebSocket URL(可选,默认使用官方服务) |
77
- | `ALLOWED_USER_IDS` | 白名单用户 ID(逗号分隔,空=所有人) |
78
- | `AI_COMMAND` | `claude` \| `codex` \| `cursor`,默认 `claude` |
79
- | `CLAUDE_CLI_PATH` | Claude CLI 路径,默认 `claude` |
80
- | `CLAUDE_WORK_DIR` | 工作目录 |
81
- | `CLAUDE_SKIP_PERMISSIONS` | 跳过权限确认,默认 `true` |
82
- | `CLAUDE_TIMEOUT_MS` | Claude 超时(毫秒),默认 600000 |
83
- | `CLAUDE_MODEL` | Claude 模型(可选) |
61
+ | `TELEGRAM_BOT_TOKEN` | Telegram Bot Token |
62
+ | `FEISHU_APP_ID` | 飞书 App ID |
63
+ | `FEISHU_APP_SECRET` | 飞书 App Secret |
64
+ | `WEWORK_CORP_ID` | 企业微信 Bot ID |
65
+ | `WEWORK_SECRET` | 企业微信 Secret |
66
+ | `ALLOWED_USER_IDS` | 白名单(逗号分隔,空=所有人) |
67
+ | `CLAUDE_WORK_DIR` | 工作目录,默认当前目录 |
84
68
  | `ALLOWED_BASE_DIRS` | 允许访问的目录(逗号分隔) |
85
- | `LOG_DIR` | 日志目录,默认 `~/.open-im/logs` |
86
- | `LOG_LEVEL` | 日志级别:INFO/DEBUG/WARN/ERROR |
87
69
 
88
70
  ### Claude API 配置
89
71
 
90
- 使用 Claude 时,需要配置 API 密钥。支持以下几种认证方式:
72
+ **自动加载**:优先使用环境变量,其次从 `~/.open-im/config.json` 的 `env` 字段读取,最后从 `~/.claude/settings.json`(与 Claude Code 共用)自动加载。
91
73
 
92
- #### 认证方式
74
+ **快速配置**:
93
75
 
94
- **方式 1:API Key(官方 API)**
95
76
  ```bash
77
+ # 方式 1:环境变量
96
78
  export ANTHROPIC_API_KEY="sk-ant-..."
97
- ```
98
- 从 [Anthropic Console](https://console.anthropic.com/) 获取。
99
-
100
- **方式 2:Auth Token(官方 API)**
101
- ```bash
102
- export ANTHROPIC_AUTH_TOKEN="your-token"
103
- ```
104
- 运行 `claude setup-token` 生成 OAuth Token。
105
-
106
- **方式 3:自定义 API(第三方模型/代理)**
107
- ```bash
108
- export ANTHROPIC_AUTH_TOKEN="your-token"
109
- export ANTHROPIC_BASE_URL="https://your-api-endpoint"
110
- ```
111
79
 
112
- #### 配置方式
113
-
114
- **方式 1:环境变量(推荐)**
115
- ```bash
116
- export ANTHROPIC_API_KEY="your-api-key"
117
- # 或
118
- export ANTHROPIC_AUTH_TOKEN="your-auth-token"
119
- ```
120
-
121
- **方式 2:配置文件**
122
- 在 `~/.open-im/config.json` 中添加:
123
- ```json
124
- {
125
- "env": {
126
- "ANTHROPIC_API_KEY": "your-api-key"
127
- }
128
- }
129
- ```
130
-
131
- **方式 3:运行配置向导**
132
- ```bash
80
+ # 方式 2:运行配置向导
133
81
  open-im init
134
- ```
135
- 配置向导会引导你设置 API 密钥(可留空,稍后配置)。
136
-
137
- #### 完整配置选项
138
-
139
- ```json
140
- {
141
- "env": {
142
- "ANTHROPIC_API_KEY": "sk-ant-...",
143
- "ANTHROPIC_AUTH_TOKEN": "00c4a6c7-bdc3-42b7-ab30-1b0f224135a4",
144
- "ANTHROPIC_BASE_URL": "https://ark.cn-beijing.volces.com/api/coding",
145
- "ANTHROPIC_MODEL": "glm-4.7",
146
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.7",
147
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
148
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.7"
149
- }
150
- }
151
- ```
152
82
 
153
- **配置说明**:
154
- - **API Key / Auth Token**:必填其一(使用官方 API 时)
155
- - `ANTHROPIC_API_KEY`:以 `sk-` 开头,从 Console 获取
156
- - `ANTHROPIC_AUTH_TOKEN`:UUID 格式,运行 `claude setup-token` 生成,或使用第三方模型提供的 token
157
- - **Base URL**:可选
158
- - 留空使用官方 API
159
- - 使用第三方模型或代理时填写自定义端点
160
- - **模型配置**:可选,留空使用默认模型
161
- - `ANTHROPIC_MODEL`:默认模型
162
- - `ANTHROPIC_DEFAULT_HAIKU_MODEL`:Haiku 层级模型
163
- - `ANTHROPIC_DEFAULT_SONNET_MODEL`:Sonnet 层级模型
164
- - `ANTHROPIC_DEFAULT_OPUS_MODEL`:Opus 层级模型
165
-
166
- #### 使用官方 API
167
-
168
- 使用官方 API 时,只需配置 API Key 或 Auth Token:
169
- ```json
83
+ # 方式 3:编辑配置文件
84
+ cat > ~/.open-im/config.json << 'EOF'
170
85
  {
171
86
  "env": {
172
87
  "ANTHROPIC_API_KEY": "sk-ant-..."
173
88
  }
174
89
  }
90
+ EOF
175
91
  ```
176
92
 
177
- 其他字段留空即可,系统会使用官方默认值。
178
-
179
- #### 使用第三方模型/自定义 API
93
+ **支持第三方模型**(可选):
180
94
 
181
95
  ```json
182
96
  {
183
97
  "env": {
184
- "ANTHROPIC_AUTH_TOKEN": "your-custom-token",
98
+ "ANTHROPIC_AUTH_TOKEN": "your-token",
185
99
  "ANTHROPIC_BASE_URL": "https://your-api-endpoint",
186
- "ANTHROPIC_MODEL": "glm-4.7",
187
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "glm-4.7",
188
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "glm-4.7",
189
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "glm-4.7"
100
+ "ANTHROPIC_MODEL": "glm-4.7"
190
101
  }
191
102
  }
192
103
  ```
193
104
 
194
- ### 配置文件
195
-
196
- 配置优先级:环境变量 > `~/.open-im/config.json` > 默认值。
197
-
198
- 至少需配置 **Telegram**、**飞书**、**企业微信** **微信** 其中一个:
199
-
200
- - **Telegram**:`TELEGRAM_BOT_TOKEN` `telegramBotToken`
201
- - **飞书**:`FEISHU_APP_ID` + `FEISHU_APP_SECRET` 或 `feishuAppId` + `feishuAppSecret`
202
- - **企业微信**:`WEWORK_CORP_ID` + `WEWORK_SECRET` `platforms.wework.corpId` + `platforms.wework.secret`
203
- - **微信**:`WECHAT_APP_ID` + `WECHAT_APP_SECRET` 或 `wechatAppId` + `wechatAppSecret`(测试中,基于 Qclaw 通道,连接可能不稳定)
204
-
205
- ### 飞书配置说明
206
-
207
- 1. 在 [飞书开放平台](https://open.feishu.cn/) 创建企业自建应用
208
- 2. 开启「机器人」能力
209
- 3. 配置事件订阅:启用 `im.message.receive_v1`(接收消息),使用 **长连接** 模式(WebSocket)
210
- 4. **卡片按钮(/mode、权限允许/拒绝)需额外配置回调**:
211
- - 打开 [开放平台](https://open.feishu.cn/app) → 进入你的应用 → **「事件与回调」**
212
- - 注意:页面有 **「事件」** 和 **「回调」** 两个 Tab,卡片在 **「回调」** 里,不在「事件」里
213
- - 切换到 **「回调」** Tab → 选择 **「使用长连接接收回调」**
214
- - 点击 **「添加回调」**(或类似按钮)→ 在列表中找到 **「卡片回传交互」**(`card.action.trigger`)
215
- - 若列表里搜不到,可尝试:切换分类、搜「action」或「trigger」、或直接浏览「消息与群组」相关分类
216
- 5. 将机器人添加到目标群聊或发起私聊
217
-
218
- **若点击 /mode 卡片按钮报错**:说明未配置卡片回调。配置较复杂时,可直接用 `/mode ask`、`/mode yolo` 等命令切换模式,无需卡片。
219
-
220
- ### 企业微信配置说明
221
-
222
- 1. 在 [企业微信管理后台](https://work.weixin.qq.com/) 创建企业自建应用
223
- 2. 进入「应用管理」→ 选择你的应用 → 获取 **AgentId** 和 **Secret**
224
- 3. 开启「智能机器人」能力,获取 **机器人 ID(Bot ID)** 和 **机器人 Secret**
225
- 4. 配置到 `~/.open-im/config.json`:
226
- ```json
227
- {
228
- "platforms": {
229
- "wework": {
230
- "enabled": true,
231
- "corpId": "你的机器人ID",
232
- "secret": "你的机器人Secret",
233
- "allowedUserIds": []
234
- }
235
- }
236
- }
237
- ```
238
- 5. 将机器人添加到目标群聊或发起私聊
239
-
240
- **说明**:企业微信使用 WebSocket 长连接(`wss://openws.work.weixin.qq.com`),连接建立后会自动订阅,支持接收消息、回复消息和主动推送(如启动/关闭通知)。首次启动时,需用户先发一条消息,机器人才能向其推送启动通知。
105
+ 配置优先级:环境变量 > config.json > ~/.claude/settings.json
106
+
107
+ ### 平台配置
108
+
109
+ 运行 `open-im init` 自动配置,或手动设置:
110
+
111
+ - **Telegram**:从 [@BotFather](https://t.me/BotFather) 获取 Bot Token
112
+ - **飞书**:[开放平台](https://open.feishu.cn/) 创建应用,启用机器人,配置 WebSocket 事件订阅
113
+ - **企业微信**:[管理后台](https://work.weixin.qq.com/) 创建应用,获取 Bot ID Secret
114
+ - **微信**:测试中,基于 Qclaw 协议
241
115
 
242
116
  ## IM 内命令
243
117
 
@@ -270,142 +144,10 @@ open-im init
270
144
 
271
145
  ## 🔧 故障排除
272
146
 
273
- ### Q: 首次运行没有配置引导?
274
-
275
- 如果配置引导没有出现,尝试以下方法:
276
-
277
- 1. **手动运行配置命令:**
278
-
279
- ```bash
280
- npx @wu529778790/open-im init
281
- ```
282
-
283
- 2. **检查是否已有配置文件:**
284
-
285
- ```bash
286
- cat ~/.open-im/config.json
287
- ```
288
-
289
- 3. **手动创建配置文件:**
290
-
291
- ```bash
292
- mkdir -p ~/.open-im
293
- cat > ~/.open-im/config.json << 'EOF'
294
- {
295
- "platforms": {
296
- "telegram": {
297
- "enabled": true,
298
- "botToken": "你的Bot Token",
299
- "allowedUserIds": ["你的Telegram用户ID"]
300
- },
301
- "wework": {
302
- "enabled": true,
303
- "corpId": "你的企业微信机器人ID",
304
- "secret": "你的企业微信机器人Secret",
305
- "allowedUserIds": []
306
- }
307
- },
308
- "claudeWorkDir": "$(pwd)",
309
- "claudeSkipPermissions": true,
310
- "aiCommand": "claude"
311
- }
312
- EOF
313
- ```
314
-
315
- ### Q: 启动后服务立即退出?
316
-
317
- 可能是配置文件无效,检查配置:
318
-
319
- ```bash
320
- # 查看日志
321
- tail -f ~/.open-im/logs/*.log
322
-
323
- # 重新配置
324
- rm ~/.open-im/config.json
325
- open-im init
326
- ```
327
-
328
- ### Q: 如何获取 Telegram Bot Token?
329
-
330
- 1. 在 Telegram 中搜索 @BotFather
331
- 2. 发送 `/newbot` 创建新机器人
332
- 3. 按提示设置机器人名称
333
- 4. BotFather 会返回 Token,格式如:`123456789:ABCdefGHIjklMNOpqrsTUVwxyz`
334
-
335
- ### Q: 如何获取 Telegram 用户 ID?
336
-
337
- 1. 在 Telegram 中搜索 @userinfobot
338
- 2. 点击"START"或发送任意消息
339
- 3. 机器人会返回你的用户 ID(数字)
340
-
341
- ### Q: 如何配置代理?
342
-
343
- 如果你的网络环境无法直接访问 Telegram,需要在配置文件中添加代理设置:
344
-
345
- ```json
346
- {
347
- "platforms": {
348
- "telegram": {
349
- "proxy": "http://127.0.0.1:7890"
350
- }
351
- }
352
- }
353
- ```
354
-
355
- 支持的代理格式:
356
-
357
- - HTTP:`http://127.0.0.1:7890`
358
- - HTTPS:`https://127.0.0.1:7890`
359
- - SOCKS5:`socks5://127.0.0.1:1080`
360
-
361
- 注意:代理仅用于访问 Telegram API,不影响 AI 工具的网络请求。
362
-
363
- ### Q: Telegram 机器人无响应?
364
-
365
- 可能原因及解决方法:
366
-
367
- 1. **网络问题 - Telegram 被阻断**
368
- - 配置代理(见上方"如何配置代理")
369
- - 测试代理是否可用:`curl -x http://127.0.0.1:7890 https://api.telegram.org`
370
-
371
- 2. **Token 错误**
372
- - 重新获取 Token:在 @BotFather 中使用 `/revoke` 命令
373
-
374
- 3. **用户 ID 白名单问题**
375
- - 检查配置文件中的 `allowedUserIds` 是否包含你的用户 ID
376
- - 或留空允许所有人访问(仅开发环境建议)
377
-
378
- ### Q: 飞书 /mode 卡片点击报错(如 200340)?
379
-
380
- 说明未配置**卡片回调**。注意:卡片在 **「回调」** Tab,不在「事件」Tab。
381
-
382
- 1. 打开 [飞书开放平台](https://open.feishu.cn/app) → 进入你的应用 → **「事件与回调」**
383
- 2. 切换到 **「回调」** Tab(不是「事件」)
384
- 3. 选择 **「使用长连接接收回调」**
385
- 4. 添加 **「卡片回传交互」**(`card.action.trigger`)— 若搜不到,可尝试搜「action」「trigger」或浏览分类
386
-
387
- **更简单**:直接用 `/mode ask`、`/mode yolo` 等命令切换模式,无需配置卡片。
388
-
389
- ### Q: 企业微信 846609(aibot websocket not subscribed)?
390
-
391
- 说明在订阅确认完成前就发送了主动消息。当前版本已修复:连接建立后会等待服务端订阅确认(`errcode: 0`)后再发送启动通知。若仍出现,请检查网络或重启服务。
392
-
393
- ### Q: 企业微信收不到启动通知?
394
-
395
- 启动通知需要用户先发过消息,系统才能获取到 chatId。请先向机器人发送任意消息(如「你好」),之后重启服务即可收到启动/关闭通知。
396
-
397
- ### Q: 微信连接失败(错误 1006 或 500)?
398
-
399
- 微信通道基于 **Qclaw** 接入,目前处于**测试阶段**,连接可能不稳定。若出现连接失败,可能原因:
147
+ **启动失败**:查看日志 `tail -f ~/.open-im/logs/*.log`,或重新配置 `rm ~/.open-im/config.json && open-im init`
400
148
 
401
- 1. **Qclaw 通道限制**
402
- - Qclaw 通道可能有白名单限制
403
- - 独立客户端可能不在允许列表中
404
- - token 或 guid 无效或已过期
149
+ **Telegram 无响应**:检查网络,可能需要代理,在配置文件中添加 `"proxy": "http://127.0.0.1:7890"`
405
150
 
406
- 2. **建议**
407
- - 确认 token 和 guid 是否正确
408
- - 尝试更新 token/guid(如果提供商支持)
409
- - 或暂时使用其他平台(Telegram/飞书/企业微信)
151
+ **飞书卡片报错**:未配置卡片回调,使用命令替代:`/mode ask`、`/mode yolo`
410
152
 
411
- **注意**:微信通道为测试功能,基于 Qclaw 接入,连接稳定性取决于第三方服务。建议优先使用 Telegram、飞书或企业微信。
153
+ **企业微信收不到通知**:需先发一条消息给机器人,才能接收启动通知
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wu529778790/open-im",
3
- "version": "1.2.1",
3
+ "version": "1.2.3-beta.0",
4
4
  "description": "Multi-platform IM bridge for AI CLI tools (Claude, Codex, Cursor)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",