@next-open-ai/openclawx 0.6.6
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 +523 -0
- package/apps/desktop/README.md +210 -0
- package/apps/desktop/renderer/dist/assets/index-CYkSfhcp.css +10 -0
- package/apps/desktop/renderer/dist/assets/index-FI6O25Ms.js +89 -0
- package/apps/desktop/renderer/dist/index.html +22 -0
- package/dist/cli/cli.d.ts +2 -0
- package/dist/cli/cli.js +198 -0
- package/dist/cli/service.d.ts +13 -0
- package/dist/cli/service.js +243 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.js +5 -0
- package/dist/core/agent/agent-dir.d.ts +14 -0
- package/dist/core/agent/agent-dir.js +75 -0
- package/dist/core/agent/agent-manager.d.ts +64 -0
- package/dist/core/agent/agent-manager.js +278 -0
- package/dist/core/agent/config-manager.d.ts +25 -0
- package/dist/core/agent/config-manager.js +84 -0
- package/dist/core/agent/run.d.ts +26 -0
- package/dist/core/agent/run.js +65 -0
- package/dist/core/agent/skills.d.ts +20 -0
- package/dist/core/agent/skills.js +86 -0
- package/dist/core/config/desktop-config.d.ts +90 -0
- package/dist/core/config/desktop-config.js +521 -0
- package/dist/core/config/provider-support-default.d.ts +21 -0
- package/dist/core/config/provider-support-default.js +57 -0
- package/dist/core/installer/index.d.ts +1 -0
- package/dist/core/installer/index.js +1 -0
- package/dist/core/installer/skill-installer.d.ts +39 -0
- package/dist/core/installer/skill-installer.js +215 -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/memory/build-summary.d.ts +6 -0
- package/dist/core/memory/build-summary.js +27 -0
- package/dist/core/memory/compaction-extension.d.ts +6 -0
- package/dist/core/memory/compaction-extension.js +23 -0
- package/dist/core/memory/embedding.d.ts +4 -0
- package/dist/core/memory/embedding.js +15 -0
- package/dist/core/memory/index.d.ts +29 -0
- package/dist/core/memory/index.js +70 -0
- package/dist/core/memory/remote-embedding.d.ts +10 -0
- package/dist/core/memory/remote-embedding.js +36 -0
- package/dist/core/memory/types.d.ts +16 -0
- package/dist/core/memory/types.js +1 -0
- package/dist/core/memory/vector-store.d.ts +15 -0
- package/dist/core/memory/vector-store.js +65 -0
- package/dist/core/tools/bookmark-tool.d.ts +9 -0
- package/dist/core/tools/bookmark-tool.js +118 -0
- package/dist/core/tools/browser-tool.d.ts +10 -0
- package/dist/core/tools/browser-tool.js +362 -0
- package/dist/core/tools/index.d.ts +4 -0
- package/dist/core/tools/index.js +4 -0
- package/dist/core/tools/install-skill-tool.d.ts +6 -0
- package/dist/core/tools/install-skill-tool.js +53 -0
- package/dist/core/tools/save-experience-tool.d.ts +5 -0
- package/dist/core/tools/save-experience-tool.js +54 -0
- package/dist/gateway/auth-hooks.d.ts +17 -0
- package/dist/gateway/auth-hooks.js +19 -0
- package/dist/gateway/backend-url.d.ts +2 -0
- package/dist/gateway/backend-url.js +11 -0
- package/dist/gateway/channel-handler.d.ts +6 -0
- package/dist/gateway/channel-handler.js +3 -0
- package/dist/gateway/clients.d.ts +5 -0
- package/dist/gateway/clients.js +4 -0
- package/dist/gateway/connection-handler.d.ts +6 -0
- package/dist/gateway/connection-handler.js +48 -0
- package/dist/gateway/index.d.ts +3 -0
- package/dist/gateway/index.js +2 -0
- package/dist/gateway/message-handler.d.ts +5 -0
- package/dist/gateway/message-handler.js +65 -0
- package/dist/gateway/methods/agent-cancel.d.ts +10 -0
- package/dist/gateway/methods/agent-cancel.js +17 -0
- package/dist/gateway/methods/agent-chat.d.ts +8 -0
- package/dist/gateway/methods/agent-chat.js +148 -0
- package/dist/gateway/methods/connect.d.ts +9 -0
- package/dist/gateway/methods/connect.js +18 -0
- package/dist/gateway/methods/install-skill-from-path.d.ts +13 -0
- package/dist/gateway/methods/install-skill-from-path.js +15 -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.d.ts +15 -0
- package/dist/gateway/methods/run-scheduled-task.js +127 -0
- package/dist/gateway/paths.d.ts +20 -0
- package/dist/gateway/paths.js +19 -0
- package/dist/gateway/server.d.ts +8 -0
- package/dist/gateway/server.js +190 -0
- package/dist/gateway/sse-handler.d.ts +6 -0
- package/dist/gateway/sse-handler.js +3 -0
- package/dist/gateway/types.d.ts +90 -0
- package/dist/gateway/types.js +1 -0
- package/dist/gateway/utils.d.ts +22 -0
- package/dist/gateway/utils.js +67 -0
- package/dist/gateway/voice-handler.d.ts +12 -0
- package/dist/gateway/voice-handler.js +18 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/server/agent-config/agent-config.controller.d.ts +30 -0
- package/dist/server/agent-config/agent-config.controller.js +83 -0
- package/dist/server/agent-config/agent-config.module.d.ts +2 -0
- package/dist/server/agent-config/agent-config.module.js +19 -0
- package/dist/server/agent-config/agent-config.service.d.ts +53 -0
- package/dist/server/agent-config/agent-config.service.js +213 -0
- package/dist/server/agents/agents.controller.d.ts +41 -0
- package/dist/server/agents/agents.controller.js +118 -0
- package/dist/server/agents/agents.gateway.d.ts +21 -0
- package/dist/server/agents/agents.gateway.js +103 -0
- package/dist/server/agents/agents.module.d.ts +2 -0
- package/dist/server/agents/agents.module.js +20 -0
- package/dist/server/agents/agents.service.d.ts +63 -0
- package/dist/server/agents/agents.service.js +169 -0
- package/dist/server/app.module.d.ts +2 -0
- package/dist/server/app.module.js +38 -0
- package/dist/server/auth/auth.controller.d.ts +20 -0
- package/dist/server/auth/auth.controller.js +64 -0
- package/dist/server/auth/auth.module.d.ts +2 -0
- package/dist/server/auth/auth.module.js +19 -0
- package/dist/server/bootstrap.d.ts +15 -0
- package/dist/server/bootstrap.js +38 -0
- package/dist/server/config/config.controller.d.ts +73 -0
- package/dist/server/config/config.controller.js +95 -0
- package/dist/server/config/config.module.d.ts +2 -0
- package/dist/server/config/config.module.js +21 -0
- package/dist/server/config/config.service.d.ts +82 -0
- package/dist/server/config/config.service.js +123 -0
- package/dist/server/database/database.module.d.ts +2 -0
- package/dist/server/database/database.module.js +18 -0
- package/dist/server/database/database.service.d.ts +26 -0
- package/dist/server/database/database.service.js +253 -0
- package/dist/server/main.d.ts +1 -0
- package/dist/server/main.js +9 -0
- package/dist/server/saved-items/saved-items.controller.d.ts +57 -0
- package/dist/server/saved-items/saved-items.controller.js +229 -0
- package/dist/server/saved-items/saved-items.module.d.ts +2 -0
- package/dist/server/saved-items/saved-items.module.js +25 -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.controller.d.ts +63 -0
- package/dist/server/skills/skills.controller.js +194 -0
- package/dist/server/skills/skills.module.d.ts +2 -0
- package/dist/server/skills/skills.module.js +22 -0
- package/dist/server/skills/skills.service.d.ts +65 -0
- package/dist/server/skills/skills.service.js +388 -0
- package/dist/server/tasks/tasks.controller.d.ts +52 -0
- package/dist/server/tasks/tasks.controller.js +163 -0
- package/dist/server/tasks/tasks.module.d.ts +2 -0
- package/dist/server/tasks/tasks.module.js +23 -0
- package/dist/server/tasks/tasks.service.d.ts +86 -0
- package/dist/server/tasks/tasks.service.js +327 -0
- package/dist/server/usage/usage.controller.d.ts +12 -0
- package/dist/server/usage/usage.controller.js +46 -0
- package/dist/server/usage/usage.module.d.ts +2 -0
- package/dist/server/usage/usage.module.js +19 -0
- package/dist/server/usage/usage.service.d.ts +21 -0
- package/dist/server/usage/usage.service.js +55 -0
- package/dist/server/users/users.controller.d.ts +35 -0
- package/dist/server/users/users.controller.js +69 -0
- package/dist/server/users/users.module.d.ts +2 -0
- package/dist/server/users/users.module.js +19 -0
- package/dist/server/users/users.service.d.ts +39 -0
- package/dist/server/users/users.service.js +140 -0
- package/dist/server/workspace/workspace.controller.d.ts +24 -0
- package/dist/server/workspace/workspace.controller.js +132 -0
- package/dist/server/workspace/workspace.module.d.ts +2 -0
- package/dist/server/workspace/workspace.module.js +21 -0
- package/dist/server/workspace/workspace.service.d.ts +36 -0
- package/dist/server/workspace/workspace.service.js +142 -0
- package/package.json +90 -0
- package/skills/agent-browser/SKILL.md +207 -0
- package/skills/agent-browser/references/authentication.md +202 -0
- package/skills/agent-browser/references/commands.md +259 -0
- package/skills/agent-browser/references/proxy-support.md +188 -0
- package/skills/agent-browser/references/session-management.md +193 -0
- package/skills/agent-browser/references/snapshot-refs.md +194 -0
- package/skills/agent-browser/references/video-recording.md +173 -0
- package/skills/agent-browser/templates/authenticated-session.sh +97 -0
- package/skills/agent-browser/templates/capture-workflow.sh +69 -0
- package/skills/agent-browser/templates/form-automation.sh +62 -0
- package/skills/find-skills/SKILL.md +140 -0
- package/skills/url-bookmark/SKILL.md +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
# OpenBot
|
|
2
|
+
基于自已的OpenBot重构而来
|
|
3
|
+
[](https://nodejs.org/)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
|
|
7
|
+
**一个桌面级OpenClaw实现** 是基于 Agent Skills的**一体化 AI 助手平台**,核心部分支持 CLI、WebSocket 网关与桌面端。除提供可自我升级扩展的 AI Agent 引擎及多通道、多终端接入外,后续将支持 MCP 以降低 Token 消耗与大模型幻觉,并接入现有AI Agent 生态,成为一个互联互通的Agent平台。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 特性概览
|
|
12
|
+
|
|
13
|
+
| 能力 | 说明 |
|
|
14
|
+
|------|------|
|
|
15
|
+
| **技能架构** | 基于 Agent Skills 规范,支持多路径加载、本地安装与动态扩展;支持技能自我发现与自我迭代 |
|
|
16
|
+
| **编码智能体** | 集成 [pi-coding-agent](https://www.npmjs.com/package/@mariozechner/pi-coding-agent),支持多轮工具调用与代码执行 |
|
|
17
|
+
| **浏览器自动化** | 内置 [agent-browser](https://www.npmjs.com/package/agent-browser),可导航、填表、截图与数据抓取 |
|
|
18
|
+
| **长期记忆** | 向量存储(Vectra)+ 本地嵌入,支持经验总结与会话压缩(compaction) |
|
|
19
|
+
| **多端接入** | CLI、WebSocket 网关、Electron 桌面端,同一套 Agent 核心;各端技术栈见下方「各端技术栈」 |
|
|
20
|
+
| **MCP(规划中)** | 为降低 Token 消耗与大模型幻觉,后续将支持 MCP(Model Context Protocol) |
|
|
21
|
+
| **生态接入(规划中)** | 接入现有 AI Agent 生态,下一步计划接入 Coze 生态 |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 技术架构
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
29
|
+
│ 客户端 / 接入层 │
|
|
30
|
+
├─────────────────┬─────────────────────────────┬─────────────────────────────┤
|
|
31
|
+
│ CLI (openbot) │ WebSocket Gateway (JSON-RPC) │ OpenBot Desktop (Electron) │
|
|
32
|
+
│ Commander │ ws, 端口 38080 │ Vue 3 + Pinia + Vite │
|
|
33
|
+
└────────┬────────┴──────────────┬──────────────┴──────────────┬──────────────┘
|
|
34
|
+
│ │ │
|
|
35
|
+
│ │ HTTP + Socket.io │
|
|
36
|
+
▼ ▼ ▼
|
|
37
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
38
|
+
│ Gateway Server (Node) │
|
|
39
|
+
│ • 内嵌 Nest(/server-api)• 按 path 分流 • 静态资源 • 自动发现端口 │
|
|
40
|
+
└────────────────────────────────────┬────────────────────────────────────────┘
|
|
41
|
+
│
|
|
42
|
+
┌────────────────────────────┼────────────────────────────┐
|
|
43
|
+
▼ ▼ ▼
|
|
44
|
+
┌─────────────────┐ ┌─────────────────────────────┐ ┌─────────────────────┐
|
|
45
|
+
│ Agent 核心 │ │ Desktop Backend (NestJS) │ │ Memory / 向量存储 │
|
|
46
|
+
│ AgentManager │ │ server-api/* │ │ Vectra + 嵌入 │
|
|
47
|
+
│ pi-coding-agent│ │ Agents · Skills · Tasks │ │ compaction 扩展 │
|
|
48
|
+
│ pi-ai 多模型 │ │ Auth · Users · Workspace │ │ sql.js │
|
|
49
|
+
└────────┬────────┘ └─────────────────────────────┘ └─────────────────────┘
|
|
50
|
+
│
|
|
51
|
+
▼
|
|
52
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
53
|
+
│ Tools: read/write/edit · bash · find/grep/ls · browser · install-skill · │
|
|
54
|
+
│ save-experience (写入记忆) │
|
|
55
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
56
|
+
```
|
|
57
|
+
|
|
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
|
+
- **Desktop**:Electron 包一层 Vue 前端 + 上述后端;通过 Gateway 或直连 Desktop 后端与 Agent 通信。
|
|
62
|
+
- **Agent 核心**:统一由 `AgentManager` 管理会话、技能注入与工具注册;记忆与 compaction 作为扩展参与 system prompt 与经验写入。
|
|
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
|
+
|
|
94
|
+
### 目录与模块对应
|
|
95
|
+
|
|
96
|
+
| 目录 | 说明 |
|
|
97
|
+
|------|------|
|
|
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 规范)。 |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 各端技术栈
|
|
111
|
+
|
|
112
|
+
### CLI
|
|
113
|
+
|
|
114
|
+
| 类别 | 技术 |
|
|
115
|
+
|------|------|
|
|
116
|
+
| 运行时 | Node.js 20+ |
|
|
117
|
+
| 语言 | TypeScript 5.7 |
|
|
118
|
+
| 入口 | `openbot`(bin → `dist/cli/cli.js`) |
|
|
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 |
|
|
122
|
+
|
|
123
|
+
### WebSocket Gateway
|
|
124
|
+
|
|
125
|
+
| 类别 | 技术 |
|
|
126
|
+
|------|------|
|
|
127
|
+
| 协议 | JSON-RPC over WebSocket(`ws`) |
|
|
128
|
+
| 端口 | 默认 38080,可 `-p` 指定 |
|
|
129
|
+
| 架构 | 单进程内嵌 Nest;按 path 分流:`/server-api`、`/ws`、`/ws/voice`、`/sse`、`/channel`、`/health`、静态资源 |
|
|
130
|
+
| 职责 | 连接管理、消息路由、鉴权钩子、静态资源(Desktop 前端) |
|
|
131
|
+
| 方法 | `connect`、`agent.chat`、`agent.cancel`、`subscribe_session`、`unsubscribe_session` 等 |
|
|
132
|
+
|
|
133
|
+
### Agent 核心
|
|
134
|
+
|
|
135
|
+
| 类别 | 技术 |
|
|
136
|
+
|------|------|
|
|
137
|
+
| 智能体 | @mariozechner/pi-coding-agent |
|
|
138
|
+
| 模型/Provider | @mariozechner/pi-ai(DeepSeek、DashScope、OpenAI 等) |
|
|
139
|
+
| 工具 | read/write/edit、bash、find/grep/ls、browser、install-skill、save-experience |
|
|
140
|
+
| 技能 | SKILL.md 规范,多路径加载,formatSkillsForPrompt 注入 system prompt |
|
|
141
|
+
|
|
142
|
+
### Desktop 后端(NestJS)
|
|
143
|
+
|
|
144
|
+
| 类别 | 技术 |
|
|
145
|
+
|------|------|
|
|
146
|
+
| 框架 | NestJS 10、Express、Socket.io |
|
|
147
|
+
| 前缀 | `server-api` |
|
|
148
|
+
| 模块 | Database · Agents · AgentConfig · Skills · Config · Auth · Users · Workspace · Tasks · Usage |
|
|
149
|
+
| 数据 | sql.js(SQLite WASM,无需预编译) |
|
|
150
|
+
|
|
151
|
+
### Desktop 前端(Electron + Vue)
|
|
152
|
+
|
|
153
|
+
| 类别 | 技术 |
|
|
154
|
+
|------|------|
|
|
155
|
+
| 壳子 | Electron 28 |
|
|
156
|
+
| 前端 | Vue 3、Vue Router、Pinia |
|
|
157
|
+
| 构建 | Vite 5 |
|
|
158
|
+
| 通信 | axios、socket.io-client |
|
|
159
|
+
| 视图 | Dashboard、Agents、AgentChat/AgentDetail、Sessions、Skills、Settings、Tasks、WorkResults、Workspace、Login |
|
|
160
|
+
| 国际化 | 自研 useI18n + locales (zh/en) |
|
|
161
|
+
|
|
162
|
+
### 记忆与向量
|
|
163
|
+
|
|
164
|
+
| 类别 | 技术 |
|
|
165
|
+
|------|------|
|
|
166
|
+
| 向量索引 | Vectra(LocalIndex) |
|
|
167
|
+
| 嵌入 | 远端 API(config.json 中 RAG 知识库配置的 embedding 模型;未配置时长记忆空转) |
|
|
168
|
+
| 扩展 | compaction-extension(会话压缩、摘要入 prompt) |
|
|
169
|
+
| 持久化 | 与 agent 目录一致的 memory 目录、sql.js(若用于元数据) |
|
|
170
|
+
|
|
171
|
+
### 内置技能
|
|
172
|
+
|
|
173
|
+
| 技能 | 说明 |
|
|
174
|
+
|------|------|
|
|
175
|
+
| find-skills | 发现与安装 Cursor/Agent 技能 |
|
|
176
|
+
| agent-browser | 浏览器自动化(Playwright/agent-browser CLI) |
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
# 一、安装与部署
|
|
181
|
+
|
|
182
|
+
安装与部署按**安装方式**划分:npm、Docker、Desktop 安装包。任选其一即可使用对应端的 CLI、Web 或 Desktop。
|
|
183
|
+
|
|
184
|
+
## 环境要求
|
|
185
|
+
|
|
186
|
+
- **Node.js** ≥ 20(npm 安装与本地开发必需)
|
|
187
|
+
- 可选:按所用 Provider 配置 API Key(如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`)
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 1.1 npm 安装
|
|
192
|
+
|
|
193
|
+
适用于:使用 **CLI**,或在自有环境中运行 **Gateway(Web)**。
|
|
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
|
+
|
|
209
|
+
```bash
|
|
210
|
+
node -v # 应为 v20.x 或 v22.x
|
|
211
|
+
npm -v # 能正常输出版本号
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### 安装命令
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
# 全局安装(测试过 node 版本:20/22;24 太新,部分库需本地编译环境)
|
|
218
|
+
npm install -g @next-open-ai/openbot
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
安装后可直接使用 `openbot` 命令(见下方「使用方式」)。若需从源码构建再安装:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
git clone <repo>
|
|
225
|
+
cd openbot
|
|
226
|
+
npm install
|
|
227
|
+
npm run build
|
|
228
|
+
npm link # 或 npm install -g . 本地全局安装
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## 1.2 Docker 部署
|
|
234
|
+
|
|
235
|
+
适用于:在服务器或容器环境中运行 **Gateway**,供 Web/其他客户端连接。
|
|
236
|
+
|
|
237
|
+
> **说明**:Docker 镜像与编排正在规划中,当前推荐使用 npm 全局安装后执行 `openbot gateway` 部署网关。
|
|
238
|
+
|
|
239
|
+
规划中的使用方式示例:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# 示例(以实际仓库/镜像名为准)
|
|
243
|
+
# docker pull next-open-ai/openbot
|
|
244
|
+
# docker run -p 38080:38080 -e OPENAI_API_KEY=xxx next-open-ai/openbot gateway
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 1.3 Desktop 安装包
|
|
250
|
+
|
|
251
|
+
适用于:仅使用 **桌面端**,无需 Node 环境。
|
|
252
|
+
|
|
253
|
+
- 从 [Releases](https://github.com/next-open-ai/openbot/releases) 下载对应平台的安装包(macOS / Windows)。
|
|
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 打包」)。
|
|
268
|
+
|
|
269
|
+
首次使用建议在设置中配置默认 Provider/模型,或通过 CLI 执行 `openbot login <provider> <apiKey> [model]` / `openbot config set-model <provider> <modelId>`(与桌面端共用 `~/.openbot/desktop/` 配置)。
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
# 二、使用方式
|
|
274
|
+
|
|
275
|
+
按**使用端**划分:CLI、Web、Desktop;后续将支持 iOS、Android、飞书等。
|
|
276
|
+
|
|
277
|
+
## 2.1 CLI
|
|
278
|
+
|
|
279
|
+
在已通过 **npm 安装** 或 **源码构建并 link** 的环境中,在终端使用 `openbot`。
|
|
280
|
+
|
|
281
|
+
```bash
|
|
282
|
+
# 直接对话(使用默认 workspace 与技能)
|
|
283
|
+
openbot "总结一下当前有哪些技能"
|
|
284
|
+
|
|
285
|
+
# 指定技能路径
|
|
286
|
+
openbot -s ./skills "用 find-skills 搜一下 PDF 相关技能"
|
|
287
|
+
|
|
288
|
+
# 仅打印 system/user prompt,不调 LLM
|
|
289
|
+
openbot --dry-run --prompt "查北京天气"
|
|
290
|
+
|
|
291
|
+
# 指定模型与 provider(覆盖桌面缺省)
|
|
292
|
+
openbot --model deepseek-chat --provider deepseek "写一段 TypeScript 示例"
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### CLI 配置(与桌面端共用)
|
|
296
|
+
|
|
297
|
+
CLI 与桌面端共用**桌面配置**(`~/.openbot/desktop/`)。主要文件:
|
|
298
|
+
|
|
299
|
+
- **config.json**:全局缺省 provider/model、**defaultModelItemCode**(缺省模型在 configuredModels 中的唯一标识)、缺省智能体 id(`defaultAgentId`)、各 provider 的 API Key/baseUrl、已配置模型列表(configuredModels)等。
|
|
300
|
+
- **agents.json**:智能体列表;每个智能体可配置 provider、model、**modelItemCode**(匹配 configuredModels)、工作区。
|
|
301
|
+
- **provider-support.json**:Provider 与模型目录,供设置页下拉选择。
|
|
302
|
+
|
|
303
|
+
| 操作 | 命令 | 说明 |
|
|
304
|
+
|------|------|------|
|
|
305
|
+
| 保存 API Key(可选指定模型) | `openbot login <provider> <apiKey> [model]` | 写入 config.json;不传 model 时取该 provider 第一个模型并补齐缺省配置,可直接运行 |
|
|
306
|
+
| 设置缺省模型 | `openbot config set-model <provider> <modelId>` | 设置全局缺省 provider、model 及 defaultModelItemCode |
|
|
307
|
+
| 查看配置 | `openbot config list` | 列出 providers 与缺省模型 |
|
|
308
|
+
| 同步到 Agent 目录 | `openbot config sync` | 生成并写入 `~/.openbot/agent/models.json` |
|
|
309
|
+
|
|
310
|
+
**首次使用建议**:
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
# 方式一:login 后直接对话(不传 model 时自动用该 provider 第一个模型)
|
|
314
|
+
openbot login deepseek YOUR_DEEPSEEK_API_KEY
|
|
315
|
+
openbot "总结一下当前有哪些技能"
|
|
316
|
+
|
|
317
|
+
# 方式二:指定模型再 login
|
|
318
|
+
openbot login deepseek YOUR_DEEPSEEK_API_KEY deepseek-reasoner
|
|
319
|
+
openbot "总结一下当前有哪些技能"
|
|
320
|
+
|
|
321
|
+
# 方式三:先 login 再单独设置缺省模型
|
|
322
|
+
openbot login deepseek YOUR_DEEPSEEK_API_KEY
|
|
323
|
+
openbot config set-model deepseek deepseek-chat
|
|
324
|
+
openbot config sync
|
|
325
|
+
openbot "总结一下当前有哪些技能"
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
未在命令行指定 `--provider` / `--model` 时,CLI 使用缺省智能体对应的配置;单次可用 `--provider`、`--model`、`--api-key` 覆盖。未在配置中保存 API Key 时,会回退到环境变量(如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`)。
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## 2.2 Web
|
|
333
|
+
|
|
334
|
+
通过 **WebSocket 网关** 使用 OpenBot:先启动网关,再通过 Web 客户端连接。
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
# 启动网关(默认端口 38080)
|
|
338
|
+
openbot gateway --port 38080
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
若需网关开机/登录自启,可执行 `openbot service install`(支持 Linux / macOS / Windows);移除自启用 `openbot service uninstall`,停止当前网关用 `openbot service stop`。
|
|
342
|
+
|
|
343
|
+
客户端连接 `ws://localhost:38080`,使用 JSON-RPC 调用 `connect`、`agent.chat`、`agent.cancel` 等(详见下方「Gateway API 简述」)。
|
|
344
|
+
前端可自行实现或使用仓库内 Web 示例(若有)。
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 2.3 Desktop
|
|
349
|
+
|
|
350
|
+
- **通过安装包**:安装后直接打开 OpenBot Desktop,登录/配置后即可使用桌面界面(会话、智能体、技能、任务、工作区等)。
|
|
351
|
+
- **通过源码**:在「开发」章节中运行 `npm run desktop:dev` 启动开发版桌面。
|
|
352
|
+
|
|
353
|
+
桌面端与 CLI 共用同一套配置与 Agent 核心,同一台机器上配置一次即可双端使用。
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## 2.4 即将支持
|
|
358
|
+
|
|
359
|
+
**通道与终端**
|
|
360
|
+
|
|
361
|
+
| 端 | 说明 |
|
|
362
|
+
|----|------|
|
|
363
|
+
| **iOS** | 规划中 |
|
|
364
|
+
| **Android** | 规划中 |
|
|
365
|
+
| **飞书** | 规划中 |
|
|
366
|
+
|
|
367
|
+
上述端将通过 WebSocket Gateway 或专用适配与现有 Agent 核心对接。
|
|
368
|
+
|
|
369
|
+
**生态与协议**
|
|
370
|
+
|
|
371
|
+
| 方向 | 说明 |
|
|
372
|
+
|------|------|
|
|
373
|
+
| **MCP** | 支持 MCP 协议,降低 Token 消耗与大模型幻觉,与 Skill 自我发现/迭代形成互补 |
|
|
374
|
+
| **Coze 生态** | 接入现有 AI Agent 生态,下一步计划接入 Coze |
|
|
375
|
+
|
|
376
|
+
文档与发布节奏后续更新。
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
|
|
380
|
+
# 三、开发
|
|
381
|
+
|
|
382
|
+
面向**参与 OpenBot 源码开发**的读者,按形态分为 CLI、Web(Gateway + 前端)、Desktop 三部分。
|
|
383
|
+
|
|
384
|
+
## 环境与依赖
|
|
385
|
+
|
|
386
|
+
- Node.js ≥ 20
|
|
387
|
+
- 仓库克隆后安装依赖并构建:
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
git clone <repo>
|
|
391
|
+
cd openbot
|
|
392
|
+
npm install
|
|
393
|
+
npm run build
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## 3.1 CLI 开发
|
|
399
|
+
|
|
400
|
+
- 入口:`openbot` → bin → `dist/cli/cli.js`
|
|
401
|
+
- 技术:Commander(子命令 `gateway`、`login`、`config`、`service`)、TypeScript 5.7
|
|
402
|
+
- 配置与数据:`~/.openbot/agent`、`~/.openbot/desktop`(与桌面共用)
|
|
403
|
+
- Gateway 开机自启:`openbot service install` / `uninstall` / `stop`(见 `src/cli/service.ts`)
|
|
404
|
+
|
|
405
|
+
修改 CLI 后重新构建并本地安装:
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
npm run build
|
|
409
|
+
npm link
|
|
410
|
+
openbot --help
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## 3.2 Web 开发(Gateway + 前端)
|
|
416
|
+
|
|
417
|
+
- **Gateway**:`src/gateway/`,默认端口 38080,可 `-p` 指定;单进程内嵌 Nest,按 path 分流(`/server-api`、`/ws`、静态资源等);协议 JSON-RPC over WebSocket;职责包括连接管理、消息路由、鉴权、静态资源。
|
|
418
|
+
- **方法**:`connect`、`agent.chat`、`agent.cancel`、`subscribe_session`、`unsubscribe_session` 等。
|
|
419
|
+
|
|
420
|
+
本地启动网关:
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
npm run build
|
|
424
|
+
openbot gateway --port 38080
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
若仓库内有独立 Web 前端工程,则分别启动 Gateway 与前端 dev server,前端通过 `ws://localhost:38080` 连接。
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
## 3.3 Desktop 开发
|
|
432
|
+
|
|
433
|
+
- **后端**:NestJS(`src/server/`),前缀 `server-api`,默认端口 38081;Gateway 内嵌时直接挂载该 Express,无独立子进程。
|
|
434
|
+
- **前端**:Electron 28 + Vue 3 + Pinia + Vite 5,位于 `apps/desktop/`。
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
# 先构建核心(若未构建)
|
|
438
|
+
npm run build
|
|
439
|
+
|
|
440
|
+
# 开发模式(Vite 热更 + Electron)
|
|
441
|
+
npm run desktop:dev
|
|
442
|
+
|
|
443
|
+
# 仅安装桌面依赖
|
|
444
|
+
npm run desktop:install
|
|
445
|
+
```
|
|
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
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 测试
|
|
477
|
+
|
|
478
|
+
```bash
|
|
479
|
+
# 单元/集成测试(含 config、gateway、server e2e)
|
|
480
|
+
npm test
|
|
481
|
+
|
|
482
|
+
# 仅 e2e
|
|
483
|
+
npm run test:e2e
|
|
484
|
+
|
|
485
|
+
# 记忆相关测试
|
|
486
|
+
npm run test:memory
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
测试分布:`test/config/` 桌面配置、`test/gateway/` 网关、`test/server/` Nest 后端 e2e。
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
# 附录
|
|
494
|
+
|
|
495
|
+
## Gateway API 简述
|
|
496
|
+
|
|
497
|
+
- **请求**:`{ "type": "request", "id": "<id>", "method": "<method>", "params": { ... } }`
|
|
498
|
+
- **成功响应**:`{ "type": "response", "id": "<id>", "result": { ... } }`
|
|
499
|
+
- **错误响应**:`{ "type": "response", "id": "<id>", "error": { "message": "..." } }`
|
|
500
|
+
- **服务端事件**:如 `agent.chunk`(流式输出)、`agent.tool`(工具调用)等,格式为 `{ "type": "event", "event": "...", "payload": { ... } }`
|
|
501
|
+
|
|
502
|
+
常用流程:先 `connect` 建立会话,再通过 `agent.chat` 发送消息并接收流式/事件;`agent.cancel` 取消当前任务。
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
## 各端技术栈
|
|
507
|
+
|
|
508
|
+
详见上文「各端技术栈」章节(CLI、WebSocket Gateway、Agent 核心、Desktop 后端/前端、记忆与向量、内置技能)。
|
|
509
|
+
|
|
510
|
+
---
|
|
511
|
+
|
|
512
|
+
## 内置技能
|
|
513
|
+
|
|
514
|
+
| 技能 | 说明 |
|
|
515
|
+
|------|------|
|
|
516
|
+
| find-skills | 发现与安装 Cursor/Agent 技能 |
|
|
517
|
+
| agent-browser | 浏览器自动化(Playwright/agent-browser CLI) |
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
## 许可证
|
|
522
|
+
|
|
523
|
+
MIT
|