@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.
- package/README.md +117 -17
- package/apps/desktop/renderer/dist/assets/index-DKtaRFW4.js +89 -0
- package/apps/desktop/renderer/dist/assets/index-QHuqXpWQ.css +10 -0
- package/apps/desktop/renderer/dist/index.html +3 -3
- package/dist/cli/cli.js +27 -1
- package/dist/cli/service.d.ts +13 -0
- package/dist/cli/service.js +243 -0
- package/dist/core/agent/agent-manager.d.ts +3 -0
- package/dist/core/agent/agent-manager.js +12 -6
- package/dist/core/config/desktop-config.d.ts +4 -0
- package/dist/core/config/desktop-config.js +5 -1
- package/dist/core/installer/index.d.ts +1 -1
- package/dist/core/installer/index.js +1 -1
- package/dist/core/installer/skill-installer.d.ts +9 -0
- package/dist/core/installer/skill-installer.js +94 -0
- package/dist/core/mcp/adapter.d.ts +17 -0
- package/dist/core/mcp/adapter.js +49 -0
- package/dist/core/mcp/client.d.ts +24 -0
- package/dist/core/mcp/client.js +70 -0
- package/dist/core/mcp/config.d.ts +22 -0
- package/dist/core/mcp/config.js +69 -0
- package/dist/core/mcp/index.d.ts +18 -0
- package/dist/core/mcp/index.js +20 -0
- package/dist/core/mcp/operator.d.ts +15 -0
- package/dist/core/mcp/operator.js +72 -0
- package/dist/core/mcp/transport/index.d.ts +11 -0
- package/dist/core/mcp/transport/index.js +16 -0
- package/dist/core/mcp/transport/sse.d.ts +20 -0
- package/dist/core/mcp/transport/sse.js +82 -0
- package/dist/core/mcp/transport/stdio.d.ts +32 -0
- package/dist/core/mcp/transport/stdio.js +132 -0
- package/dist/core/mcp/types.d.ts +72 -0
- package/dist/core/mcp/types.js +5 -0
- package/dist/core/tools/bookmark-tool.d.ts +9 -0
- package/dist/core/tools/bookmark-tool.js +118 -0
- package/dist/core/tools/index.d.ts +1 -0
- package/dist/core/tools/index.js +1 -0
- package/dist/gateway/methods/agent-chat.js +1 -0
- package/dist/gateway/methods/install-skill-from-upload.d.ts +14 -0
- package/dist/gateway/methods/install-skill-from-upload.js +13 -0
- package/dist/gateway/methods/run-scheduled-task.js +1 -0
- package/dist/gateway/server.js +26 -1
- package/dist/server/agent-config/agent-config.controller.d.ts +1 -1
- package/dist/server/agent-config/agent-config.service.d.ts +4 -1
- package/dist/server/agent-config/agent-config.service.js +2 -0
- package/dist/server/agents/agents.controller.js +3 -5
- package/dist/server/agents/agents.service.d.ts +1 -1
- package/dist/server/agents/agents.service.js +4 -2
- package/dist/server/app.module.js +2 -0
- package/dist/server/database/database.service.d.ts +7 -0
- package/dist/server/database/database.service.js +54 -5
- package/dist/server/saved-items/saved-items.controller.d.ts +26 -0
- package/dist/server/saved-items/saved-items.controller.js +78 -0
- package/dist/server/saved-items/saved-items.module.d.ts +2 -0
- package/dist/server/saved-items/saved-items.module.js +23 -0
- package/dist/server/saved-items/saved-items.service.d.ts +31 -0
- package/dist/server/saved-items/saved-items.service.js +105 -0
- package/dist/server/saved-items/tags.controller.d.ts +30 -0
- package/dist/server/saved-items/tags.controller.js +85 -0
- package/dist/server/saved-items/tags.service.d.ts +24 -0
- package/dist/server/saved-items/tags.service.js +84 -0
- package/dist/server/skills/skills.service.d.ts +2 -0
- package/dist/server/skills/skills.service.js +80 -16
- package/package.json +8 -2
- package/skills/url-bookmark/SKILL.md +36 -0
- package/apps/desktop/renderer/dist/assets/index-BOS-F8a4.js +0 -89
- 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
|
-
│ •
|
|
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
|
|
60
|
-
- **Desktop 后端**(`src/server/`):NestJS HTTP API,即 **server-api
|
|
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/
|
|
69
|
-
| `src/
|
|
70
|
-
| `src/
|
|
71
|
-
| `src/
|
|
72
|
-
| `
|
|
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
|
-
|
|
|
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
|
-
#
|
|
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
|
|
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`
|
|
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
|
|
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
|
## 测试
|