@next-open-ai/openbot 0.1.7 → 0.1.8
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 +206 -52
- package/desktop/renderer/dist/assets/{index-CNZLjusg.css → index-BBoPEPR6.css} +2 -2
- package/desktop/renderer/dist/assets/{index-DWLtb0OE.js → index-DL_hPION.js} +38 -38
- package/desktop/renderer/dist/index.html +2 -2
- package/dist/cli.js +10 -6
- package/dist/config/desktop-config.d.ts +14 -4
- package/dist/config/desktop-config.js +159 -13
- package/dist/config/provider-support-default.d.ts +3 -1
- package/dist/config/provider-support-default.js +15 -2
- package/dist/gateway/server.js +2 -0
- package/dist/server/agent-config/agent-config.controller.d.ts +1 -1
- package/dist/server/agent-config/agent-config.service.d.ts +17 -1
- package/dist/server/agent-config/agent-config.service.js +40 -0
- package/dist/server/config/config.controller.d.ts +2 -0
- package/dist/server/config/config.module.js +2 -0
- package/dist/server/config/config.service.d.ts +8 -1
- package/dist/server/config/config.service.js +16 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
[](https://www.typescriptlang.org/)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
|
|
7
|
-
**OpenBot** 是基于 Agent Skills 与编码智能体(Coding Agent)的**一体化 AI 助手平台**,支持 CLI、WebSocket 网关与桌面端。通过可插拔技能(Skills)、浏览器自动化、代码执行与长期记忆,为开发与日常任务提供可扩展的 AI
|
|
8
|
-
** 大家一起面对 AI Agent 时代的到来**
|
|
7
|
+
**OpenBot** 是基于 Agent Skills 与编码智能体(Coding Agent)的**一体化 AI 助手平台**,支持 CLI、WebSocket 网关与桌面端。通过可插拔技能(Skills)、浏览器自动化、代码执行与长期记忆,为开发与日常任务提供可扩展的 AI 工作流。除提供可自我升级扩展的 AI Agent 引擎及多通道、多终端接入外,后续将支持 MCP 以降低 Token 消耗与大模型幻觉,并接入现有 AI Agent 生态(下一步计划接入 Coze)。
|
|
9
8
|
|
|
10
9
|
---
|
|
11
10
|
|
|
@@ -13,11 +12,13 @@
|
|
|
13
12
|
|
|
14
13
|
| 能力 | 说明 |
|
|
15
14
|
|------|------|
|
|
16
|
-
| **技能架构** | 基于 Agent Skills
|
|
15
|
+
| **技能架构** | 基于 Agent Skills 规范,支持多路径加载、本地安装与动态扩展;支持技能自我发现与自我迭代 |
|
|
17
16
|
| **编码智能体** | 集成 [pi-coding-agent](https://www.npmjs.com/package/@mariozechner/pi-coding-agent),支持多轮工具调用与代码执行 |
|
|
18
17
|
| **浏览器自动化** | 内置 [agent-browser](https://www.npmjs.com/package/agent-browser),可导航、填表、截图与数据抓取 |
|
|
19
18
|
| **长期记忆** | 向量存储(Vectra)+ 本地嵌入,支持经验总结与会话压缩(compaction) |
|
|
20
|
-
| **多端接入** | CLI、WebSocket 网关、Electron 桌面端,同一套 Agent
|
|
19
|
+
| **多端接入** | CLI、WebSocket 网关、Electron 桌面端,同一套 Agent 核心;各端技术栈见下方「各端技术栈」 |
|
|
20
|
+
| **MCP(规划中)** | 为降低 Token 消耗与大模型幻觉,后续将支持 MCP(Model Context Protocol) |
|
|
21
|
+
| **生态接入(规划中)** | 接入现有 AI Agent 生态,下一步计划接入 Coze 生态 |
|
|
21
22
|
|
|
22
23
|
---
|
|
23
24
|
|
|
@@ -56,7 +57,7 @@
|
|
|
56
57
|
|
|
57
58
|
- **CLI**:直接调用 Agent 核心,单次提示或批量脚本。
|
|
58
59
|
- **WebSocket Gateway**(`src/gateway/`):对外提供 WebSocket(JSON-RPC),供 Web/移动端连接;负责起端口、拉 Nest 后端子进程、代理 `/server-api` 请求。**与「Desktop 后端」是不同进程。**
|
|
59
|
-
- **Desktop 后端**(`src/server/`):NestJS HTTP API,即 **server-api**;默认端口 38081
|
|
60
|
+
- **Desktop 后端**(`src/server/`):NestJS HTTP API,即 **server-api**;默认端口 38081。会话、智能体配置、技能、任务、工作区、鉴权等由本模块提供。
|
|
60
61
|
- **Desktop**:Electron 包一层 Vue 前端 + 上述后端;通过 Gateway 或直连 Desktop 后端与 Agent 通信。
|
|
61
62
|
- **Agent 核心**:统一由 `AgentManager` 管理会话、技能注入与工具注册;记忆与 compaction 作为扩展参与 system prompt 与经验写入。
|
|
62
63
|
|
|
@@ -64,10 +65,10 @@
|
|
|
64
65
|
|
|
65
66
|
| 目录 | 说明 |
|
|
66
67
|
|------|------|
|
|
67
|
-
| `src/server/` | **Desktop 后端**(NestJS),HTTP API,前缀 `server-api
|
|
68
|
+
| `src/server/` | **Desktop 后端**(NestJS),HTTP API,前缀 `server-api`。 |
|
|
68
69
|
| `src/gateway/` | **WebSocket 网关**,独立进程,提供 WS JSON-RPC 并代理到 Desktop 后端。 |
|
|
69
70
|
| `src/agent/` | Agent 核心(CLI 与 Gateway 共用)。 |
|
|
70
|
-
| `src/config/` | 桌面配置(~/.openbot/desktop):config.json、agents.json、provider-support.json;CLI 与 Gateway
|
|
71
|
+
| `src/config/` | 桌面配置(~/.openbot/desktop):config.json、agents.json、provider-support.json;CLI 与 Gateway 共用。 |
|
|
71
72
|
| `examples/workspace/` | 示例工作区数据(仅示例/测试用)。真实工作区根目录为 `~/.openbot/workspace/`。 |
|
|
72
73
|
|
|
73
74
|
---
|
|
@@ -140,26 +141,74 @@
|
|
|
140
141
|
|
|
141
142
|
---
|
|
142
143
|
|
|
143
|
-
|
|
144
|
+
# 一、安装与部署
|
|
144
145
|
|
|
145
|
-
|
|
146
|
+
安装与部署按**安装方式**划分:npm、Docker、Desktop 安装包。任选其一即可使用对应端的 CLI、Web 或 Desktop。
|
|
146
147
|
|
|
147
|
-
|
|
148
|
-
- 可选:`OPENAI_API_KEY` (按所用 provider 配置)
|
|
148
|
+
## 环境要求
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
- **Node.js** ≥ 20(npm 安装与本地开发必需)
|
|
151
|
+
- 可选:按所用 Provider 配置 API Key(如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`)
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 1.1 npm 安装
|
|
156
|
+
|
|
157
|
+
适用于:使用 **CLI**,或在自有环境中运行 **Gateway(Web)**。
|
|
151
158
|
|
|
152
159
|
```bash
|
|
160
|
+
# 全局安装(测试过node版本:20/22 24太新,有一些库要本地编译环境)
|
|
161
|
+
npm install -g @next-open-ai/openbot
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
安装后可直接使用 `openbot` 命令(见下方「使用方式」)。若需从源码构建再安装:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
git clone <repo>
|
|
168
|
+
cd openbot
|
|
153
169
|
npm install
|
|
154
170
|
npm run build
|
|
171
|
+
npm link # 或 npm install -g . 本地全局安装
|
|
155
172
|
```
|
|
156
173
|
|
|
157
|
-
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## 1.2 Docker 部署
|
|
177
|
+
|
|
178
|
+
适用于:在服务器或容器环境中运行 **Gateway**,供 Web/其他客户端连接。
|
|
179
|
+
|
|
180
|
+
> **说明**:Docker 镜像与编排正在规划中,当前推荐使用 npm 全局安装后执行 `openbot gateway` 部署网关。
|
|
181
|
+
|
|
182
|
+
规划中的使用方式示例:
|
|
158
183
|
|
|
159
184
|
```bash
|
|
160
|
-
#
|
|
161
|
-
|
|
185
|
+
# 示例(以实际仓库/镜像名为准)
|
|
186
|
+
# docker pull next-open-ai/openbot
|
|
187
|
+
# docker run -p 38080:38080 -e OPENAI_API_KEY=xxx next-open-ai/openbot gateway
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 1.3 Desktop 安装包
|
|
162
193
|
|
|
194
|
+
适用于:仅使用 **桌面端**,无需 Node 环境。
|
|
195
|
+
|
|
196
|
+
- 从 [Releases](https://github.com/next-open-ai/openbot/releases) 下载对应平台的安装包(macOS / Windows)。
|
|
197
|
+
- 安装后启动 OpenBot Desktop,按界面引导配置 API Key 与默认模型即可使用。
|
|
198
|
+
|
|
199
|
+
首次使用建议在设置中配置默认 Provider/模型,或通过 CLI 执行 `openbot login <provider> <apiKey> [model]` / `openbot config set-model <provider> <modelId>`(与桌面端共用 `~/.openbot/desktop/` 配置)。
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
# 二、使用方式
|
|
204
|
+
|
|
205
|
+
按**使用端**划分:CLI、Web、Desktop;后续将支持 iOS、Android、飞书等。
|
|
206
|
+
|
|
207
|
+
## 2.1 CLI
|
|
208
|
+
|
|
209
|
+
在已通过 **npm 安装** 或 **源码构建并 link** 的环境中,在终端使用 `openbot`。
|
|
210
|
+
|
|
211
|
+
```bash
|
|
163
212
|
# 直接对话(使用默认 workspace 与技能)
|
|
164
213
|
openbot "总结一下当前有哪些技能"
|
|
165
214
|
|
|
@@ -173,55 +222,143 @@ openbot --dry-run --prompt "查北京天气"
|
|
|
173
222
|
openbot --model deepseek-chat --provider deepseek "写一段 TypeScript 示例"
|
|
174
223
|
```
|
|
175
224
|
|
|
176
|
-
### CLI
|
|
225
|
+
### CLI 配置(与桌面端共用)
|
|
177
226
|
|
|
178
227
|
CLI 与桌面端共用**桌面配置**(`~/.openbot/desktop/`)。主要文件:
|
|
179
228
|
|
|
180
|
-
- **config.json**:全局缺省 provider/model
|
|
181
|
-
- **agents.json
|
|
182
|
-
- **provider-support.json**:Provider
|
|
183
|
-
|
|
184
|
-
未在命令行显式指定 `--provider` / `--model` 时,CLI 使用**缺省智能体**(`defaultAgentId`)对应的 provider 与 model;若该智能体在 agents.json 中单独配置了则用其值,否则用 config 的 `defaultProvider` / `defaultModel`。
|
|
229
|
+
- **config.json**:全局缺省 provider/model、**defaultModelItemCode**(缺省模型在 configuredModels 中的唯一标识)、缺省智能体 id(`defaultAgentId`)、各 provider 的 API Key/baseUrl、已配置模型列表(configuredModels)等。
|
|
230
|
+
- **agents.json**:智能体列表;每个智能体可配置 provider、model、**modelItemCode**(匹配 configuredModels)、工作区。
|
|
231
|
+
- **provider-support.json**:Provider 与模型目录,供设置页下拉选择。
|
|
185
232
|
|
|
186
233
|
| 操作 | 命令 | 说明 |
|
|
187
234
|
|------|------|------|
|
|
188
|
-
| 保存 API Key | `openbot login <provider> <apiKey
|
|
189
|
-
| 设置缺省模型 | `openbot config set-model <provider> <modelId>` |
|
|
190
|
-
| 查看配置 | `openbot config list` |
|
|
191
|
-
| 同步到 Agent 目录 | `openbot config sync` |
|
|
192
|
-
|
|
193
|
-
**常用 Provider 示例**:`deepseek`、`dashscope`、`openai`、`openai-custom`(自定义 OpenAI 兼容端点)、`nvidia`、`kimi`。模型 ID 需与各 Provider 支持的一致(如 DeepSeek 的 `deepseek-chat`、OpenAI 的 `gpt-4o`);使用 `openai-custom` 时可填写自部署模型的 ID。
|
|
194
|
-
|
|
195
|
-
**命令行覆盖**:单次执行时可用 `--provider`、`--model`、`--api-key` 覆盖配置或环境变量中的值。
|
|
196
|
-
|
|
197
|
-
**环境变量**:未在桌面配置中保存 API Key 时,会回退到环境变量,例如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`、`DASHSCOPE_API_KEY` 等(详见 `openbot --help` 末尾的 Environment 说明)。
|
|
235
|
+
| 保存 API Key(可选指定模型) | `openbot login <provider> <apiKey> [model]` | 写入 config.json;不传 model 时取该 provider 第一个模型并补齐缺省配置,可直接运行 |
|
|
236
|
+
| 设置缺省模型 | `openbot config set-model <provider> <modelId>` | 设置全局缺省 provider、model 及 defaultModelItemCode |
|
|
237
|
+
| 查看配置 | `openbot config list` | 列出 providers 与缺省模型 |
|
|
238
|
+
| 同步到 Agent 目录 | `openbot config sync` | 生成并写入 `~/.openbot/agent/models.json` |
|
|
198
239
|
|
|
199
240
|
**首次使用建议**:
|
|
200
241
|
|
|
201
242
|
```bash
|
|
202
|
-
#
|
|
243
|
+
# 方式一:login 后直接对话(不传 model 时自动用该 provider 第一个模型)
|
|
203
244
|
openbot login deepseek YOUR_DEEPSEEK_API_KEY
|
|
204
|
-
|
|
245
|
+
openbot "总结一下当前有哪些技能"
|
|
205
246
|
|
|
206
|
-
#
|
|
207
|
-
openbot
|
|
247
|
+
# 方式二:指定模型再 login
|
|
248
|
+
openbot login deepseek YOUR_DEEPSEEK_API_KEY deepseek-reasoner
|
|
249
|
+
openbot "总结一下当前有哪些技能"
|
|
208
250
|
|
|
209
|
-
#
|
|
251
|
+
# 方式三:先 login 再单独设置缺省模型
|
|
252
|
+
openbot login deepseek YOUR_DEEPSEEK_API_KEY
|
|
253
|
+
openbot config set-model deepseek deepseek-chat
|
|
210
254
|
openbot config sync
|
|
211
|
-
|
|
212
|
-
# 4. 直接对话
|
|
213
255
|
openbot "总结一下当前有哪些技能"
|
|
214
256
|
```
|
|
215
257
|
|
|
216
|
-
|
|
258
|
+
未在命令行指定 `--provider` / `--model` 时,CLI 使用缺省智能体对应的配置;单次可用 `--provider`、`--model`、`--api-key` 覆盖。未在配置中保存 API Key 时,会回退到环境变量(如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`)。
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## 2.2 Web
|
|
263
|
+
|
|
264
|
+
通过 **WebSocket 网关** 使用 OpenBot:先启动网关,再通过 Web 客户端连接。
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# 启动网关(默认端口 38080)
|
|
268
|
+
openbot gateway --port 38080
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
客户端连接 `ws://localhost:38080`,使用 JSON-RPC 调用 `connect`、`agent.chat`、`agent.cancel` 等(详见下方「Gateway API 简述」)。
|
|
272
|
+
前端可自行实现或使用仓库内 Web 示例(若有)。
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 2.3 Desktop
|
|
277
|
+
|
|
278
|
+
- **通过安装包**:安装后直接打开 OpenBot Desktop,登录/配置后即可使用桌面界面(会话、智能体、技能、任务、工作区等)。
|
|
279
|
+
- **通过源码**:在「开发」章节中运行 `npm run desktop:dev` 启动开发版桌面。
|
|
280
|
+
|
|
281
|
+
桌面端与 CLI 共用同一套配置与 Agent 核心,同一台机器上配置一次即可双端使用。
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## 2.4 即将支持
|
|
286
|
+
|
|
287
|
+
**通道与终端**
|
|
288
|
+
|
|
289
|
+
| 端 | 说明 |
|
|
290
|
+
|----|------|
|
|
291
|
+
| **iOS** | 规划中 |
|
|
292
|
+
| **Android** | 规划中 |
|
|
293
|
+
| **飞书** | 规划中 |
|
|
294
|
+
|
|
295
|
+
上述端将通过 WebSocket Gateway 或专用适配与现有 Agent 核心对接。
|
|
296
|
+
|
|
297
|
+
**生态与协议**
|
|
298
|
+
|
|
299
|
+
| 方向 | 说明 |
|
|
300
|
+
|------|------|
|
|
301
|
+
| **MCP** | 支持 MCP 协议,降低 Token 消耗与大模型幻觉,与 Skill 自我发现/迭代形成互补 |
|
|
302
|
+
| **Coze 生态** | 接入现有 AI Agent 生态,下一步计划接入 Coze |
|
|
303
|
+
|
|
304
|
+
文档与发布节奏后续更新。
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
# 三、开发
|
|
309
|
+
|
|
310
|
+
面向**参与 OpenBot 源码开发**的读者,按形态分为 CLI、Web(Gateway + 前端)、Desktop 三部分。
|
|
311
|
+
|
|
312
|
+
## 环境与依赖
|
|
313
|
+
|
|
314
|
+
- Node.js ≥ 20
|
|
315
|
+
- 仓库克隆后安装依赖并构建:
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
git clone <repo>
|
|
319
|
+
cd openbot
|
|
320
|
+
npm install
|
|
321
|
+
npm run build
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## 3.1 CLI 开发
|
|
327
|
+
|
|
328
|
+
- 入口:`openbot` → bin → `dist/cli.js`
|
|
329
|
+
- 技术:Commander(子命令 `gateway`、`login`、`config`)、TypeScript 5.7
|
|
330
|
+
- 配置与数据:`~/.openbot/agent`、`~/.openbot/desktop`(与桌面共用)
|
|
331
|
+
|
|
332
|
+
修改 CLI 后重新构建并本地安装:
|
|
217
333
|
|
|
218
334
|
```bash
|
|
335
|
+
npm run build
|
|
336
|
+
npm link
|
|
337
|
+
openbot --help
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
## 3.2 Web 开发(Gateway + 前端)
|
|
343
|
+
|
|
344
|
+
- **Gateway**:`src/gateway/`,默认端口 38080,可 `-p` 指定;协议 JSON-RPC over WebSocket;职责包括连接管理、消息路由、静态资源、拉 Nest 子进程。
|
|
345
|
+
- **方法**:`connect`、`agent.chat`、`agent.cancel`、`subscribe_session`、`unsubscribe_session` 等。
|
|
346
|
+
|
|
347
|
+
本地启动网关:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
npm run build
|
|
219
351
|
openbot gateway --port 38080
|
|
220
352
|
```
|
|
221
353
|
|
|
222
|
-
|
|
354
|
+
若仓库内有独立 Web 前端工程,则分别启动 Gateway 与前端 dev server,前端通过 `ws://localhost:38080` 连接。
|
|
355
|
+
|
|
356
|
+
---
|
|
357
|
+
|
|
358
|
+
## 3.3 Desktop 开发
|
|
223
359
|
|
|
224
|
-
|
|
360
|
+
- **后端**:NestJS(`src/server/`),前缀 `server-api`,默认端口 38081;Gateway 启动时会拉该子进程并代理 `/server-api`。
|
|
361
|
+
- **前端**:Electron 28 + Vue 3 + Pinia + Vite 5,位于 `desktop/`。
|
|
225
362
|
|
|
226
363
|
```bash
|
|
227
364
|
# 先构建核心(若未构建)
|
|
@@ -236,6 +373,25 @@ npm run desktop:install
|
|
|
236
373
|
|
|
237
374
|
---
|
|
238
375
|
|
|
376
|
+
## 测试
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
# 单元/集成测试(含 config、gateway、server e2e)
|
|
380
|
+
npm test
|
|
381
|
+
|
|
382
|
+
# 仅 e2e
|
|
383
|
+
npm run test:e2e
|
|
384
|
+
|
|
385
|
+
# 记忆相关测试
|
|
386
|
+
npm run test:memory
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
测试分布:`test/config/` 桌面配置、`test/gateway/` 网关、`test/server/` Nest 后端 e2e。
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
# 附录
|
|
394
|
+
|
|
239
395
|
## Gateway API 简述
|
|
240
396
|
|
|
241
397
|
- **请求**:`{ "type": "request", "id": "<id>", "method": "<method>", "params": { ... } }`
|
|
@@ -243,24 +399,22 @@ npm run desktop:install
|
|
|
243
399
|
- **错误响应**:`{ "type": "response", "id": "<id>", "error": { "message": "..." } }`
|
|
244
400
|
- **服务端事件**:如 `agent.chunk`(流式输出)、`agent.tool`(工具调用)等,格式为 `{ "type": "event", "event": "...", "payload": { ... } }`
|
|
245
401
|
|
|
246
|
-
|
|
402
|
+
常用流程:先 `connect` 建立会话,再通过 `agent.chat` 发送消息并接收流式/事件;`agent.cancel` 取消当前任务。
|
|
247
403
|
|
|
248
404
|
---
|
|
249
405
|
|
|
250
|
-
##
|
|
406
|
+
## 各端技术栈
|
|
251
407
|
|
|
252
|
-
|
|
253
|
-
# 单元/集成测试(含 config/desktop-config、gateway/utils、server agents e2e)
|
|
254
|
-
npm test
|
|
408
|
+
详见上文「各端技术栈」章节(CLI、WebSocket Gateway、Agent 核心、Desktop 后端/前端、记忆与向量、内置技能)。
|
|
255
409
|
|
|
256
|
-
|
|
257
|
-
npm run test:e2e
|
|
410
|
+
---
|
|
258
411
|
|
|
259
|
-
|
|
260
|
-
npm run test:memory
|
|
261
|
-
```
|
|
412
|
+
## 内置技能
|
|
262
413
|
|
|
263
|
-
|
|
414
|
+
| 技能 | 说明 |
|
|
415
|
+
|------|------|
|
|
416
|
+
| find-skills | 发现与安装 Cursor/Agent 技能 |
|
|
417
|
+
| agent-browser | 浏览器自动化(Playwright/agent-browser CLI) |
|
|
264
418
|
|
|
265
419
|
---
|
|
266
420
|
|