@next-open-ai/openbot 0.6.8 → 0.6.66
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/LICENSE +21 -0
- package/README.md +155 -136
- package/apps/desktop/renderer/dist/assets/index-CxDZnMBH.css +10 -0
- package/apps/desktop/renderer/dist/assets/index-k47Qiokg.js +93 -0
- package/apps/desktop/renderer/dist/index.html +2 -2
- package/dist/cli/cli.js +136 -0
- package/dist/cli/extension-cmd.d.ts +15 -0
- package/dist/cli/extension-cmd.js +107 -0
- package/dist/core/agent/agent-dir.d.ts +6 -0
- package/dist/core/agent/agent-dir.js +8 -0
- package/dist/core/agent/agent-manager.d.ts +27 -6
- package/dist/core/agent/agent-manager.js +147 -26
- package/dist/core/agent/proxy/adapters/claude-code-adapter.d.ts +2 -0
- package/dist/core/agent/proxy/adapters/claude-code-adapter.js +186 -0
- package/dist/core/agent/proxy/adapters/coze-adapter.d.ts +2 -0
- package/dist/core/agent/proxy/adapters/coze-adapter.js +406 -0
- package/dist/core/agent/proxy/adapters/local-adapter.d.ts +2 -0
- package/dist/core/agent/proxy/adapters/local-adapter.js +95 -0
- package/dist/core/agent/proxy/adapters/openclawx-adapter.d.ts +2 -0
- package/dist/core/agent/proxy/adapters/openclawx-adapter.js +115 -0
- package/dist/core/agent/proxy/adapters/opencode-adapter.d.ts +11 -0
- package/dist/core/agent/proxy/adapters/opencode-adapter.js +786 -0
- package/dist/core/agent/proxy/adapters/opencode-free-models.d.ts +20 -0
- package/dist/core/agent/proxy/adapters/opencode-free-models.js +14 -0
- package/dist/core/agent/proxy/adapters/opencode-local-runner.d.ts +5 -0
- package/dist/core/agent/proxy/adapters/opencode-local-runner.js +95 -0
- package/dist/core/agent/proxy/index.d.ts +3 -0
- package/dist/core/agent/proxy/index.js +18 -0
- package/dist/core/agent/proxy/registry.d.ts +7 -0
- package/dist/core/agent/proxy/registry.js +13 -0
- package/dist/core/agent/proxy/run-for-channel.d.ts +3 -0
- package/dist/core/agent/proxy/run-for-channel.js +31 -0
- package/dist/core/agent/proxy/types.d.ts +30 -0
- package/dist/core/agent/proxy/types.js +1 -0
- package/dist/core/agent/run.js +1 -1
- package/dist/core/agent/token-usage-log-extension.d.ts +14 -0
- package/dist/core/agent/token-usage-log-extension.js +61 -0
- package/dist/core/config/agent-reload-pending.d.ts +9 -0
- package/dist/core/config/agent-reload-pending.js +67 -0
- package/dist/core/config/desktop-config.d.ts +136 -5
- package/dist/core/config/desktop-config.js +470 -46
- package/dist/core/config/provider-support-default.js +27 -0
- package/dist/core/extensions/index.d.ts +1 -0
- package/dist/core/extensions/index.js +1 -0
- package/dist/core/extensions/load.d.ts +11 -0
- package/dist/core/extensions/load.js +101 -0
- package/dist/core/inbound-message-preprocess.d.ts +27 -0
- package/dist/core/inbound-message-preprocess.js +96 -0
- package/dist/core/local-llm-server/download-model.d.ts +16 -0
- package/dist/core/local-llm-server/download-model.js +37 -0
- package/dist/core/local-llm-server/index.d.ts +32 -0
- package/dist/core/local-llm-server/index.js +152 -0
- package/dist/core/local-llm-server/llm-context.d.ts +66 -0
- package/dist/core/local-llm-server/llm-context.js +270 -0
- package/dist/core/local-llm-server/model-resolve.d.ts +27 -0
- package/dist/core/local-llm-server/model-resolve.js +90 -0
- package/dist/core/local-llm-server/server.d.ts +1 -0
- package/dist/core/local-llm-server/server.js +234 -0
- package/dist/core/local-llm-server/start-from-config.d.ts +5 -0
- package/dist/core/local-llm-server/start-from-config.js +50 -0
- package/dist/core/mcp/adapter.d.ts +4 -2
- package/dist/core/mcp/adapter.js +10 -4
- package/dist/core/mcp/client.d.ts +4 -0
- package/dist/core/mcp/client.js +2 -0
- package/dist/core/mcp/config.d.ts +14 -3
- package/dist/core/mcp/config.js +68 -3
- package/dist/core/mcp/index.d.ts +10 -6
- package/dist/core/mcp/index.js +7 -3
- package/dist/core/mcp/operator.d.ts +28 -2
- package/dist/core/mcp/operator.js +131 -30
- package/dist/core/mcp/transport/index.d.ts +4 -0
- package/dist/core/mcp/transport/index.js +6 -1
- package/dist/core/mcp/transport/stdio.d.ts +12 -0
- package/dist/core/mcp/transport/stdio.js +147 -29
- package/dist/core/mcp/types.d.ts +18 -0
- package/dist/core/memory/compaction-extension.d.ts +4 -3
- package/dist/core/memory/compaction-extension.js +6 -14
- package/dist/core/memory/embedding-types.d.ts +10 -0
- package/dist/core/memory/embedding-types.js +5 -0
- package/dist/core/memory/embedding.d.ts +2 -1
- package/dist/core/memory/embedding.js +38 -6
- package/dist/core/memory/index.js +3 -0
- package/dist/core/memory/local-embedding-llama.d.ts +13 -0
- package/dist/core/memory/local-embedding-llama.js +78 -0
- package/dist/core/memory/local-embedding.d.ts +11 -0
- package/dist/core/memory/local-embedding.js +69 -0
- package/dist/core/memory/persist-compaction-on-close.d.ts +14 -0
- package/dist/core/memory/persist-compaction-on-close.js +32 -0
- package/dist/core/session-outlet/index.d.ts +19 -0
- package/dist/core/session-outlet/index.js +33 -0
- package/dist/core/session-outlet/outlet.d.ts +15 -0
- package/dist/core/session-outlet/outlet.js +49 -0
- package/dist/core/session-outlet/types.d.ts +35 -0
- package/dist/core/session-outlet/types.js +5 -0
- package/dist/core/tools/bookmark-tool.d.ts +4 -0
- package/dist/core/tools/bookmark-tool.js +59 -3
- package/dist/core/tools/index.d.ts +3 -1
- package/dist/core/tools/index.js +3 -1
- package/dist/core/tools/memory-recall-tool.d.ts +6 -0
- package/dist/core/tools/memory-recall-tool.js +77 -0
- package/dist/core/tools/truncate-result.d.ts +14 -0
- package/dist/core/tools/truncate-result.js +27 -0
- package/dist/core/tools/web-search/create-web-search-tool.d.ts +17 -0
- package/dist/core/tools/web-search/create-web-search-tool.js +87 -0
- package/dist/core/tools/web-search/index.d.ts +4 -0
- package/dist/core/tools/web-search/index.js +2 -0
- package/dist/core/tools/web-search/providers/brave.d.ts +2 -0
- package/dist/core/tools/web-search/providers/brave.js +87 -0
- package/dist/core/tools/web-search/providers/duck-duck-scrape.d.ts +2 -0
- package/dist/core/tools/web-search/providers/duck-duck-scrape.js +47 -0
- package/dist/core/tools/web-search/providers/index.d.ts +5 -0
- package/dist/core/tools/web-search/providers/index.js +13 -0
- package/dist/core/tools/web-search/types.d.ts +35 -0
- package/dist/core/tools/web-search/types.js +4 -0
- package/dist/gateway/channel/adapters/telegram.js +13 -2
- package/dist/gateway/channel/adapters/wechat.d.ts +24 -0
- package/dist/gateway/channel/adapters/wechat.js +205 -0
- package/dist/gateway/channel/channel-core.d.ts +1 -0
- package/dist/gateway/channel/channel-core.js +101 -59
- package/dist/gateway/channel/run-agent.d.ts +2 -4
- package/dist/gateway/channel/run-agent.js +13 -125
- package/dist/gateway/methods/agent-cancel.d.ts +3 -1
- package/dist/gateway/methods/agent-cancel.js +16 -2
- package/dist/gateway/methods/agent-chat.d.ts +4 -0
- package/dist/gateway/methods/agent-chat.js +377 -118
- package/dist/gateway/methods/run-scheduled-task.js +9 -7
- package/dist/gateway/proxy-run-abort.d.ts +6 -0
- package/dist/gateway/proxy-run-abort.js +39 -0
- package/dist/gateway/server.js +123 -19
- package/dist/server/agent-config/agent-config.controller.d.ts +10 -2
- package/dist/server/agent-config/agent-config.controller.js +19 -4
- package/dist/server/agent-config/agent-config.module.js +3 -1
- package/dist/server/agent-config/agent-config.service.d.ts +91 -6
- package/dist/server/agent-config/agent-config.service.js +115 -3
- package/dist/server/agents/agents.controller.d.ts +16 -0
- package/dist/server/agents/agents.controller.js +62 -1
- package/dist/server/agents/agents.gateway.js +1 -1
- package/dist/server/agents/agents.service.js +1 -1
- package/dist/server/bootstrap.d.ts +1 -0
- package/dist/server/bootstrap.js +28 -4
- package/dist/server/config/config.controller.d.ts +134 -2
- package/dist/server/config/config.controller.js +199 -3
- package/dist/server/config/config.module.js +5 -4
- package/dist/server/config/config.service.d.ts +32 -2
- package/dist/server/config/config.service.js +69 -9
- package/dist/server/config/local-models.service.d.ts +67 -0
- package/dist/server/config/local-models.service.js +242 -0
- package/dist/server/workspace/workspace.service.d.ts +7 -0
- package/dist/server/workspace/workspace.service.js +16 -0
- package/package.json +10 -2
- package/presets/preset-agents.json +128 -0
- package/presets/preset-config.json +29 -0
- package/presets/preset-providers.json +180 -0
- package/presets/recommended-local-models.json +36 -0
- package/presets/workspaces/code-assistant/skills/code-review/SKILL.md +19 -0
- package/presets/workspaces/code-assistant/skills/code-runner/SKILL.md +21 -0
- package/presets/workspaces/code-assistant/skills/git-helper/SKILL.md +29 -0
- package/presets/workspaces/creator-assistant/skills/.gitkeep +0 -0
- package/presets/workspaces/creator-assistant/skills/creator-tools/SKILL.md +15 -0
- package/presets/workspaces/doc-assistant/skills/doc-processor/SKILL.md +21 -0
- package/presets/workspaces/download-assistant/skills/downloader/SKILL.md +20 -0
- package/presets/workspaces/file-assistant/skills/file-converter/SKILL.md +21 -0
- package/presets/workspaces/file-assistant/skills/file-organizer/SKILL.md +17 -0
- package/presets/workspaces/file-assistant/skills/file-search/SKILL.md +22 -0
- package/presets/workspaces/morning-briefing/skills/news-fetcher/SKILL.md +16 -0
- package/presets/workspaces/morning-briefing/skills/web-summarizer/SKILL.md +20 -0
- package/presets/workspaces/news-assistant/skills/news-fetcher/SKILL.md +16 -0
- package/presets/workspaces/news-assistant/skills/web-summarizer/SKILL.md +20 -0
- package/presets/workspaces/office-automation/skills/rpa-helper/SKILL.md +9 -0
- package/presets/workspaces/self-media-bot/skills/self-media-tools/SKILL.md +9 -0
- package/skills/url-bookmark/SKILL.md +12 -12
- package/apps/desktop/renderer/dist/assets/index-LCp1YPVA.css +0 -10
- package/apps/desktop/renderer/dist/assets/index-l5fpDsHs.js +0 -89
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 windwithlife
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,9 +1,67 @@
|
|
|
1
1
|
# OpenBot
|
|
2
|
+
|
|
3
|
+
基于自已的OpenBot重构而来,你们的关注或***star***是我坚持的动力 :)
|
|
4
|
+
|
|
2
5
|
[](https://nodejs.org/)
|
|
3
6
|
[](https://www.typescriptlang.org/)
|
|
4
7
|
[](https://opensource.org/licenses/MIT)
|
|
5
8
|
|
|
6
|
-
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 📚 文档导航 (Documentation)
|
|
12
|
+
|
|
13
|
+
**文档 (Documentation):** [中文 (Chinese)](docs/zh/README.md) · [English](docs/en/README.md)
|
|
14
|
+
|
|
15
|
+
完整使用说明请进入上述链接。中文文档结构如下:
|
|
16
|
+
|
|
17
|
+
| 分类 | 文档 | 说明 |
|
|
18
|
+
|------|------|------|
|
|
19
|
+
| **入门** | [快速开始](docs/zh/guides/getting-started.md) | 5 分钟跑通:安装、首次对话、桌面/通道入口 |
|
|
20
|
+
| | [安装与部署](docs/zh/guides/installation.md) | npm、Docker、Desktop 安装包及环境要求 |
|
|
21
|
+
| **使用指南** | [CLI 使用](docs/zh/guides/cli-usage.md) | 命令行对话、登录、模型与技能、开机自启 |
|
|
22
|
+
| | [桌面端使用](docs/zh/guides/desktop-usage.md) | Desktop 安装与启动、智能体/会话/技能/设置;对话内 `//` 指令查询与切换智能体 |
|
|
23
|
+
| | [Web 与 Gateway](docs/zh/guides/gateway-web.md) | 启动网关、端口与路径、Web 端连接 |
|
|
24
|
+
| | [使用场景](docs/zh/guides/usage-scenarios.md) | 整理下载目录、创建/切换智能体、B站下载助手、安装技能、MCP、定时任务等 |
|
|
25
|
+
| **配置** | [配置概览](docs/zh/configuration/config-overview.md) | 配置目录、config.json 与 agents.json |
|
|
26
|
+
| | [智能体配置](docs/zh/configuration/agents.md) | 本机/Coze/OpenBot 执行方式与模型 |
|
|
27
|
+
| | [通道配置](docs/zh/configuration/channels.md) | 飞书、钉钉、Telegram 启用与配置项 |
|
|
28
|
+
| **功能说明** | [代理模式与多节点](docs/zh/features/proxy-mode.md) | Coze 接入、OpenBot 多节点协作 |
|
|
29
|
+
| | [技能系统](docs/zh/features/skills.md) | Agent Skills 规范与扩展 |
|
|
30
|
+
| **参考** | [常见问题](docs/zh/reference/faq.md) | 安装失败、端口占用、通道不回复等 FAQ |
|
|
31
|
+
| | [发布说明](docs/zh/release-notes.md) | 各版本功能更新与问题修复记录 |
|
|
32
|
+
|
|
33
|
+
<details>
|
|
34
|
+
<summary><strong>📂 文档树结构 (Doc structure)</strong></summary>
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
docs/
|
|
38
|
+
├── README.md → 语言切换入口 (Language switcher)
|
|
39
|
+
├── zh/ → 中文文档 (Chinese)
|
|
40
|
+
│ ├── README.md 文档入口与导航
|
|
41
|
+
│ ├── release-notes.md 发布说明
|
|
42
|
+
│ ├── guides/ 使用指南
|
|
43
|
+
│ ├── configuration/ 配置说明
|
|
44
|
+
│ ├── features/ 功能说明
|
|
45
|
+
│ ├── reference/ 参考
|
|
46
|
+
│ └── channel-streaming-design.md
|
|
47
|
+
└── en/ → 英文文档 (English)
|
|
48
|
+
├── README.md Index and navigation
|
|
49
|
+
├── release-notes.md Release notes
|
|
50
|
+
├── guides/ Guides
|
|
51
|
+
├── configuration/ Configuration
|
|
52
|
+
├── features/ Features
|
|
53
|
+
├── reference/ Reference
|
|
54
|
+
└── channel-streaming-design.md
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
</details>
|
|
58
|
+
|
|
59
|
+
### 常见问题(简要)
|
|
60
|
+
|
|
61
|
+
- **Windows 安装失败 / 无法运行?**
|
|
62
|
+
- **Desktop 安装包**:若安装或启动报错(如缺少运行库、闪退),请安装 [Visual C++ Redistributable](https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist)(选 x64);若为杀毒/安全软件拦截,可尝试加入排除项或暂时关闭后重试。
|
|
63
|
+
- **npm 全局安装**:Windows 上若因 `node-llama-cpp` 等原生依赖安装失败,可使用 `npm install -g @next-open-ai/openbot --ignore-scripts` 跳过可选原生模块,对 CLI/Gateway/Desktop 常规使用无影响;长记忆需单独配置在线 RAG 或本地环境。
|
|
64
|
+
- 更多问题(macOS 安装包「已损坏」、端口占用、通道不回复等)见 **[常见问题](docs/zh/reference/faq.md)**;版本变更见 **[发布说明](docs/zh/release-notes.md)**。
|
|
7
65
|
|
|
8
66
|
---
|
|
9
67
|
|
|
@@ -17,8 +75,12 @@
|
|
|
17
75
|
| **长期记忆** | 向量存储(Vectra)+ 本地嵌入,支持经验总结与会话压缩(compaction) |
|
|
18
76
|
| **多端接入** | CLI、WebSocket 网关、Electron 桌面端,同一套 Agent 核心;各端技术栈见下方「各端技术栈」 |
|
|
19
77
|
| **多通道接入** | 飞书、钉钉、Telegram 等 IM 通道,Gateway 根据配置注册;入站经统一格式进 Agent,回复经通道回传 |
|
|
20
|
-
|
|
|
21
|
-
|
|
|
78
|
+
| **代理模式** | 智能体执行方式可选 **本机** / **Coze** / **OpenBot** / **OpenCode**;本机使用当前模型与 Skills,**代理模式下本机 0 Token 消耗**,推理与消息处理在对方平台完成 |
|
|
79
|
+
| **Coze 接入** | 支持 Coze 国内站(api.coze.cn)与国际站(api.coze.com);按站点分别配置 Bot ID 与 Access Token(PAT/OAuth/JWT),桌面端与通道均可选用 Coze 智能体;**0 Token 消耗**,适合 Coze 侧大量消息与长对话场景 |
|
|
80
|
+
| **OpenBot 多节点协作** | 可将智能体代理到另一台 OpenBot 实例(baseUrl + 可选 API Key),实现多节点分工、负载与协作;本机 0 Token 消耗 |
|
|
81
|
+
| **OpenCode 代理** | 可将智能体代理至 [OpenCode](https://opencode.ai/) 官方 Server(本地 `opencode serve` 或远程);支持流式回复、斜杠指令 `/init`、`/undo`、`/redo`、`/share`、`/help`,与 TUI 使用方式一致;**0 Token 消耗**,适合 OpenCode 侧大量代码与长上下文能力 |
|
|
82
|
+
| **MCP** | 已支持 [MCP](https://modelcontextprotocol.io/)(Model Context Protocol):智能体可配置 stdio/SSE 两种连接方式,按智能体绑定 MCP 服务器,会话内自动加载对应工具,降低 Token 消耗与大模型幻觉 |
|
|
83
|
+
| **RPA(影刀)** | 通过 MCP 可接入影刀 RPA:在智能体 MCP 配置中添加 [yingdao-mcp-server](https://www.npmjs.com/package/yingdao-mcp-server)(命令 `npx -y yingdao-mcp-server`,可选 env 如 `RPA_MODEL`、`SHADOWBOT_PATH`、`USER_FOLDER`),即可在对话中调用影刀自动化能力 |
|
|
22
84
|
|
|
23
85
|
---
|
|
24
86
|
|
|
@@ -44,14 +106,18 @@
|
|
|
44
106
|
┌─────────────────┐ ┌─────────────────────────────┐ ┌─────────────────────┐
|
|
45
107
|
│ Agent 核心 │ │ Desktop Backend (NestJS) │ │ Memory / 向量存储 │
|
|
46
108
|
│ AgentManager │ │ server-api/* │ │ Vectra + 嵌入 │
|
|
47
|
-
│
|
|
48
|
-
│
|
|
109
|
+
│ 执行方式: │ │ Agents · Skills · Tasks │ │ compaction 扩展 │
|
|
110
|
+
│ local/coze/ │ │ Auth · Users · Workspace │ │ sql.js │
|
|
111
|
+
│ openbot/ │ │ │ │ │
|
|
112
|
+
│ opencode(代理) │ │ │ │ │
|
|
113
|
+
│ pi-coding-agent│ │ │ │ │
|
|
114
|
+
│ pi-ai 多模型 │ │ │ │ │
|
|
49
115
|
└────────┬────────┘ └─────────────────────────────┘ └─────────────────────┘
|
|
50
116
|
│
|
|
51
117
|
▼
|
|
52
118
|
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
53
119
|
│ Tools: read/write/edit · bash · find/grep/ls · browser · install-skill · │
|
|
54
|
-
│ save-experience (写入记忆)
|
|
120
|
+
│ save-experience (写入记忆) · Proxy(local/coze/openclawx) │
|
|
55
121
|
└─────────────────────────────────────────────────────────────────────────────┘
|
|
56
122
|
```
|
|
57
123
|
|
|
@@ -59,121 +125,18 @@
|
|
|
59
125
|
- **WebSocket Gateway**(`src/gateway/`):单进程内嵌 Nest,对外提供 WebSocket(JSON-RPC)与 HTTP;按 path 分流:`/server-api` 走 Nest、`/ws` 为 Agent 对话、`/ws/voice`/`/sse`/`/channel` 为扩展占位,其余为静态资源。根据配置注册**飞书、钉钉、Telegram** 等通道,入站消息经统一格式进入 Agent,回复经该通道发回对应平台。供 Web/移动端连接;支持以开机/登录自启方式常驻(Linux cron、macOS LaunchAgent、Windows 计划任务)。
|
|
60
126
|
- **Desktop 后端**(`src/server/`):NestJS HTTP API,即 **server-api**;可被 Gateway 内嵌或独立监听(默认端口 38081)。会话、智能体配置、技能、任务、工作区、鉴权等由本模块提供。
|
|
61
127
|
- **Desktop**:Electron 包一层 Vue 前端 + 上述后端;通过 Gateway 或直连 Desktop 后端与 Agent 通信。
|
|
62
|
-
- **Agent 核心**:统一由 `AgentManager`
|
|
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`);通道适配(feishu、dingtalk、telegram)在 `channel/adapters/`。 |
|
|
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
|
-
---
|
|
128
|
+
- **Agent 核心**:统一由 `AgentManager` 管理会话、技能注入与工具注册;**执行方式**可为 **local**(本机 pi-coding-agent + Skills)、**coze**(代理至 Coze 国内/国际站)、**openclawx**(代理至其他 OpenBot 节点,多节点协作)、**opencode**(代理至 OpenCode 官方 Server,支持流式与 `/init`、`/undo`、`/redo`、`/share`、`/help` 等指令)。记忆与 compaction 作为扩展参与 system prompt 与经验写入。
|
|
109
129
|
|
|
110
130
|
## 各端技术栈
|
|
111
131
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
| 类别 | 技术 |
|
|
132
|
+
| 端 | 技术 |
|
|
115
133
|
|------|------|
|
|
116
|
-
|
|
|
117
|
-
|
|
|
118
|
-
|
|
|
119
|
-
|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
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) |
|
|
134
|
+
| **CLI** | Node.js 20+、TypeScript 5.7、Commander(gateway/login/config/service);`openbot` 入口,配置 `~/.openbot/desktop`,支持开机自启 |
|
|
135
|
+
| **WebSocket Gateway** | JSON-RPC over WebSocket,默认 38080;单进程内嵌 Nest,path 分流(/server-api、/ws、/channel 等);连接管理、通道(飞书/钉钉/Telegram) |
|
|
136
|
+
| **Agent 核心** | pi-coding-agent、pi-ai 多模型;执行方式 local/coze/openclawx;工具 read/write/bash/browser 等,SKILL.md 技能注入 |
|
|
137
|
+
| **Desktop 后端** | NestJS 10、Express、Socket.io,前缀 `server-api`;sql.js;Agents·Skills·Config·Auth·Workspace·Tasks |
|
|
138
|
+
| **Desktop 前端** | Electron 28、Vue 3、Pinia、Vite 5;Dashboard、Agents、Sessions、Skills、Settings、Tasks、Workspace |
|
|
139
|
+
| **记忆与向量** | Vectra 向量索引、远端嵌入、compaction 会话压缩、memory 目录持久化 |
|
|
177
140
|
|
|
178
141
|
---
|
|
179
142
|
|
|
@@ -217,6 +180,13 @@ npm -v # 能正常输出版本号
|
|
|
217
180
|
# 全局安装(测试过 node 版本:20/22;24 太新,部分库需本地编译环境)
|
|
218
181
|
npm install -g @next-open-ai/openbot
|
|
219
182
|
```
|
|
183
|
+
#### ***如果是在windows上安装最新版本(v0.8.0以上版本),可能会因为node-llama-cpp无法安装,可以采用如下安装命令跳过它的安装,对当前系统使用无影响***
|
|
184
|
+
```bash
|
|
185
|
+
# 跳过预下载脚本
|
|
186
|
+
npm install -g @next-open-ai/openbot --ignore-scripts
|
|
187
|
+
# 尝试手工安装跳过的预下载(这一步失败了也不影响正常使用)
|
|
188
|
+
npm run postinstall --if-present
|
|
189
|
+
```
|
|
220
190
|
|
|
221
191
|
安装后可直接使用 `openbot` 命令(见下方「使用方式」)。若需从源码构建再安装:
|
|
222
192
|
|
|
@@ -232,18 +202,49 @@ npm link # 或 npm install -g . 本地全局安装
|
|
|
232
202
|
|
|
233
203
|
## 1.2 Docker 部署
|
|
234
204
|
|
|
235
|
-
适用于:在服务器或容器环境中运行 **Gateway**,供 Web
|
|
205
|
+
适用于:在服务器或容器环境中运行 **Gateway**,供 Web/其他客户端连接。编排文件位于仓库 `deploy/` 目录。
|
|
236
206
|
|
|
237
|
-
|
|
207
|
+
### 方式一:使用 CI 构建的镜像(推荐生产)
|
|
238
208
|
|
|
239
|
-
|
|
209
|
+
镜像由 Drone CI(`.drone.yml`)构建并推送到镜像仓库。使用预构建镜像启动服务,暴露端口 **38080**:
|
|
240
210
|
|
|
241
211
|
```bash
|
|
242
|
-
#
|
|
243
|
-
|
|
244
|
-
|
|
212
|
+
# 在 deploy 目录下执行
|
|
213
|
+
cd deploy
|
|
214
|
+
docker compose up -d
|
|
215
|
+
|
|
216
|
+
# 或从仓库根目录指定 compose 文件
|
|
217
|
+
docker compose -f deploy/docker-compose.yaml up -d
|
|
245
218
|
```
|
|
246
219
|
|
|
220
|
+
默认使用镜像 `ccr.ccs.tencentyun.com/windwithlife/openbot:latest`。若需指定版本,可修改 `deploy/docker-compose.yaml` 中 `image` 的 tag(如 `0.6.8` 或 CI 生成的 `build-ci-openbot-<BUILD_NUMBER>`)。
|
|
221
|
+
|
|
222
|
+
### 方式二:本地构建并运行(开发/无 CI 时)
|
|
223
|
+
|
|
224
|
+
不依赖镜像仓库,在本地从源码构建镜像并启动:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
# 在仓库根目录执行(构建上下文为仓库根)
|
|
228
|
+
docker compose -f deploy/docker-compose-dev.yaml up --build -d
|
|
229
|
+
|
|
230
|
+
# 或在 deploy 目录下
|
|
231
|
+
cd deploy
|
|
232
|
+
docker compose -f docker-compose-dev.yaml up --build -d
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
构建完成后服务同样监听 **38080** 端口,镜像名为 `openbot:dev`,容器名为 `openbot-dev`。
|
|
236
|
+
|
|
237
|
+
### 配置与数据持久化
|
|
238
|
+
|
|
239
|
+
- Gateway 默认从容器内 `~/.openbot/desktop/` 读取配置(智能体、模型、通道等)。若需持久化或预置配置,可在 compose 中挂载宿主机目录,例如在 `deploy/docker-compose.yaml` 或 `deploy/docker-compose-dev.yaml` 的 `openbot` 服务下增加:
|
|
240
|
+
|
|
241
|
+
```yaml
|
|
242
|
+
volumes:
|
|
243
|
+
- ./openbot-desktop:/root/.openbot/desktop
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
- API Key 等敏感信息也可通过环境变量传入(若 CLI/桌面端支持从环境变量读取),在 compose 的 `environment` 中配置即可。
|
|
247
|
+
|
|
247
248
|
---
|
|
248
249
|
|
|
249
250
|
## 1.3 Desktop 安装包
|
|
@@ -297,7 +298,7 @@ openbot --model deepseek-chat --provider deepseek "写一段 TypeScript 示例"
|
|
|
297
298
|
CLI 与桌面端共用**桌面配置**(`~/.openbot/desktop/`)。主要文件:
|
|
298
299
|
|
|
299
300
|
- **config.json**:全局缺省 provider/model、**defaultModelItemCode**(缺省模型在 configuredModels 中的唯一标识)、缺省智能体 id(`defaultAgentId`)、各 provider 的 API Key/baseUrl、已配置模型列表(configuredModels)等。
|
|
300
|
-
- **agents.json**:智能体列表;每个智能体可配置 provider、model、**modelItemCode**(匹配 configuredModels
|
|
301
|
+
- **agents.json**:智能体列表;每个智能体可配置 provider、model、**modelItemCode**(匹配 configuredModels)、工作区。**执行方式**可为 **local** / **coze** / **openclawx**。Coze 代理:`execution: "coze"`,并配置 **region**(`cn` 国内 / `com` 国际)、**coze.cn** / **coze.com**(各含 botId、apiKey),不暴露 endpoint。OpenBot 代理:`execution: "openclawx"`,配置 **openclawx.baseUrl**、**openclawx.apiKey**(可选)。
|
|
301
302
|
- **provider-support.json**:Provider 与模型目录,供设置页下拉选择。
|
|
302
303
|
|
|
303
304
|
| 操作 | 命令 | 说明 |
|
|
@@ -371,24 +372,42 @@ openbot gateway --port 38080
|
|
|
371
372
|
**说明**:飞书通道通过飞书开放平台与机器人对接。入站使用飞书官方 **WebSocket 事件订阅**(`im.message.receive_v1`)接收用户消息;出站使用 **开放 API** 发送回复。支持**流式输出**:先发一条「思考中」的互动卡片,再随 Agent 生成内容逐次更新同一条卡片,直至整轮对话结束(`agent_end`)。
|
|
372
373
|
|
|
373
374
|
- **会话与 Agent**:同一飞书会话(单聊或群聊对应一个 `chat_id`)对应一个 Agent Session(`channel:feishu:<chat_id>`),由通道配置中的 `defaultAgentId` 指定使用哪个智能体。
|
|
374
|
-
-
|
|
375
|
+
- **能力**:单聊、群聊均可;支持文本消息与流式卡片展示;`turn_end` / `agent_end` 事件会向各端广播,便于前端或其它通道按需处理。
|
|
376
|
+
|
|
377
|
+
**配置**:enabled、appId、appSecret、defaultAgentId。**用法**:飞书开放平台创建自建应用、开通「机器人」与「接收消息」、事件订阅选 WebSocket;OpenBot **设置 → 通道** 勾选「启用飞书」并填写 App ID、App Secret → 保存后**重启 Gateway**;在飞书内私聊或群聊 @ 机器人即可,回复以流式卡片更新。也可直接编辑 `~/.openbot/desktop/config.json` 中 `channels.feishu`。
|
|
375
378
|
|
|
376
379
|
### 钉钉
|
|
377
380
|
|
|
378
381
|
**说明**:钉钉通道使用 **dingtalk-stream** SDK 的 **Stream 模式**接收机器人消息,通过消息中的 `sessionWebhook` 回传回复;回复发送完成后需 ack 避免钉钉重试。支持单聊、群聊及流式回复。
|
|
379
382
|
|
|
380
383
|
- **会话与 Agent**:同一钉钉会话(conversationId)对应一个 Agent Session(`channel:dingtalk:<conversationId>`),由通道配置中的 `defaultAgentId` 指定智能体。
|
|
381
|
-
|
|
384
|
+
|
|
385
|
+
**配置**:enabled、clientId、clientSecret、defaultAgentId。**用法**:钉钉开发者后台创建企业内部应用、添加机器人能力并选择 **Stream 模式**;OpenBot **设置 → 通道** 启用钉钉并填写 Client ID、Client Secret → 保存后**重启 Gateway**。在钉钉内与机器人对话即可。也可编辑 `config.json` 中 `channels.dingtalk`。
|
|
382
386
|
|
|
383
387
|
### Telegram
|
|
384
388
|
|
|
385
389
|
**说明**:Telegram 通道使用官方推荐的 **长轮询**(getUpdates)接收消息,无需公网 URL。出站使用 `sendMessage` 发送、`editMessageText` 流式更新同一条消息,直至整轮结束。
|
|
386
390
|
|
|
387
391
|
- **会话与 Agent**:同一 Telegram 会话(chat_id)对应一个 Agent Session(`channel:telegram:<chat_id>`),由通道配置中的 `defaultAgentId` 指定智能体。
|
|
388
|
-
|
|
392
|
+
|
|
393
|
+
**配置**:enabled、botToken、defaultAgentId。**用法**:通过 [@BotFather](https://t.me/BotFather) 获取 Bot Token;OpenBot **设置 → 通道** 启用 Telegram 并填写 Bot Token → 保存后**重启 Gateway**。在 Telegram 内与机器人对话即可。也可编辑 `config.json` 中 `channels.telegram`。
|
|
389
394
|
|
|
390
395
|
未配置或未启用某通道时,Gateway 会跳过该通道启动;若已启用但必填项为空,控制台会提示到「设置 → 通道」检查。
|
|
391
396
|
|
|
397
|
+
### 2.4.1 代理模式与多节点协作
|
|
398
|
+
|
|
399
|
+
智能体除在本机运行(**local**)外,可配置为**代理模式**,将对话转发至 Coze、OpenCode 或另一台 OpenBot,实现生态接入与多节点协作。**代理智能体为本机 0 Token 消耗模式**:推理与消息处理均在对方平台完成,本机仅做转发与展示,不占用本机模型 API 的 Token。特别适合 **Coze**、**OpenCode** 等具备大量消息、长上下文或代码协作能力的平台,在桌面端与通道中直接使用其能力而无需消耗本机配额。
|
|
400
|
+
|
|
401
|
+
| 模式 | 说明 | 配置要点 |
|
|
402
|
+
|------|------|----------|
|
|
403
|
+
| **local** | 本机执行,使用当前模型的 pi-coding-agent 与 Skills | 默认;无需额外配置 |
|
|
404
|
+
| **coze** | 代理至 Coze 平台 | 在桌面端「智能体 → 编辑 → 执行方式」选 Coze;**站点**选国内(cn)或国际(com);分别填写该站点的 **Bot ID**、**Access Token**(PAT / OAuth 2.0 / JWT 等)。`agents.json` 中对应智能体为 `"execution": "coze"`,并含 `coze.region`、`coze.cn` / `coze.com`(botId、apiKey) |
|
|
405
|
+
| **openclawx** | 代理至其他 OpenBot 实例(多节点) | 执行方式选 OpenBot;填写目标实例 **baseUrl**(如 `http://另一台机器:38080`)、可选 **API Key**。`agents.json` 中为 `"execution": "openclawx"`,含 `openclawx.baseUrl`、`openclawx.apiKey`(可选) |
|
|
406
|
+
| **opencode** | 代理至 OpenCode 官方 Server | 执行方式选 OpenCode;本地模式需先在本机运行 `opencode serve`(默认 4096 端口),填写端口;远程模式填写地址与端口。可选密码、工作目录、默认模型。支持 `/init`、`/undo`、`/redo`、`/share`、`/help` 等斜杠指令,分享链接会回显到对话中 |
|
|
407
|
+
|
|
408
|
+
- **入口**:桌面端「设置」→「智能体」中新建/编辑智能体时可选择执行方式;通道使用的默认智能体也可设为 Coze 或 OpenBot 代理。
|
|
409
|
+
- **多节点**:多台机器各跑一个 OpenBot Gateway,将部分智能体指向对方 baseUrl,即可实现分工、专机专用或负载均衡。
|
|
410
|
+
|
|
392
411
|
---
|
|
393
412
|
|
|
394
413
|
## 2.5 即将支持
|
|
@@ -409,8 +428,11 @@ openbot gateway --port 38080
|
|
|
409
428
|
|
|
410
429
|
| 方向 | 说明 |
|
|
411
430
|
|------|------|
|
|
412
|
-
| **MCP** |
|
|
413
|
-
| **
|
|
431
|
+
| **MCP** | **已支持**:智能体可配置 MCP 服务器(stdio 本地进程 / SSE 远程),会话内自动加载 MCP 工具;支持标准 JSON 配置格式(含服务器名称、command/args/env 或 url/headers),与 Skill 形成互补 |
|
|
432
|
+
| **RPA(影刀)** | **已支持**:通过 MCP 接入影刀 RPA(如 yingdao-mcp-server),在智能体配置中添加对应 MCP 即可在对话中调用影刀自动化 |
|
|
433
|
+
| **Coze 生态** | **已支持**:智能体执行方式可选 coze,按站点(国内 cn / 国际 com)配置 Bot ID 与 Access Token,桌面端与通道均可使用 |
|
|
434
|
+
| **OpenBot 多节点** | **已支持**:执行方式可选 openclawx,通过 baseUrl(及可选 apiKey)将对话代理到另一 OpenBot 实例,实现多节点协作与负载分工 |
|
|
435
|
+
| **OpenCode 代理** | **已支持**:执行方式可选 opencode,对接 OpenCode 官方 Server(本地 `opencode serve` 或远程);流式回复、`/init`/`/undo`/`/redo`/`/share`/`/help` 等指令,分享链接回显;失败时展示「执行失败」提示 |
|
|
414
436
|
|
|
415
437
|
文档与发布节奏后续更新。
|
|
416
438
|
|
|
@@ -542,18 +564,15 @@ npm run test:memory
|
|
|
542
564
|
|
|
543
565
|
---
|
|
544
566
|
|
|
545
|
-
## 各端技术栈
|
|
546
567
|
|
|
547
|
-
详见上文「各端技术栈」章节(CLI、WebSocket Gateway、Agent 核心、Desktop 后端/前端、记忆与向量、内置技能)。
|
|
548
568
|
|
|
549
569
|
---
|
|
550
570
|
|
|
551
|
-
|
|
571
|
+
### 社区与交流
|
|
552
572
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
| agent-browser | 浏览器自动化(Playwright/agent-browser CLI) |
|
|
573
|
+
扫码加入交流群:
|
|
574
|
+
|
|
575
|
+

|
|
557
576
|
|
|
558
577
|
---
|
|
559
578
|
|