@wu529778790/open-im 1.2.2 → 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.
- package/README.md +32 -290
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
## 环境要求
|
|
14
14
|
|
|
15
15
|
- **Node.js** >= 20
|
|
16
|
-
- **
|
|
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
|
|
69
|
-
| `FEISHU_APP_ID` |
|
|
70
|
-
| `FEISHU_APP_SECRET` |
|
|
71
|
-
| `WEWORK_CORP_ID` |
|
|
72
|
-
| `WEWORK_SECRET` |
|
|
73
|
-
| `
|
|
74
|
-
| `
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
- **Telegram
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
402
|
-
- Qclaw 通道可能有白名单限制
|
|
403
|
-
- 独立客户端可能不在允许列表中
|
|
404
|
-
- token 或 guid 无效或已过期
|
|
149
|
+
**Telegram 无响应**:检查网络,可能需要代理,在配置文件中添加 `"proxy": "http://127.0.0.1:7890"`
|
|
405
150
|
|
|
406
|
-
|
|
407
|
-
- 确认 token 和 guid 是否正确
|
|
408
|
-
- 尝试更新 token/guid(如果提供商支持)
|
|
409
|
-
- 或暂时使用其他平台(Telegram/飞书/企业微信)
|
|
151
|
+
**飞书卡片报错**:未配置卡片回调,使用命令替代:`/mode ask`、`/mode yolo`
|
|
410
152
|
|
|
411
|
-
|
|
153
|
+
**企业微信收不到通知**:需先发一条消息给机器人,才能接收启动通知
|