@next-open-ai/openbot 0.2.1 → 0.3.2

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 (67) hide show
  1. package/README.md +117 -17
  2. package/apps/desktop/renderer/dist/assets/index-DKtaRFW4.js +89 -0
  3. package/apps/desktop/renderer/dist/assets/index-QHuqXpWQ.css +10 -0
  4. package/apps/desktop/renderer/dist/index.html +3 -3
  5. package/dist/cli/cli.js +27 -1
  6. package/dist/cli/service.d.ts +13 -0
  7. package/dist/cli/service.js +243 -0
  8. package/dist/core/agent/agent-manager.d.ts +3 -0
  9. package/dist/core/agent/agent-manager.js +12 -6
  10. package/dist/core/config/desktop-config.d.ts +4 -0
  11. package/dist/core/config/desktop-config.js +5 -1
  12. package/dist/core/installer/index.d.ts +1 -1
  13. package/dist/core/installer/index.js +1 -1
  14. package/dist/core/installer/skill-installer.d.ts +9 -0
  15. package/dist/core/installer/skill-installer.js +94 -0
  16. package/dist/core/mcp/adapter.d.ts +17 -0
  17. package/dist/core/mcp/adapter.js +49 -0
  18. package/dist/core/mcp/client.d.ts +24 -0
  19. package/dist/core/mcp/client.js +70 -0
  20. package/dist/core/mcp/config.d.ts +22 -0
  21. package/dist/core/mcp/config.js +69 -0
  22. package/dist/core/mcp/index.d.ts +18 -0
  23. package/dist/core/mcp/index.js +20 -0
  24. package/dist/core/mcp/operator.d.ts +15 -0
  25. package/dist/core/mcp/operator.js +72 -0
  26. package/dist/core/mcp/transport/index.d.ts +11 -0
  27. package/dist/core/mcp/transport/index.js +16 -0
  28. package/dist/core/mcp/transport/sse.d.ts +20 -0
  29. package/dist/core/mcp/transport/sse.js +82 -0
  30. package/dist/core/mcp/transport/stdio.d.ts +32 -0
  31. package/dist/core/mcp/transport/stdio.js +132 -0
  32. package/dist/core/mcp/types.d.ts +72 -0
  33. package/dist/core/mcp/types.js +5 -0
  34. package/dist/core/tools/bookmark-tool.d.ts +9 -0
  35. package/dist/core/tools/bookmark-tool.js +118 -0
  36. package/dist/core/tools/index.d.ts +1 -0
  37. package/dist/core/tools/index.js +1 -0
  38. package/dist/gateway/methods/agent-chat.js +1 -0
  39. package/dist/gateway/methods/install-skill-from-upload.d.ts +14 -0
  40. package/dist/gateway/methods/install-skill-from-upload.js +13 -0
  41. package/dist/gateway/methods/run-scheduled-task.js +1 -0
  42. package/dist/gateway/server.js +26 -1
  43. package/dist/server/agent-config/agent-config.controller.d.ts +1 -1
  44. package/dist/server/agent-config/agent-config.service.d.ts +4 -1
  45. package/dist/server/agent-config/agent-config.service.js +2 -0
  46. package/dist/server/agents/agents.controller.js +3 -5
  47. package/dist/server/agents/agents.service.d.ts +1 -1
  48. package/dist/server/agents/agents.service.js +4 -2
  49. package/dist/server/app.module.js +2 -0
  50. package/dist/server/database/database.service.d.ts +7 -0
  51. package/dist/server/database/database.service.js +54 -5
  52. package/dist/server/saved-items/saved-items.controller.d.ts +26 -0
  53. package/dist/server/saved-items/saved-items.controller.js +78 -0
  54. package/dist/server/saved-items/saved-items.module.d.ts +2 -0
  55. package/dist/server/saved-items/saved-items.module.js +23 -0
  56. package/dist/server/saved-items/saved-items.service.d.ts +31 -0
  57. package/dist/server/saved-items/saved-items.service.js +105 -0
  58. package/dist/server/saved-items/tags.controller.d.ts +30 -0
  59. package/dist/server/saved-items/tags.controller.js +85 -0
  60. package/dist/server/saved-items/tags.service.d.ts +24 -0
  61. package/dist/server/saved-items/tags.service.js +84 -0
  62. package/dist/server/skills/skills.service.d.ts +2 -0
  63. package/dist/server/skills/skills.service.js +80 -16
  64. package/package.json +8 -2
  65. package/skills/url-bookmark/SKILL.md +36 -0
  66. package/apps/desktop/renderer/dist/assets/index-BOS-F8a4.js +0 -89
  67. package/apps/desktop/renderer/dist/assets/index-DxqxayUL.css +0 -10
package/README.md CHANGED
@@ -36,7 +36,7 @@
36
36
  ▼ ▼ ▼
37
37
  ┌─────────────────────────────────────────────────────────────────────────────┐
38
38
  │ Gateway Server (Node) │
39
- │ • 静态资源 自动发现端口子进程拉起 Desktop Server
39
+ │ • 内嵌 Nest(/server-api)• path 分流 静态资源 自动发现端口
40
40
  └────────────────────────────────────┬────────────────────────────────────────┘
41
41
 
42
42
  ┌────────────────────────────┼────────────────────────────┐
@@ -55,21 +55,55 @@
55
55
  └─────────────────────────────────────────────────────────────────────────────┘
56
56
  ```
57
57
 
58
- - **CLI**:直接调用 Agent 核心,单次提示或批量脚本。
59
- - **WebSocket Gateway**(`src/gateway/`):对外提供 WebSocket(JSON-RPC),供 Web/移动端连接;负责起端口、拉 Nest 后端子进程、代理 `/server-api` 请求。**与「Desktop 后端」是不同进程。**
60
- - **Desktop 后端**(`src/server/`):NestJS HTTP API,即 **server-api**;默认端口 38081。会话、智能体配置、技能、任务、工作区、鉴权等由本模块提供。
58
+ - **CLI**:直接调用 Agent 核心,单次提示或批量脚本;可启动 Gateway(`openbot gateway`)及配置开机自启(`openbot service install/uninstall`)。
59
+ - **WebSocket Gateway**(`src/gateway/`):单进程内嵌 Nest,对外提供 WebSocket(JSON-RPC)与 HTTP;按 path 分流:`/server-api` Nest、`/ws` 为 Agent 对话、`/ws/voice`/`/sse`/`/channel` 为扩展占位,其余为静态资源。供 Web/移动端连接;支持以开机/登录自启方式常驻(Linux cron、macOS LaunchAgent、Windows 计划任务)。
60
+ - **Desktop 后端**(`src/server/`):NestJS HTTP API,即 **server-api**;可被 Gateway 内嵌或独立监听(默认端口 38081)。会话、智能体配置、技能、任务、工作区、鉴权等由本模块提供。
61
61
  - **Desktop**:Electron 包一层 Vue 前端 + 上述后端;通过 Gateway 或直连 Desktop 后端与 Agent 通信。
62
62
  - **Agent 核心**:统一由 `AgentManager` 管理会话、技能注入与工具注册;记忆与 compaction 作为扩展参与 system prompt 与经验写入。
63
63
 
64
+ ### 项目目录结构
65
+
66
+ ```
67
+ openbot/
68
+ ├── src/ # 源码(构建输出 dist/)
69
+ │ ├── core/ # 公共核心,CLI 与 Gateway 共用
70
+ │ │ ├── agent/ # AgentManager、run、技能与配置
71
+ │ │ ├── config/ # 桌面配置(~/.openbot/desktop)
72
+ │ │ ├── memory/ # 向量存储、嵌入、compaction
73
+ │ │ ├── installer/ # 技能安装
74
+ │ │ └── tools/ # 内置工具(browser、install-skill、save-experience 等)
75
+ │ ├── cli/ # CLI 入口与 service 子命令
76
+ │ │ ├── cli.ts # 主入口,构建为 dist/cli/cli.js
77
+ │ │ └── service.ts # 开机自启 install/uninstall/stop
78
+ │ ├── gateway/ # WebSocket 网关(内嵌 Nest、path 分流)
79
+ │ ├── server/ # Desktop 后端(NestJS)
80
+ │ ├── cli.ts # 兼容入口,仅转发到 cli/cli.js
81
+ │ └── index.ts # 包导出
82
+ ├── apps/
83
+ │ ├── desktop/ # Electron + Vue 桌面端
84
+ │ ├── web/ # 预留
85
+ │ ├── mobile/ # 预留
86
+ │ ├── miniprogram/ # 预留
87
+ │ └── browser-extension/ # 预留
88
+ ├── deploy/ # Docker、K8s 等部署
89
+ ├── test/ # 单元与 e2e 测试
90
+ ├── examples/ # 示例(含 workspace、gateway-client)
91
+ └── skills/ # 内置技能(find-skills、agent-browser)
92
+ ```
93
+
64
94
  ### 目录与模块对应
65
95
 
66
96
  | 目录 | 说明 |
67
97
  |------|------|
68
- | `src/server/` | **Desktop 后端**(NestJS),HTTP API,前缀 `server-api`。 |
69
- | `src/gateway/` | **WebSocket 网关**,独立进程,提供 WS JSON-RPC 并代理到 Desktop 后端。 |
70
- | `src/agent/` | Agent 核心(CLI Gateway 共用)。 |
71
- | `src/config/` | 桌面配置(~/.openbot/desktop):config.json、agents.json、provider-support.json;CLI Gateway 共用。 |
72
- | `examples/workspace/` | 示例工作区数据(仅示例/测试用)。真实工作区根目录为 `~/.openbot/workspace/`。 |
98
+ | `src/core/` | **公共核心**:`agent/`(AgentManager、pi-coding-agent)、`config/`(桌面配置)、`memory/`、`installer/`、`tools/`;CLI Gateway 共用。 |
99
+ | `src/cli/` | **CLI**:`cli.ts` 主入口(构建为 `dist/cli/cli.js`),`service.ts` 提供开机自启(install/uninstall/stop)。 |
100
+ | `src/gateway/` | **WebSocket 网关**:单进程内嵌 Nest,按 path 分流:`/server-api`、`/ws`、`/ws/voice`、`/sse`、`/channel`、`/health`、静态资源(`apps/desktop/renderer/dist`)。 |
101
+ | `src/server/` | **Desktop 后端**(NestJS),HTTP API 前缀 `server-api`;可内嵌到 Gateway 或独立监听。 |
102
+ | `apps/desktop/` | **桌面端**(Electron + Vue),前端构建产物由 Gateway 提供。 |
103
+ | `deploy/` | Dockerfile、K8s 等部署配置。 |
104
+ | `test/` | 单元与 e2e 测试(config、gateway、server、installer)。 |
105
+ | `examples/` | 示例工作区、gateway 客户端等。真实工作区根目录为 `~/.openbot/workspace/`。 |
106
+ | `skills/` | 内置技能(SKILL.md 规范)。 |
73
107
 
74
108
  ---
75
109
 
@@ -82,8 +116,9 @@
82
116
  | 运行时 | Node.js 20+ |
83
117
  | 语言 | TypeScript 5.7 |
84
118
  | 入口 | `openbot`(bin → `dist/cli/cli.js`) |
85
- | 框架 | Commander(子命令:`gateway`、`login`、`config`) |
86
- | 配置 | `~/.openbot/agent`(API Key、模型、技能等) |
119
+ | 框架 | Commander(子命令:`gateway`、`login`、`config`、`service`) |
120
+ | 配置 | `~/.openbot/agent`(API Key、模型、技能等);`~/.openbot/desktop`(与桌面共用) |
121
+ | 开机自启 | `openbot service install` / `uninstall`(Linux cron、macOS LaunchAgent、Windows 计划任务);`openbot service stop` 停止当前 gateway |
87
122
 
88
123
  ### WebSocket Gateway
89
124
 
@@ -91,7 +126,8 @@
91
126
  |------|------|
92
127
  | 协议 | JSON-RPC over WebSocket(`ws`) |
93
128
  | 端口 | 默认 38080,可 `-p` 指定 |
94
- | 职责 | 连接管理、消息路由、静态资源、拉 Nest 子进程 |
129
+ | 架构 | 单进程内嵌 Nest;按 path 分流:`/server-api`、`/ws`、`/ws/voice`、`/sse`、`/channel`、`/health`、静态资源 |
130
+ | 职责 | 连接管理、消息路由、鉴权钩子、静态资源(Desktop 前端) |
95
131
  | 方法 | `connect`、`agent.chat`、`agent.cancel`、`subscribe_session`、`unsubscribe_session` 等 |
96
132
 
97
133
  ### Agent 核心
@@ -156,8 +192,29 @@
156
192
 
157
193
  适用于:使用 **CLI**,或在自有环境中运行 **Gateway(Web)**。
158
194
 
195
+ ### 前置环境准备
196
+
197
+ 需先安装 **Node.js 20+**(Node >=20)。任选一种方式安装即可:
198
+
199
+ | 方式 | 说明 |
200
+ |------|------|
201
+ | **官网安装包** | 打开 [nodejs.org](https://nodejs.org/),下载 LTS 并安装;安装后终端执行 `node -v` 应显示 v20.x 或更高。 |
202
+ | **nvm(推荐)** | 多版本切换方便:`curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh \| bash`,重启终端后 `nvm install 20`、`nvm use 20`。 |
203
+ | **macOS (Homebrew)** | `brew install node@20`,或 `brew install nvm` 再用 nvm 安装 20。 |
204
+ | **Windows** | 使用 [nodejs.org](https://nodejs.org/) 安装包,或 `winget install OpenJS.NodeJS.LTS`。 |
205
+ | **Linux** | 使用发行版包管理器(如 `apt install nodejs`)或 [nvm](https://github.com/nvm-sh/nvm) 安装。 |
206
+
207
+ 安装后请确认:
208
+
159
209
  ```bash
160
- # 全局安装(测试过node版本:20/22 24太新,有一些库要本地编译环境)
210
+ node -v # 应为 v20.x 或 v22.x
211
+ npm -v # 能正常输出版本号
212
+ ```
213
+
214
+ ### 安装命令
215
+
216
+ ```bash
217
+ # 全局安装(测试过 node 版本:20/22;24 太新,部分库需本地编译环境)
161
218
  npm install -g @next-open-ai/openbot
162
219
  ```
163
220
 
@@ -194,7 +251,20 @@ npm link # 或 npm install -g . 本地全局安装
194
251
  适用于:仅使用 **桌面端**,无需 Node 环境。
195
252
 
196
253
  - 从 [Releases](https://github.com/next-open-ai/openbot/releases) 下载对应平台的安装包(macOS / Windows)。
197
- - 安装后启动 OpenBot Desktop,按界面引导配置 API Key 与默认模型即可使用。
254
+ - 安装后启动 OpenBot,按界面引导配置 API Key 与默认模型即可使用。
255
+
256
+ **macOS 若提示「已损坏、无法打开」**:因安装包未做 Apple 公证,从浏览器下载后会被系统加上「隔离」属性,出现“已损坏”的误报。请用**终端**去掉隔离属性后即可正常打开(一次性操作):
257
+
258
+ 1. 将下载的 `.dmg` 打开,把 `OpenBot.app` 拖到「应用程序」文件夹(或你想放的目录)。
259
+ 2. 打开「终端」(应用程序 → 实用工具 → 终端),执行(路径按你实际放置位置修改):
260
+ ```bash
261
+ xattr -c /Applications/OpenBot.app
262
+ find /Applications/OpenBot.app -exec xattr -c {} \; 2>/dev/null
263
+ ```
264
+ 若系统支持递归可简化为:`xattr -cr /Applications/OpenBot.app`
265
+ 3. 之后像普通应用一样打开 OpenBot 即可,无需再右键或重复操作。
266
+
267
+ 安装包由仓库通过 **Desktop 打包** 流程生成(见下方「三、开发 → 3.3 Desktop 开发 → Desktop 打包」)。
198
268
 
199
269
  首次使用建议在设置中配置默认 Provider/模型,或通过 CLI 执行 `openbot login <provider> <apiKey> [model]` / `openbot config set-model <provider> <modelId>`(与桌面端共用 `~/.openbot/desktop/` 配置)。
200
270
 
@@ -268,6 +338,8 @@ openbot "总结一下当前有哪些技能"
268
338
  openbot gateway --port 38080
269
339
  ```
270
340
 
341
+ 若需网关开机/登录自启,可执行 `openbot service install`(支持 Linux / macOS / Windows);移除自启用 `openbot service uninstall`,停止当前网关用 `openbot service stop`。
342
+
271
343
  客户端连接 `ws://localhost:38080`,使用 JSON-RPC 调用 `connect`、`agent.chat`、`agent.cancel` 等(详见下方「Gateway API 简述」)。
272
344
  前端可自行实现或使用仓库内 Web 示例(若有)。
273
345
 
@@ -326,8 +398,9 @@ npm run build
326
398
  ## 3.1 CLI 开发
327
399
 
328
400
  - 入口:`openbot` → bin → `dist/cli/cli.js`
329
- - 技术:Commander(子命令 `gateway`、`login`、`config`)、TypeScript 5.7
401
+ - 技术:Commander(子命令 `gateway`、`login`、`config`、`service`)、TypeScript 5.7
330
402
  - 配置与数据:`~/.openbot/agent`、`~/.openbot/desktop`(与桌面共用)
403
+ - Gateway 开机自启:`openbot service install` / `uninstall` / `stop`(见 `src/cli/service.ts`)
331
404
 
332
405
  修改 CLI 后重新构建并本地安装:
333
406
 
@@ -341,7 +414,7 @@ openbot --help
341
414
 
342
415
  ## 3.2 Web 开发(Gateway + 前端)
343
416
 
344
- - **Gateway**:`src/gateway/`,默认端口 38080,可 `-p` 指定;协议 JSON-RPC over WebSocket;职责包括连接管理、消息路由、静态资源、拉 Nest 子进程。
417
+ - **Gateway**:`src/gateway/`,默认端口 38080,可 `-p` 指定;单进程内嵌 Nest,按 path 分流(`/server-api`、`/ws`、静态资源等);协议 JSON-RPC over WebSocket;职责包括连接管理、消息路由、鉴权、静态资源。
345
418
  - **方法**:`connect`、`agent.chat`、`agent.cancel`、`subscribe_session`、`unsubscribe_session` 等。
346
419
 
347
420
  本地启动网关:
@@ -357,7 +430,7 @@ openbot gateway --port 38080
357
430
 
358
431
  ## 3.3 Desktop 开发
359
432
 
360
- - **后端**:NestJS(`src/server/`),前缀 `server-api`,默认端口 38081;Gateway 启动时会拉该子进程并代理 `/server-api`。
433
+ - **后端**:NestJS(`src/server/`),前缀 `server-api`,默认端口 38081;Gateway 内嵌时直接挂载该 Express,无独立子进程。
361
434
  - **前端**:Electron 28 + Vue 3 + Pinia + Vite 5,位于 `apps/desktop/`。
362
435
 
363
436
  ```bash
@@ -371,6 +444,33 @@ npm run desktop:dev
371
444
  npm run desktop:install
372
445
  ```
373
446
 
447
+ ### Desktop 打包
448
+
449
+ 从源码构建可安装的桌面安装包(DMG/NSIS/AppImage),供发布或本地安装使用。
450
+
451
+ **命令(在仓库根目录执行):**
452
+
453
+ ```bash
454
+ npm run desktop:pack
455
+ ```
456
+
457
+ 该命令会依次执行:
458
+
459
+ 1. **根目录构建**:`npm run build`,生成 `dist/`(含 Gateway、Server、Agent 等)。
460
+ 2. **桌面构建**:`cd apps/desktop && npm run build`,其中包含:
461
+ - **build:gateway**:若需则再次构建根目录 `dist`;
462
+ - **build:copy-gateway**:将根目录 `dist` 复制到 `apps/desktop/gateway-dist`,写入 `package.json`(`type: "module"` + 生产依赖),并执行 `npm install --production`,得到带 `node_modules` 的 gateway 运行时;
463
+ - **build:renderer**:Vite 构建前端到 `renderer/dist`;
464
+ - **electron-builder**:打包为各平台安装包,并将 `gateway-dist` 作为 **extraResources** 拷贝到应用内 `Contents/Resources/dist`(含 Gateway 代码与依赖),无需用户安装 Node 即可运行。
465
+
466
+ **产出物:**
467
+
468
+ - **macOS**:`apps/desktop/dist/` 下生成 `.dmg`、`.zip`(如 `OpenBot Desktop-0.1.1-arm64.dmg`);
469
+ - **Windows**:nsis 安装程序;
470
+ - **Linux**:AppImage。
471
+
472
+ 安装包安装后,Gateway 与前端均内嵌在应用内,用户无需单独安装 Node.js。
473
+
374
474
  ---
375
475
 
376
476
  ## 测试