@wu529778790/open-im 1.7.1-beta.0 → 1.7.1-beta.10
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 +99 -73
- package/README.zh-CN.md +106 -74
- package/dist/adapters/claude-sdk-adapter.d.ts +7 -7
- package/dist/adapters/claude-sdk-adapter.js +126 -101
- package/dist/adapters/registry.js +2 -13
- package/dist/cli.js +10 -3
- package/dist/commands/handler.d.ts +0 -6
- package/dist/commands/handler.js +5 -65
- package/dist/config-web-page-i18n.d.ts +0 -3
- package/dist/config-web-page-i18n.js +0 -3
- package/dist/config-web-page-script.js +64 -16
- package/dist/config-web-page-template.js +14 -17
- package/dist/config-web.d.ts +1 -0
- package/dist/config-web.js +241 -29
- package/dist/config.d.ts +6 -15
- package/dist/config.js +18 -114
- package/dist/dingtalk/event-handler.js +2 -4
- package/dist/dingtalk/message-sender.d.ts +0 -2
- package/dist/dingtalk/message-sender.js +1 -10
- package/dist/feishu/event-handler.js +4 -157
- package/dist/feishu/message-sender.d.ts +0 -20
- package/dist/feishu/message-sender.js +0 -155
- package/dist/index.js +7 -16
- package/dist/manager.js +5 -2
- package/dist/qq/event-handler.js +2 -4
- package/dist/qq/event-handler.test.js +0 -1
- package/dist/qq/message-sender.d.ts +0 -1
- package/dist/qq/message-sender.js +1 -6
- package/dist/session/session-manager.d.ts +5 -1
- package/dist/session/session-manager.js +11 -3
- package/dist/setup.js +3 -7
- package/dist/shared/ai-task.js +32 -39
- package/dist/shared/ai-task.test.js +15 -4
- package/dist/shared/system-messages.d.ts +0 -2
- package/dist/shared/system-messages.js +0 -32
- package/dist/shared/system-messages.test.js +1 -8
- package/dist/telegram/event-handler.js +2 -24
- package/dist/telegram/message-sender.d.ts +0 -1
- package/dist/telegram/message-sender.js +0 -14
- package/dist/wechat/event-handler.js +2 -28
- package/dist/wechat/message-sender.d.ts +0 -2
- package/dist/wechat/message-sender.js +0 -31
- package/dist/wework/event-handler.js +2 -4
- package/dist/wework/message-sender.d.ts +0 -2
- package/dist/wework/message-sender.js +1 -23
- package/package.json +1 -1
- package/dist/adapters/claude-adapter.d.ts +0 -26
- package/dist/adapters/claude-adapter.js +0 -76
- package/dist/claude/cli-runner.d.ts +0 -29
- package/dist/claude/cli-runner.js +0 -231
- package/dist/claude/process-pool.d.ts +0 -84
- package/dist/claude/process-pool.js +0 -312
- package/dist/hook/permission-server.d.ts +0 -38
- package/dist/hook/permission-server.js +0 -301
- package/dist/hook/permission-server.test.d.ts +0 -1
- package/dist/hook/permission-server.test.js +0 -12
- package/dist/permission-mode/session-mode.d.ts +0 -7
- package/dist/permission-mode/session-mode.js +0 -59
- package/dist/permission-mode/types.d.ts +0 -11
- package/dist/permission-mode/types.js +0 -29
package/README.md
CHANGED
|
@@ -14,19 +14,6 @@ Multi-platform IM bridge for AI CLI tools. Connect Telegram, Feishu, WeCom, Ding
|
|
|
14
14
|
- Isolated sessions: each user gets an independent local session, and `/new` resets it
|
|
15
15
|
- Built-in commands: `/help`, `/new`, `/cd`, `/pwd`, `/status`
|
|
16
16
|
|
|
17
|
-
## Coverage Matrix
|
|
18
|
-
|
|
19
|
-
Capability levels: `Native` = fully supported in-channel, `Fallback` = degraded behavior or text fallback, `None` = not currently supported.
|
|
20
|
-
|
|
21
|
-
| Platform | Text Inbound | Image Inbound | File Inbound | Voice Inbound | Video Inbound | Streaming Reply | Image Reply | Card Reply |
|
|
22
|
-
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|
|
23
|
-
| Telegram | Native | Native | Native | Native | Native | Native | Native | Native |
|
|
24
|
-
| Feishu | Native | Native | Native | Fallback | Fallback | Native | Native | Native |
|
|
25
|
-
| QQ | Native | Fallback | Fallback | Fallback | Fallback | None | Fallback | Fallback |
|
|
26
|
-
| WeCom | Native | Fallback | Fallback | Fallback | Fallback | Native | Native | Native |
|
|
27
|
-
| DingTalk | Native | Fallback | Fallback | Fallback | Fallback | Native | Fallback | Native |
|
|
28
|
-
| WeChat (experimental) | Native | Fallback | Fallback | Fallback | Fallback | Native | Fallback | Native |
|
|
29
|
-
|
|
30
17
|
## Requirements
|
|
31
18
|
|
|
32
19
|
- Node.js >= 20
|
|
@@ -50,27 +37,66 @@ The config file is stored at `~/.open-im/config.json` by default.
|
|
|
50
37
|
|
|
51
38
|
## CLI Commands
|
|
52
39
|
|
|
53
|
-
| Command
|
|
54
|
-
|
|
|
55
|
-
| `open-im init`
|
|
56
|
-
| `open-im start`
|
|
57
|
-
| `open-im stop`
|
|
58
|
-
| `open-im dev`
|
|
40
|
+
| Command | Description |
|
|
41
|
+
| ----------------- | ---------------------------------------------------------------- |
|
|
42
|
+
| `open-im init` | Initialize or append configuration without starting the service |
|
|
43
|
+
| `open-im start` | Run the service in the background |
|
|
44
|
+
| `open-im stop` | Stop the background service |
|
|
45
|
+
| `open-im dev` | Run in the foreground for development/debugging |
|
|
46
|
+
| `open-im dashboard` | Run only the config web UI (no bridge) |
|
|
47
|
+
|
|
48
|
+
## Server Deployment & Config Page
|
|
59
49
|
|
|
60
|
-
|
|
50
|
+
### Local (with browser)
|
|
61
51
|
|
|
62
|
-
Open the config page at
|
|
52
|
+
Open the config page at [`http://127.0.0.1:39282`](http://127.0.0.1:39282) (or the URL shown after `open-im start`). The page includes:
|
|
63
53
|
|
|
64
54
|
- **Dashboard** – Configured / Enabled platform count and service status (Idle or Running)
|
|
65
55
|
- **Platforms** – Enable and configure Telegram, Feishu, QQ, WeCom, and DingTalk (credentials, proxy, per-platform AI tool, allowed user IDs). Each platform has a “Test Configuration” button.
|
|
66
|
-
- **AI Tooling** – **General**: default AI tool (Claude / Codex / CodeBuddy), work directory, hook port, log level. **Per-tool tabs**: Claude (CLI path, timeout, proxy, config path,
|
|
56
|
+
- **AI Tooling** – **General**: default AI tool (Claude / Codex / CodeBuddy), work directory, hook port, log level. **Per-tool tabs**: Claude (CLI path, timeout, proxy, config path, ANTHROPIC\_\* fields), Codex (CLI path, timeout, proxy), CodeBuddy (CLI path, timeout).
|
|
67
57
|
- **Service control** – Validate config, Save, Start bridge, Stop bridge.
|
|
68
58
|
|
|
69
59
|
WeChat is not in the web UI; configure it in `~/.open-im/config.json` or via `open-im init` if needed.
|
|
70
60
|
|
|
71
|
-
- `open-im start` serves the config page and the bridge.
|
|
61
|
+
- `open-im start` serves both the config page and the bridge on your local machine.
|
|
72
62
|
- `open-im dev` opens the page automatically only when setup is incomplete.
|
|
73
|
-
- To open the page when config already exists, run `open-im
|
|
63
|
+
- To open the page when config already exists, you can also run `open-im dashboard` to launch the config UI only (without starting the bridge).
|
|
64
|
+
|
|
65
|
+
### Recommended server workflow
|
|
66
|
+
|
|
67
|
+
On a remote server, the simplest and safest pattern is:
|
|
68
|
+
|
|
69
|
+
1. **Use `dashboard` to configure via browser**
|
|
70
|
+
|
|
71
|
+
On the server:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
export OPEN_IM_NO_BROWSER=1
|
|
75
|
+
# Optional: bind to all interfaces if you want to open from another device
|
|
76
|
+
# export OPEN_IM_WEB_HOST=0.0.0.0
|
|
77
|
+
open-im dashboard
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
- This starts only the config web UI (no bridge yet).
|
|
81
|
+
- If `OPEN_IM_WEB_HOST` is `0.0.0.0`, the server will print a one-time login URL like:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
http://your-server-ip:39282/?login_token=xxxx
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- Open this URL in your browser, complete all platform/AI settings, then click **Start bridge** in the web UI.
|
|
88
|
+
|
|
89
|
+
2. **Run the bridge as a background service**
|
|
90
|
+
|
|
91
|
+
After configuration is saved, you have two options:
|
|
92
|
+
- Start from the web UI: use the **Start bridge** button on the Service panel.
|
|
93
|
+
- Or start from the CLI:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
open-im start
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This runs the full bridge in the background using the saved config.
|
|
74
100
|
|
|
75
101
|
## Session Behavior
|
|
76
102
|
|
|
@@ -221,46 +247,46 @@ The following is valid JSON and can be saved directly as `~/.open-im/config.json
|
|
|
221
247
|
|
|
222
248
|
### Common Environment Variables
|
|
223
249
|
|
|
224
|
-
| Variable
|
|
225
|
-
|
|
|
226
|
-
| `AI_COMMAND`
|
|
227
|
-
| `CLAUDE_WORK_DIR`
|
|
228
|
-
| `LOG_DIR`
|
|
229
|
-
| `LOG_LEVEL`
|
|
230
|
-
| `HOOK_PORT`
|
|
231
|
-
| `CODEX_PROXY`
|
|
232
|
-
| `OPENAI_API_KEY`
|
|
233
|
-
| `CODEBUDDY_CLI_PATH`
|
|
234
|
-
| `CODEBUDDY_TIMEOUT_MS`
|
|
235
|
-
| `CODEBUDDY_SKIP_PERMISSIONS` | Override CodeBuddy skip-permissions behavior
|
|
236
|
-
| `CODEBUDDY_IDLE_TIMEOUT_MS`
|
|
237
|
-
| `CODEBUDDY_API_KEY`
|
|
238
|
-
| `CODEBUDDY_AUTH_TOKEN`
|
|
239
|
-
| `TELEGRAM_BOT_TOKEN`
|
|
240
|
-
| `TELEGRAM_PROXY`
|
|
241
|
-
| `TELEGRAM_ALLOWED_USER_IDS`
|
|
242
|
-
| `FEISHU_APP_ID`
|
|
243
|
-
| `FEISHU_APP_SECRET`
|
|
244
|
-
| `FEISHU_ALLOWED_USER_IDS`
|
|
245
|
-
| `QQ_BOT_APPID`
|
|
246
|
-
| `QQ_BOT_SECRET`
|
|
247
|
-
| `QQ_BOT_SANDBOX`
|
|
248
|
-
| `QQ_ALLOWED_USER_IDS`
|
|
249
|
-
| `DINGTALK_CLIENT_ID`
|
|
250
|
-
| `DINGTALK_CLIENT_SECRET`
|
|
251
|
-
| `DINGTALK_CARD_TEMPLATE_ID`
|
|
252
|
-
| `DINGTALK_ALLOWED_USER_IDS`
|
|
253
|
-
| `WEWORK_CORP_ID`
|
|
254
|
-
| `WEWORK_SECRET`
|
|
255
|
-
| `WEWORK_WS_URL`
|
|
256
|
-
| `WEWORK_ALLOWED_USER_IDS`
|
|
257
|
-
| `WECHAT_APP_ID`
|
|
258
|
-
| `WECHAT_APP_SECRET`
|
|
259
|
-
| `WECHAT_TOKEN`
|
|
260
|
-
| `WECHAT_GUID`
|
|
261
|
-
| `WECHAT_USER_ID`
|
|
262
|
-
| `WECHAT_WS_URL`
|
|
263
|
-
| `WECHAT_ALLOWED_USER_IDS`
|
|
250
|
+
| Variable | Description |
|
|
251
|
+
| ---------------------------- | ---------------------------------------------------------------------- |
|
|
252
|
+
| `AI_COMMAND` | Select `claude`, `codex`, or `codebuddy` |
|
|
253
|
+
| `CLAUDE_WORK_DIR` | Default session working directory |
|
|
254
|
+
| `LOG_DIR` | Log directory |
|
|
255
|
+
| `LOG_LEVEL` | Log level |
|
|
256
|
+
| `HOOK_PORT` | Permission service port |
|
|
257
|
+
| `CODEX_PROXY` | Proxy used by Codex to access `chatgpt.com` |
|
|
258
|
+
| `OPENAI_API_KEY` | Codex API key, can replace `codex login` |
|
|
259
|
+
| `CODEBUDDY_CLI_PATH` | Override CodeBuddy CLI path |
|
|
260
|
+
| `CODEBUDDY_TIMEOUT_MS` | Override CodeBuddy timeout |
|
|
261
|
+
| `CODEBUDDY_SKIP_PERMISSIONS` | Override CodeBuddy skip-permissions behavior |
|
|
262
|
+
| `CODEBUDDY_IDLE_TIMEOUT_MS` | Abort CodeBuddy when it stays silent for too long |
|
|
263
|
+
| `CODEBUDDY_API_KEY` | CodeBuddy API key, can replace `codebuddy login` |
|
|
264
|
+
| `CODEBUDDY_AUTH_TOKEN` | CodeBuddy auth token, can replace `codebuddy login` |
|
|
265
|
+
| `TELEGRAM_BOT_TOKEN` | Telegram bot token |
|
|
266
|
+
| `TELEGRAM_PROXY` | Telegram proxy URL |
|
|
267
|
+
| `TELEGRAM_ALLOWED_USER_IDS` | Telegram allowlist |
|
|
268
|
+
| `FEISHU_APP_ID` | Feishu app ID |
|
|
269
|
+
| `FEISHU_APP_SECRET` | Feishu app secret |
|
|
270
|
+
| `FEISHU_ALLOWED_USER_IDS` | Feishu allowlist |
|
|
271
|
+
| `QQ_BOT_APPID` | QQ bot app ID |
|
|
272
|
+
| `QQ_BOT_SECRET` | QQ bot app secret |
|
|
273
|
+
| `QQ_BOT_SANDBOX` | QQ bot sandbox mode (`1` / `true` to enable, disabled by default) |
|
|
274
|
+
| `QQ_ALLOWED_USER_IDS` | QQ allowlist |
|
|
275
|
+
| `DINGTALK_CLIENT_ID` | DingTalk client ID / AppKey |
|
|
276
|
+
| `DINGTALK_CLIENT_SECRET` | DingTalk client secret / AppSecret |
|
|
277
|
+
| `DINGTALK_CARD_TEMPLATE_ID` | DingTalk AI card template ID; enables single-message streaming replies |
|
|
278
|
+
| `DINGTALK_ALLOWED_USER_IDS` | DingTalk allowlist |
|
|
279
|
+
| `WEWORK_CORP_ID` | WeCom bot ID |
|
|
280
|
+
| `WEWORK_SECRET` | WeCom secret |
|
|
281
|
+
| `WEWORK_WS_URL` | WeCom WebSocket URL |
|
|
282
|
+
| `WEWORK_ALLOWED_USER_IDS` | WeCom allowlist |
|
|
283
|
+
| `WECHAT_APP_ID` | WeChat standard mode app ID |
|
|
284
|
+
| `WECHAT_APP_SECRET` | WeChat standard mode app secret |
|
|
285
|
+
| `WECHAT_TOKEN` | WeChat AGP mode token |
|
|
286
|
+
| `WECHAT_GUID` | WeChat AGP mode GUID |
|
|
287
|
+
| `WECHAT_USER_ID` | WeChat AGP mode user ID |
|
|
288
|
+
| `WECHAT_WS_URL` | WeChat WebSocket URL |
|
|
289
|
+
| `WECHAT_ALLOWED_USER_IDS` | WeChat allowlist |
|
|
264
290
|
|
|
265
291
|
### Platform Setup Sources
|
|
266
292
|
|
|
@@ -281,15 +307,15 @@ DingTalk AI card templates are already compatible with the official "Search Resu
|
|
|
281
307
|
|
|
282
308
|
## IM Commands
|
|
283
309
|
|
|
284
|
-
| Command
|
|
285
|
-
|
|
|
286
|
-
| `/help`
|
|
287
|
-
| `/new`
|
|
288
|
-
| `/status`
|
|
289
|
-
| `/cd <path>`
|
|
290
|
-
| `/pwd`
|
|
291
|
-
| `/allow` `/y` | Approve a permission request
|
|
292
|
-
| `/deny` `/n`
|
|
310
|
+
| Command | Description |
|
|
311
|
+
| ------------- | -------------------------------------------------------- |
|
|
312
|
+
| `/help` | Show help |
|
|
313
|
+
| `/new` | Start a new session |
|
|
314
|
+
| `/status` | Show AI tool, version, session directory, and session ID |
|
|
315
|
+
| `/cd <path>` | Change the session working directory |
|
|
316
|
+
| `/pwd` | Show the current session working directory |
|
|
317
|
+
| `/allow` `/y` | Approve a permission request |
|
|
318
|
+
| `/deny` `/n` | Reject a permission request |
|
|
293
319
|
|
|
294
320
|
## Troubleshooting
|
|
295
321
|
|
package/README.zh-CN.md
CHANGED
|
@@ -14,19 +14,6 @@
|
|
|
14
14
|
- 会话隔离:每个用户独立维护本地会话,`/new` 可重置
|
|
15
15
|
- 常用命令:支持 `/help`、`/new`、`/cd`、`/pwd`、`/status`
|
|
16
16
|
|
|
17
|
-
## 覆盖矩阵
|
|
18
|
-
|
|
19
|
-
能力等级说明:`Native` 表示平台内原生支持,`Fallback` 表示有降级方案或文本兜底,`None` 表示当前暂不支持。
|
|
20
|
-
|
|
21
|
-
| 平台 | 文本输入 | 图片输入 | 文件输入 | 语音输入 | 视频输入 | 流式回复 | 图片回复 | 卡片回复 |
|
|
22
|
-
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|
|
23
|
-
| Telegram | Native | Native | Native | Native | Native | Native | Native | Native |
|
|
24
|
-
| 飞书 | Native | Native | Native | Fallback | Fallback | Native | Native | Native |
|
|
25
|
-
| QQ | Native | Fallback | Fallback | Fallback | Fallback | None | Fallback | Fallback |
|
|
26
|
-
| 企业微信 | Native | Fallback | Fallback | Fallback | Fallback | Native | Native | Native |
|
|
27
|
-
| 钉钉 | Native | Fallback | Fallback | Fallback | Fallback | Native | Fallback | Native |
|
|
28
|
-
| 微信(测试中) | Native | Fallback | Fallback | Fallback | Fallback | Native | Fallback | Native |
|
|
29
|
-
|
|
30
17
|
## 环境要求
|
|
31
18
|
|
|
32
19
|
- Node.js >= 20
|
|
@@ -50,27 +37,72 @@ open-im start
|
|
|
50
37
|
|
|
51
38
|
## CLI 命令
|
|
52
39
|
|
|
53
|
-
| 命令
|
|
54
|
-
|
|
|
55
|
-
| `open-im init`
|
|
56
|
-
| `open-im start`
|
|
57
|
-
| `open-im stop`
|
|
58
|
-
| `open-im dev`
|
|
40
|
+
| 命令 | 说明 |
|
|
41
|
+
| ----------------- | ------------------------------ |
|
|
42
|
+
| `open-im init` | 初始化或追加配置,不启动服务 |
|
|
43
|
+
| `open-im start` | 后台运行服务 |
|
|
44
|
+
| `open-im stop` | 停止后台服务 |
|
|
45
|
+
| `open-im dev` | 前台运行(调试模式) |
|
|
46
|
+
| `open-im dashboard` | 仅启动 Web 配置页(不启动桥接服务) |
|
|
59
47
|
|
|
60
|
-
##
|
|
48
|
+
## 服务器部署与图形化配置
|
|
61
49
|
|
|
62
|
-
|
|
50
|
+
### 本机(带浏览器)使用
|
|
51
|
+
|
|
52
|
+
在本机直接运行:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
open-im start
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
然后在浏览器中打开 [`http://127.0.0.1:39282`](http://127.0.0.1:39282)(或命令行里提示的地址),页面结构如下:
|
|
63
59
|
|
|
64
60
|
- **概览** – 已配置/已启用平台数量、服务状态(未启动或运行中)
|
|
65
61
|
- **平台配置** – 启用并填写 Telegram、飞书、QQ、企业微信、钉钉的凭证(Bot Token/App ID/Secret、代理、该平台使用的 AI 工具、白名单用户 ID)。每个平台提供「校验配置」按钮
|
|
66
|
-
- **AI 工具配置** – **公共**:默认 AI 工具(Claude / Codex / CodeBuddy)、工作目录、Hook 端口、日志级别。**分工具**:Claude(CLI 路径、超时、代理、配置路径、
|
|
62
|
+
- **AI 工具配置** – **公共**:默认 AI 工具(Claude / Codex / CodeBuddy)、工作目录、Hook 端口、日志级别。**分工具**:Claude(CLI 路径、超时、代理、配置路径、ANTHROPIC\_\* 等)、Codex(CLI 路径、超时、代理)、CodeBuddy(CLI 路径、超时)
|
|
67
63
|
- **服务控制** – 校验配置、保存、启动桥接、停止桥接
|
|
68
64
|
|
|
69
65
|
微信暂不在网页中配置,如需使用请在 `~/.open-im/config.json` 中手动配置或通过 `open-im init` 引导。
|
|
70
66
|
|
|
71
|
-
- `open-im start`
|
|
72
|
-
- `open-im dev`
|
|
73
|
-
-
|
|
67
|
+
- `open-im start` 会同时启动桥接服务并提供该配置页(本机场景)。
|
|
68
|
+
- `open-im dev` 仅在未完成配置时自动打开页面。
|
|
69
|
+
- 已有配置但想单独打开配置页时,可以使用 `open-im dashboard` 启动仅 Web 配置服务。
|
|
70
|
+
|
|
71
|
+
### 推荐的服务器端使用方式
|
|
72
|
+
|
|
73
|
+
在远程服务器上,建议的最简单、安全的方式是:
|
|
74
|
+
|
|
75
|
+
1. **先通过 `dashboard` 在浏览器里完成配置**
|
|
76
|
+
|
|
77
|
+
在服务器上执行:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
export OPEN_IM_NO_BROWSER=1
|
|
81
|
+
# 可选:如果希望从其他设备访问配置页,可以绑定到所有网卡
|
|
82
|
+
# export OPEN_IM_WEB_HOST=0.0.0.0
|
|
83
|
+
open-im dashboard
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- 这只会启动 Web 配置页,不会同时启动桥接服务。
|
|
87
|
+
- 若设置了 `OPEN_IM_WEB_HOST=0.0.0.0`,服务端会输出一次性登录链接,例如:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
http://your-server-ip:39282/?login_token=xxxx
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
- 在浏览器中打开该链接,按照页面提示完成各个平台 / AI 工具配置,最后在页面中点击 **「Start bridge」** 按钮启动桥接服务。
|
|
94
|
+
|
|
95
|
+
2. **后台运行桥接服务**
|
|
96
|
+
|
|
97
|
+
配置保存后,有两种启动方式:
|
|
98
|
+
- 在 Web 页面 Service 面板中直接点击 **「Start bridge」**;
|
|
99
|
+
- 或者在服务器上运行:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
open-im start
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
这会根据已保存的配置,在后台长期运行桥接服务。
|
|
74
106
|
|
|
75
107
|
## 会话说明
|
|
76
108
|
|
|
@@ -221,46 +253,46 @@ codebuddy login
|
|
|
221
253
|
|
|
222
254
|
### 常用环境变量
|
|
223
255
|
|
|
224
|
-
| 变量
|
|
225
|
-
|
|
|
226
|
-
| `AI_COMMAND`
|
|
227
|
-
| `CLAUDE_WORK_DIR`
|
|
228
|
-
| `LOG_DIR`
|
|
229
|
-
| `LOG_LEVEL`
|
|
230
|
-
| `HOOK_PORT`
|
|
231
|
-
| `CODEX_PROXY`
|
|
232
|
-
| `OPENAI_API_KEY`
|
|
233
|
-
| `CODEBUDDY_CLI_PATH`
|
|
234
|
-
| `CODEBUDDY_TIMEOUT_MS`
|
|
235
|
-
| `CODEBUDDY_SKIP_PERMISSIONS` | 覆盖 CodeBuddy 的跳过权限确认行为
|
|
236
|
-
| `CODEBUDDY_IDLE_TIMEOUT_MS`
|
|
237
|
-
| `CODEBUDDY_API_KEY`
|
|
238
|
-
| `CODEBUDDY_AUTH_TOKEN`
|
|
239
|
-
| `TELEGRAM_BOT_TOKEN`
|
|
240
|
-
| `TELEGRAM_PROXY`
|
|
241
|
-
| `TELEGRAM_ALLOWED_USER_IDS`
|
|
242
|
-
| `FEISHU_APP_ID`
|
|
243
|
-
| `FEISHU_APP_SECRET`
|
|
244
|
-
| `FEISHU_ALLOWED_USER_IDS`
|
|
245
|
-
| `QQ_BOT_APPID`
|
|
246
|
-
| `QQ_BOT_SECRET`
|
|
247
|
-
| `QQ_BOT_SANDBOX`
|
|
248
|
-
| `QQ_ALLOWED_USER_IDS`
|
|
249
|
-
| `DINGTALK_CLIENT_ID`
|
|
250
|
-
| `DINGTALK_CLIENT_SECRET`
|
|
251
|
-
| `DINGTALK_CARD_TEMPLATE_ID`
|
|
252
|
-
| `DINGTALK_ALLOWED_USER_IDS`
|
|
253
|
-
| `WEWORK_CORP_ID`
|
|
254
|
-
| `WEWORK_SECRET`
|
|
255
|
-
| `WEWORK_WS_URL`
|
|
256
|
-
| `WEWORK_ALLOWED_USER_IDS`
|
|
257
|
-
| `WECHAT_APP_ID`
|
|
258
|
-
| `WECHAT_APP_SECRET`
|
|
259
|
-
| `WECHAT_TOKEN`
|
|
260
|
-
| `WECHAT_GUID`
|
|
261
|
-
| `WECHAT_USER_ID`
|
|
262
|
-
| `WECHAT_WS_URL`
|
|
263
|
-
| `WECHAT_ALLOWED_USER_IDS`
|
|
256
|
+
| 变量 | 说明 |
|
|
257
|
+
| ---------------------------- | ---------------------------------------------- |
|
|
258
|
+
| `AI_COMMAND` | 选择 `claude` / `codex` / `codebuddy` |
|
|
259
|
+
| `CLAUDE_WORK_DIR` | 默认会话目录 |
|
|
260
|
+
| `LOG_DIR` | 日志目录 |
|
|
261
|
+
| `LOG_LEVEL` | 日志级别 |
|
|
262
|
+
| `HOOK_PORT` | 权限服务端口 |
|
|
263
|
+
| `CODEX_PROXY` | Codex 访问 `chatgpt.com` 的代理 |
|
|
264
|
+
| `OPENAI_API_KEY` | Codex API Key,可替代 `codex login` |
|
|
265
|
+
| `CODEBUDDY_CLI_PATH` | 覆盖 CodeBuddy CLI 路径 |
|
|
266
|
+
| `CODEBUDDY_TIMEOUT_MS` | 覆盖 CodeBuddy 超时 |
|
|
267
|
+
| `CODEBUDDY_SKIP_PERMISSIONS` | 覆盖 CodeBuddy 的跳过权限确认行为 |
|
|
268
|
+
| `CODEBUDDY_IDLE_TIMEOUT_MS` | CodeBuddy 长时间无输出时自动终止 |
|
|
269
|
+
| `CODEBUDDY_API_KEY` | CodeBuddy API Key,可替代 `codebuddy login` |
|
|
270
|
+
| `CODEBUDDY_AUTH_TOKEN` | CodeBuddy Auth Token,可替代 `codebuddy login` |
|
|
271
|
+
| `TELEGRAM_BOT_TOKEN` | Telegram Bot Token |
|
|
272
|
+
| `TELEGRAM_PROXY` | Telegram 代理地址 |
|
|
273
|
+
| `TELEGRAM_ALLOWED_USER_IDS` | Telegram 白名单 |
|
|
274
|
+
| `FEISHU_APP_ID` | 飞书 App ID |
|
|
275
|
+
| `FEISHU_APP_SECRET` | 飞书 App Secret |
|
|
276
|
+
| `FEISHU_ALLOWED_USER_IDS` | 飞书白名单 |
|
|
277
|
+
| `QQ_BOT_APPID` | QQ 机器人 App ID |
|
|
278
|
+
| `QQ_BOT_SECRET` | QQ 机器人 App Secret |
|
|
279
|
+
| `QQ_BOT_SANDBOX` | QQ 机器人沙箱模式(`1`/`true` 启用,默认关闭) |
|
|
280
|
+
| `QQ_ALLOWED_USER_IDS` | QQ 白名单 |
|
|
281
|
+
| `DINGTALK_CLIENT_ID` | 钉钉应用 Client ID / AppKey |
|
|
282
|
+
| `DINGTALK_CLIENT_SECRET` | 钉钉应用 Client Secret / AppSecret |
|
|
283
|
+
| `DINGTALK_CARD_TEMPLATE_ID` | 钉钉 AI 卡片模板 ID,配置后启用单条流式回复 |
|
|
284
|
+
| `DINGTALK_ALLOWED_USER_IDS` | 钉钉白名单 |
|
|
285
|
+
| `WEWORK_CORP_ID` | 企业微信 Bot ID |
|
|
286
|
+
| `WEWORK_SECRET` | 企业微信 Secret |
|
|
287
|
+
| `WEWORK_WS_URL` | 企业微信 WebSocket 地址 |
|
|
288
|
+
| `WEWORK_ALLOWED_USER_IDS` | 企业微信白名单 |
|
|
289
|
+
| `WECHAT_APP_ID` | 微信标准模式 App ID |
|
|
290
|
+
| `WECHAT_APP_SECRET` | 微信标准模式 App Secret |
|
|
291
|
+
| `WECHAT_TOKEN` | 微信 AGP 模式 Token |
|
|
292
|
+
| `WECHAT_GUID` | 微信 AGP 模式 GUID |
|
|
293
|
+
| `WECHAT_USER_ID` | 微信 AGP 模式 User ID |
|
|
294
|
+
| `WECHAT_WS_URL` | 微信 WebSocket 地址 |
|
|
295
|
+
| `WECHAT_ALLOWED_USER_IDS` | 微信白名单 |
|
|
264
296
|
|
|
265
297
|
### 平台配置来源
|
|
266
298
|
|
|
@@ -281,15 +313,15 @@ codebuddy login
|
|
|
281
313
|
|
|
282
314
|
## IM 内命令
|
|
283
315
|
|
|
284
|
-
| 命令
|
|
285
|
-
|
|
|
286
|
-
| `/help`
|
|
287
|
-
| `/new`
|
|
288
|
-
| `/status`
|
|
289
|
-
| `/cd <路径>`
|
|
290
|
-
| `/pwd`
|
|
291
|
-
| `/allow` `/y` | 允许权限请求
|
|
292
|
-
| `/deny` `/n`
|
|
316
|
+
| 命令 | 说明 |
|
|
317
|
+
| ------------- | ------------------------------------- |
|
|
318
|
+
| `/help` | 显示帮助 |
|
|
319
|
+
| `/new` | 开始新会话 |
|
|
320
|
+
| `/status` | 显示 AI 工具、版本、会话目录、会话 ID |
|
|
321
|
+
| `/cd <路径>` | 切换会话目录 |
|
|
322
|
+
| `/pwd` | 显示当前会话目录 |
|
|
323
|
+
| `/allow` `/y` | 允许权限请求 |
|
|
324
|
+
| `/deny` `/n` | 拒绝权限请求 |
|
|
293
325
|
|
|
294
326
|
## 故障排除
|
|
295
327
|
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Claude SDK Adapter - 使用 Agent SDK
|
|
2
|
+
* Claude SDK Adapter - 使用 Agent SDK V2 Session API 实现真正的多轮对话
|
|
3
3
|
*
|
|
4
|
-
* 优势:
|
|
5
|
-
* 1. 进程内执行 - 无 fork/exec
|
|
6
|
-
* 2.
|
|
7
|
-
* 3. 流式输出 -
|
|
4
|
+
* V2 API 优势:
|
|
5
|
+
* 1. 进程内执行 - 无 fork/exec 开销
|
|
6
|
+
* 2. 持久会话 - SDKSession 对象保持会话状态,支持真正的多轮对话
|
|
7
|
+
* 3. 流式输出 - 支持实时增量更新
|
|
8
8
|
*
|
|
9
|
-
* 认证:ANTHROPIC_API_KEY 或 CLAUDE_CODE_OAUTH_TOKEN
|
|
9
|
+
* 认证:ANTHROPIC_API_KEY 或 CLAUDE_CODE_OAUTH_TOKEN
|
|
10
10
|
*/
|
|
11
11
|
import type { ToolAdapter, RunCallbacks, RunOptions, RunHandle } from './tool-adapter.interface.js';
|
|
12
12
|
export declare class ClaudeSDKAdapter implements ToolAdapter {
|
|
13
13
|
readonly toolId = "claude-sdk";
|
|
14
14
|
/**
|
|
15
|
-
* 清理所有活跃的 SDK
|
|
15
|
+
* 清理所有活跃的 SDK 会话和流
|
|
16
16
|
*/
|
|
17
17
|
static destroy(): void;
|
|
18
18
|
run(prompt: string, sessionId: string | undefined, workDir: string, callbacks: RunCallbacks, options?: RunOptions): RunHandle;
|