{"id":45293166,"url":"https://github.com/next-open-ai/openbot","last_synced_at":"2026-03-04T11:00:30.370Z","repository":{"id":337270319,"uuid":"1152748056","full_name":"next-open-ai/openbot","owner":"next-open-ai","description":"openclaw like, desktop app","archived":false,"fork":false,"pushed_at":"2026-02-21T03:04:20.000Z","size":3641,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-21T07:35:08.173Z","etag":null,"topics":["agent","ai","clawdbot","desktop","desktop-app","moltbot","openbot","openclaw","openclaw-desktop","openclaw-ui"],"latest_commit_sha":null,"homepage":"","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/next-open-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-08T11:21:25.000Z","updated_at":"2026-02-21T03:04:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/next-open-ai/openbot","commit_stats":null,"previous_names":["next-open-ai/openbot"],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/next-open-ai/openbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-open-ai%2Fopenbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-open-ai%2Fopenbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-open-ai%2Fopenbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-open-ai%2Fopenbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/next-open-ai","download_url":"https://codeload.github.com/next-open-ai/openbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/next-open-ai%2Fopenbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30078397,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-04T08:01:56.766Z","status":"ssl_error","status_checked_at":"2026-03-04T08:00:42.919Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","ai","clawdbot","desktop","desktop-app","moltbot","openbot","openclaw","openclaw-desktop","openclaw-ui"],"created_at":"2026-02-21T03:28:31.162Z","updated_at":"2026-03-04T11:00:30.346Z","avatar_url":"https://github.com/next-open-ai.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OpenBot\n\n基于自已的OpenBot重构而来，你们的关注或***star***是我坚持的动力 ：）\n\n[![Node.js](https://img.shields.io/badge/Node.js-20+-green.svg)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n---\n\n## 📚 文档导航 (Documentation)\n\n**文档 (Documentation):** [中文 (Chinese)](docs/zh/README.md) · [English](docs/en/README.md)\n\n完整使用说明请进入上述链接。中文文档结构如下：\n\n| 分类 | 文档 | 说明 |\n|------|------|------|\n| **入门** | [快速开始](docs/zh/guides/getting-started.md) | 5 分钟跑通：安装、首次对话、桌面/通道入口 |\n| | [安装与部署](docs/zh/guides/installation.md) | npm、Docker、Desktop 安装包及环境要求 |\n| **使用指南** | [CLI 使用](docs/zh/guides/cli-usage.md) | 命令行对话、登录、模型与技能、开机自启 |\n| | [桌面端使用](docs/zh/guides/desktop-usage.md) | Desktop 安装与启动、智能体/会话/技能/设置；对话内 `//` 指令查询与切换智能体 |\n| | [Web 与 Gateway](docs/zh/guides/gateway-web.md) | 启动网关、端口与路径、Web 端连接 |\n| | [使用场景](docs/zh/guides/usage-scenarios.md) | 整理下载目录、创建/切换智能体、B站下载助手、安装技能、MCP、定时任务等 |\n| **配置** | [配置概览](docs/zh/configuration/config-overview.md) | 配置目录、config.json 与 agents.json |\n| | [智能体配置](docs/zh/configuration/agents.md) | 本机/Coze/OpenBot 执行方式与模型 |\n| | [通道配置](docs/zh/configuration/channels.md) | 飞书、钉钉、Telegram 启用与配置项 |\n| **功能说明** | [代理模式与多节点](docs/zh/features/proxy-mode.md) | Coze 接入、OpenBot 多节点协作 |\n| | [技能系统](docs/zh/features/skills.md) | Agent Skills 规范与扩展 |\n| **参考** | [常见问题](docs/zh/reference/faq.md) | 安装失败、端口占用、通道不回复等 FAQ |\n| | [发布说明](docs/zh/release-notes.md) | 各版本功能更新与问题修复记录 |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e📂 文档树结构 (Doc structure)\u003c/strong\u003e\u003c/summary\u003e\n\n```\ndocs/\n├── README.md                   → 语言切换入口 (Language switcher)\n├── zh/                         → 中文文档 (Chinese)\n│   ├── README.md               文档入口与导航\n│   ├── release-notes.md        发布说明\n│   ├── guides/                 使用指南\n│   ├── configuration/          配置说明\n│   ├── features/               功能说明\n│   ├── reference/              参考\n│   └── channel-streaming-design.md\n└── en/                         → 英文文档 (English)\n    ├── README.md               Index and navigation\n    ├── release-notes.md        Release notes\n    ├── guides/                 Guides\n    ├── configuration/          Configuration\n    ├── features/                Features\n    ├── reference/              Reference\n    └── channel-streaming-design.md\n```\n\n\u003c/details\u003e\n\n### 常见问题（简要）\n\n- **Windows 安装失败 / 无法运行？**  \n  - **Desktop 安装包**：若安装或启动报错（如缺少运行库、闪退），请安装 [Visual C++ Redistributable](https://learn.microsoft.com/zh-cn/cpp/windows/latest-supported-vc-redist)（选 x64）；若为杀毒/安全软件拦截，可尝试加入排除项或暂时关闭后重试。  \n  - **npm 全局安装**：Windows 上若因 `node-llama-cpp` 等原生依赖安装失败，可使用 `npm install -g @next-open-ai/openbot --ignore-scripts` 跳过可选原生模块，对 CLI/Gateway/Desktop 常规使用无影响；长记忆需单独配置在线 RAG 或本地环境。  \n- 更多问题（macOS 安装包「已损坏」、端口占用、通道不回复等）见 **[常见问题](docs/zh/reference/faq.md)**；版本变更见 **[发布说明](docs/zh/release-notes.md)**。\n\n---\n\n## 特性概览\n\n| 能力 | 说明 |\n|------|------|\n| **技能架构** | 基于 Agent Skills 规范，支持多路径加载、本地安装与动态扩展；支持技能自我发现与自我迭代 |\n| **编码智能体** | 集成 [pi-coding-agent](https://www.npmjs.com/package/@mariozechner/pi-coding-agent)，支持多轮工具调用与代码执行 |\n| **浏览器自动化** | 内置 [agent-browser](https://www.npmjs.com/package/agent-browser)，可导航、填表、截图与数据抓取 |\n| **长期记忆** | 向量存储（Vectra）+ 本地嵌入，支持经验总结与会话压缩（compaction） |\n| **多端接入** | CLI、WebSocket 网关、Electron 桌面端，同一套 Agent 核心；各端技术栈见下方「各端技术栈」 |\n| **多通道接入** | 飞书、钉钉、Telegram 等 IM 通道，Gateway 根据配置注册；入站经统一格式进 Agent，回复经通道回传 |\n| **代理模式** | 智能体执行方式可选 **本机** / **Coze** / **OpenBot** / **OpenCode**；本机使用当前模型与 Skills，**代理模式下本机 0 Token 消耗**，推理与消息处理在对方平台完成 |\n| **Coze 接入** | 支持 Coze 国内站（api.coze.cn）与国际站（api.coze.com）；按站点分别配置 Bot ID 与 Access Token（PAT/OAuth/JWT），桌面端与通道均可选用 Coze 智能体；**0 Token 消耗**，适合 Coze 侧大量消息与长对话场景 |\n| **OpenBot 多节点协作** | 可将智能体代理到另一台 OpenBot 实例（baseUrl + 可选 API Key），实现多节点分工、负载与协作；本机 0 Token 消耗 |\n| **OpenCode 代理** | 可将智能体代理至 [OpenCode](https://opencode.ai/) 官方 Server（本地 `opencode serve` 或远程）；支持流式回复、斜杠指令 `/init`、`/undo`、`/redo`、`/share`、`/help`，与 TUI 使用方式一致；**0 Token 消耗**，适合 OpenCode 侧大量代码与长上下文能力 |\n| **MCP** | 已支持 [MCP](https://modelcontextprotocol.io/)（Model Context Protocol）：智能体可配置 stdio/SSE 两种连接方式，按智能体绑定 MCP 服务器，会话内自动加载对应工具，降低 Token 消耗与大模型幻觉 |\n| **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`），即可在对话中调用影刀自动化能力 |\n\n---\n\n## 技术架构\n\n```\n┌─────────────────────────────────────────────────────────────────────────────┐\n│                              客户端 / 接入层                                  │\n├─────────────────┬─────────────────────────────┬─────────────────────────────┤\n│   CLI (openbot) │   WebSocket Gateway (JSON-RPC)  │   OpenBot Desktop (Electron)  │\n│   Commander     │   ws, 端口 38080              │   Vue 3 + Pinia + Vite       │\n└────────┬────────┴──────────────┬──────────────┴──────────────┬──────────────┘\n         │                        │                             │\n         │                        │  HTTP + Socket.io            │\n         ▼                        ▼                             ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│                            Gateway Server (Node)                             │\n│  • 内嵌 Nest（/server-api）• 按 path 分流 • 静态资源 • 自动发现端口             │\n└────────────────────────────────────┬────────────────────────────────────────┘\n                                      │\n         ┌────────────────────────────┼────────────────────────────┐\n         ▼                            ▼                            ▼\n┌─────────────────┐    ┌─────────────────────────────┐    ┌─────────────────────┐\n│  Agent 核心      │    │  Desktop Backend (NestJS)   │    │  Memory / 向量存储   │\n│  AgentManager   │    │  server-api/*               │    │  Vectra + 嵌入       │\n│  执行方式:      │    │  Agents · Skills · Tasks    │    │  compaction 扩展     │\n│  local/coze/    │    │  Auth · Users · Workspace   │    │  sql.js              │\n│  openbot/     │    │                             │    │                     │\n│  opencode(代理) │    │                             │    │                     │\n│  pi-coding-agent│    │                             │    │                     │\n│  pi-ai 多模型   │    │                             │    │                     │\n└────────┬────────┘    └─────────────────────────────┘    └─────────────────────┘\n         │\n         ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│  Tools: read/write/edit · bash · find/grep/ls · browser · install-skill ·   │\n│         save-experience (写入记忆) · Proxy(local/coze/openclawx)             │\n└─────────────────────────────────────────────────────────────────────────────┘\n```\n\n- **CLI**：直接调用 Agent 核心，单次提示或批量脚本；可启动 Gateway（`openbot gateway`）及配置开机自启（`openbot service install/uninstall`）。\n- **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 计划任务）。\n- **Desktop 后端**（`src/server/`）：NestJS HTTP API，即 **server-api**；可被 Gateway 内嵌或独立监听（默认端口 38081）。会话、智能体配置、技能、任务、工作区、鉴权等由本模块提供。\n- **Desktop**：Electron 包一层 Vue 前端 + 上述后端；通过 Gateway 或直连 Desktop 后端与 Agent 通信。\n- **Agent 核心**：统一由 `AgentManager` 管理会话、技能注入与工具注册；**执行方式**可为 **local**（本机 pi-coding-agent + Skills）、**coze**（代理至 Coze 国内/国际站）、**openclawx**（代理至其他 OpenBot 节点，多节点协作）、**opencode**（代理至 OpenCode 官方 Server，支持流式与 `/init`、`/undo`、`/redo`、`/share`、`/help` 等指令）。记忆与 compaction 作为扩展参与 system prompt 与经验写入。\n\n## 各端技术栈\n\n| 端 | 技术 |\n|------|------|\n| **CLI** | Node.js 20+、TypeScript 5.7、Commander（gateway/login/config/service）；`openbot` 入口，配置 `~/.openbot/desktop`，支持开机自启 |\n| **WebSocket Gateway** | JSON-RPC over WebSocket，默认 38080；单进程内嵌 Nest，path 分流（/server-api、/ws、/channel 等）；连接管理、通道（飞书/钉钉/Telegram） |\n| **Agent 核心** | pi-coding-agent、pi-ai 多模型；执行方式 local/coze/openclawx；工具 read/write/bash/browser 等，SKILL.md 技能注入 |\n| **Desktop 后端** | NestJS 10、Express、Socket.io，前缀 `server-api`；sql.js；Agents·Skills·Config·Auth·Workspace·Tasks |\n| **Desktop 前端** | Electron 28、Vue 3、Pinia、Vite 5；Dashboard、Agents、Sessions、Skills、Settings、Tasks、Workspace |\n| **记忆与向量** | Vectra 向量索引、远端嵌入、compaction 会话压缩、memory 目录持久化 |\n\n---\n\n# 一、安装与部署\n\n安装与部署按**安装方式**划分：npm、Docker、Desktop 安装包。任选其一即可使用对应端的 CLI、Web 或 Desktop。\n\n## 环境要求\n\n- **Node.js** ≥ 20（npm 安装与本地开发必需）\n- 可选：按所用 Provider 配置 API Key（如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`）\n\n---\n\n## 1.1 npm 安装\n\n适用于：使用 **CLI**，或在自有环境中运行 **Gateway（Web）**。\n\n### 前置环境准备\n\n需先安装 **Node.js 20+**（Node \u003e=20）。任选一种方式安装即可：\n\n| 方式 | 说明 |\n|------|------|\n| **官网安装包** | 打开 [nodejs.org](https://nodejs.org/)，下载 LTS 并安装；安装后终端执行 `node -v` 应显示 v20.x 或更高。 |\n| **nvm（推荐）** | 多版本切换方便：`curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh \\| bash`，重启终端后 `nvm install 20`、`nvm use 20`。 |\n| **macOS (Homebrew)** | `brew install node@20`，或 `brew install nvm` 再用 nvm 安装 20。 |\n| **Windows** | 使用 [nodejs.org](https://nodejs.org/) 安装包，或 `winget install OpenJS.NodeJS.LTS`。 |\n| **Linux** | 使用发行版包管理器（如 `apt install nodejs`）或 [nvm](https://github.com/nvm-sh/nvm) 安装。 |\n\n安装后请确认：\n\n```bash\nnode -v   # 应为 v20.x 或 v22.x\nnpm -v    # 能正常输出版本号\n```\n\n### 安装命令\n\n```bash\n# 全局安装（测试过 node 版本：20/22；24 太新，部分库需本地编译环境）\nnpm install -g @next-open-ai/openbot\n```\n#### ***如果是在windows上安装最新版本（v0.8.0以上版本），可能会因为node-llama-cpp无法安装，可以采用如下安装命令跳过它的安装，对当前系统使用无影响***\n```bash\n# 跳过预下载脚本\nnpm install -g @next-open-ai/openbot --ignore-scripts\n# 尝试手工安装跳过的预下载(这一步失败了也不影响正常使用)\nnpm run postinstall --if-present\n```\n\n安装后可直接使用 `openbot` 命令（见下方「使用方式」）。若需从源码构建再安装：\n\n```bash\ngit clone \u003crepo\u003e\ncd openbot\nnpm install\nnpm run build\nnpm link   # 或 npm install -g . 本地全局安装\n```\n\n---\n\n## 1.2 Docker 部署\n\n适用于：在服务器或容器环境中运行 **Gateway**，供 Web/其他客户端连接。编排文件位于仓库 `deploy/` 目录。\n\n### 方式一：使用 CI 构建的镜像（推荐生产）\n\n镜像由 Drone CI（`.drone.yml`）构建并推送到镜像仓库。使用预构建镜像启动服务，暴露端口 **38080**：\n\n```bash\n# 在 deploy 目录下执行\ncd deploy\ndocker compose up -d\n\n# 或从仓库根目录指定 compose 文件\ndocker compose -f deploy/docker-compose.yaml up -d\n```\n\n默认使用镜像 `ccr.ccs.tencentyun.com/windwithlife/openbot:latest`。若需指定版本，可修改 `deploy/docker-compose.yaml` 中 `image` 的 tag（如 `0.6.8` 或 CI 生成的 `build-ci-openbot-\u003cBUILD_NUMBER\u003e`）。\n\n### 方式二：本地构建并运行（开发/无 CI 时）\n\n不依赖镜像仓库，在本地从源码构建镜像并启动：\n\n```bash\n# 在仓库根目录执行（构建上下文为仓库根）\ndocker compose -f deploy/docker-compose-dev.yaml up --build -d\n\n# 或在 deploy 目录下\ncd deploy\ndocker compose -f docker-compose-dev.yaml up --build -d\n```\n\n构建完成后服务同样监听 **38080** 端口，镜像名为 `openbot:dev`，容器名为 `openbot-dev`。\n\n### 配置与数据持久化\n\n- Gateway 默认从容器内 `~/.openbot/desktop/` 读取配置（智能体、模型、通道等）。若需持久化或预置配置，可在 compose 中挂载宿主机目录，例如在 `deploy/docker-compose.yaml` 或 `deploy/docker-compose-dev.yaml` 的 `openbot` 服务下增加：\n\n  ```yaml\n  volumes:\n    - ./openbot-desktop:/root/.openbot/desktop\n  ```\n\n- API Key 等敏感信息也可通过环境变量传入（若 CLI/桌面端支持从环境变量读取），在 compose 的 `environment` 中配置即可。\n\n---\n\n## 1.3 Desktop 安装包\n\n适用于：仅使用 **桌面端**，无需 Node 环境。\n\n- 从 [Releases](https://github.com/next-open-ai/openbot/releases) 下载对应平台的安装包（macOS / Windows）。\n- 安装后启动 OpenBot，按界面引导配置 API Key 与默认模型即可使用。\n\n**macOS 若提示「已损坏、无法打开」**：因安装包未做 Apple 公证，从浏览器下载后会被系统加上「隔离」属性，出现“已损坏”的误报。请用**终端**去掉隔离属性后即可正常打开（一次性操作）：\n\n1. 将下载的 `.dmg` 打开，把 `OpenBot.app` 拖到「应用程序」文件夹（或你想放的目录）。\n2. 打开「终端」（应用程序 → 实用工具 → 终端），执行（路径按你实际放置位置修改）：\n   ```bash\n   xattr -c /Applications/OpenBot.app\n   find /Applications/OpenBot.app -exec xattr -c {} \\; 2\u003e/dev/null\n   ```\n   若系统支持递归可简化为：`xattr -cr /Applications/OpenBot.app`\n3. 之后像普通应用一样打开 OpenBot 即可，无需再右键或重复操作。\n\n安装包由仓库通过 **Desktop 打包** 流程生成（见下方「三、开发 → 3.3 Desktop 开发 → Desktop 打包」）。\n\n首次使用建议在设置中配置默认 Provider/模型，或通过 CLI 执行 `openbot login \u003cprovider\u003e \u003capiKey\u003e [model]` / `openbot config set-model \u003cprovider\u003e \u003cmodelId\u003e`（与桌面端共用 `~/.openbot/desktop/` 配置）。\n\n---\n\n# 二、使用方式\n\n按**使用端**划分：CLI、Web、Desktop；另支持**飞书、钉钉、Telegram** 等通道（见 2.4）；后续将支持 iOS、Android 等。\n\n## 2.1 CLI\n\n在已通过 **npm 安装** 或 **源码构建并 link** 的环境中，在终端使用 `openbot`。\n\n```bash\n# 直接对话（使用默认 workspace 与技能）\nopenbot \"总结一下当前有哪些技能\"\n\n# 指定技能路径\nopenbot -s ./skills \"用 find-skills 搜一下 PDF 相关技能\"\n\n# 仅打印 system/user prompt，不调 LLM\nopenbot --dry-run --prompt \"查北京天气\"\n\n# 指定模型与 provider（覆盖桌面缺省）\nopenbot --model deepseek-chat --provider deepseek \"写一段 TypeScript 示例\"\n```\n\n### CLI 配置（与桌面端共用）\n\nCLI 与桌面端共用**桌面配置**（`~/.openbot/desktop/`）。主要文件：\n\n- **config.json**：全局缺省 provider/model、**defaultModelItemCode**（缺省模型在 configuredModels 中的唯一标识）、缺省智能体 id（`defaultAgentId`）、各 provider 的 API Key/baseUrl、已配置模型列表（configuredModels）等。\n- **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**（可选）。\n- **provider-support.json**：Provider 与模型目录，供设置页下拉选择。\n\n| 操作 | 命令 | 说明 |\n|------|------|------|\n| 保存 API Key（可选指定模型） | `openbot login \u003cprovider\u003e \u003capiKey\u003e [model]` | 写入 config.json；不传 model 时取该 provider 第一个模型并补齐缺省配置，可直接运行 |\n| 设置缺省模型 | `openbot config set-model \u003cprovider\u003e \u003cmodelId\u003e` | 设置全局缺省 provider、model 及 defaultModelItemCode |\n| 查看配置 | `openbot config list` | 列出 providers 与缺省模型 |\n| 同步到 Agent 目录 | `openbot config sync` | 生成并写入 `~/.openbot/agent/models.json` |\n\n**首次使用建议**：\n\n```bash\n# 方式一：login 后直接对话（不传 model 时自动用该 provider 第一个模型）\nopenbot login deepseek YOUR_DEEPSEEK_API_KEY\nopenbot \"总结一下当前有哪些技能\"\n\n# 方式二：指定模型再 login\nopenbot login deepseek YOUR_DEEPSEEK_API_KEY deepseek-reasoner\nopenbot \"总结一下当前有哪些技能\"\n\n# 方式三：先 login 再单独设置缺省模型\nopenbot login deepseek YOUR_DEEPSEEK_API_KEY\nopenbot config set-model deepseek deepseek-chat\nopenbot config sync\nopenbot \"总结一下当前有哪些技能\"\n```\n\n未在命令行指定 `--provider` / `--model` 时，CLI 使用缺省智能体对应的配置；单次可用 `--provider`、`--model`、`--api-key` 覆盖。未在配置中保存 API Key 时，会回退到环境变量（如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`）。\n\n---\n\n## 2.2 Web\n\n通过 **WebSocket 网关** 使用 OpenBot：先启动网关，再通过 Web 客户端连接。\n\n```bash\n# 启动网关（默认端口 38080）\nopenbot gateway --port 38080\n```\n\n若需网关开机/登录自启，可执行 `openbot service install`（支持 Linux / macOS / Windows）；移除自启用 `openbot service uninstall`，停止当前网关用 `openbot service stop`。\n\n客户端连接 `ws://localhost:38080`，使用 JSON-RPC 调用 `connect`、`agent.chat`、`agent.cancel` 等（详见下方「Gateway API 简述」）。  \n前端可自行实现或使用仓库内 Web 示例（若有）。\n\n---\n\n## 2.3 Desktop\n\n- **通过安装包**：安装后直接打开 OpenBot Desktop，登录/配置后即可使用桌面界面（会话、智能体、技能、任务、工作区等）。\n- **通过源码**：在「开发」章节中运行 `npm run desktop:dev` 启动开发版桌面。\n\n桌面端与 CLI 共用同一套配置与 Agent 核心，同一台机器上配置一次即可双端使用。\n\n---\n\n## 2.4 通道支持\n\n除 CLI、Web、Desktop 外，OpenBot 支持通过**通道**将 Agent 对接到第三方 IM/协作平台。通道在 Gateway 启动时根据配置注册并运行：入站消息经统一格式进入 Agent，回复再经该通道发回平台。\n\n### 已支持通道概览\n\n| 通道 | 入站方式 | 出站/流式 | 会话 ID 格式 |\n|------|----------|-----------|----------------|\n| **飞书** | WebSocket 事件订阅（im.message.receive_v1） | 开放 API + 流式卡片更新 | `channel:feishu:\u003cchat_id\u003e` |\n| **钉钉** | dingtalk-stream SDK（Stream 模式） | sessionWebhook POST | `channel:dingtalk:\u003cconversationId\u003e` |\n| **Telegram** | 长轮询 getUpdates | sendMessage / editMessageText 流式更新 | `channel:telegram:\u003cchat_id\u003e` |\n\n### 飞书\n\n**说明**：飞书通道通过飞书开放平台与机器人对接。入站使用飞书官方 **WebSocket 事件订阅**（`im.message.receive_v1`）接收用户消息；出站使用 **开放 API** 发送回复。支持**流式输出**：先发一条「思考中」的互动卡片，再随 Agent 生成内容逐次更新同一条卡片，直至整轮对话结束（`agent_end`）。\n\n- **会话与 Agent**：同一飞书会话（单聊或群聊对应一个 `chat_id`）对应一个 Agent Session（`channel:feishu:\u003cchat_id\u003e`），由通道配置中的 `defaultAgentId` 指定使用哪个智能体。\n- **能力**：单聊、群聊均可；支持文本消息与流式卡片展示；`turn_end` / `agent_end` 事件会向各端广播，便于前端或其它通道按需处理。\n\n**配置**：enabled、appId、appSecret、defaultAgentId。**用法**：飞书开放平台创建自建应用、开通「机器人」与「接收消息」、事件订阅选 WebSocket；OpenBot **设置 → 通道** 勾选「启用飞书」并填写 App ID、App Secret → 保存后**重启 Gateway**；在飞书内私聊或群聊 @ 机器人即可，回复以流式卡片更新。也可直接编辑 `~/.openbot/desktop/config.json` 中 `channels.feishu`。\n\n### 钉钉\n\n**说明**：钉钉通道使用 **dingtalk-stream** SDK 的 **Stream 模式**接收机器人消息，通过消息中的 `sessionWebhook` 回传回复；回复发送完成后需 ack 避免钉钉重试。支持单聊、群聊及流式回复。\n\n- **会话与 Agent**：同一钉钉会话（conversationId）对应一个 Agent Session（`channel:dingtalk:\u003cconversationId\u003e`），由通道配置中的 `defaultAgentId` 指定智能体。\n\n**配置**：enabled、clientId、clientSecret、defaultAgentId。**用法**：钉钉开发者后台创建企业内部应用、添加机器人能力并选择 **Stream 模式**；OpenBot **设置 → 通道** 启用钉钉并填写 Client ID、Client Secret → 保存后**重启 Gateway**。在钉钉内与机器人对话即可。也可编辑 `config.json` 中 `channels.dingtalk`。\n\n### Telegram\n\n**说明**：Telegram 通道使用官方推荐的 **长轮询**（getUpdates）接收消息，无需公网 URL。出站使用 `sendMessage` 发送、`editMessageText` 流式更新同一条消息，直至整轮结束。\n\n- **会话与 Agent**：同一 Telegram 会话（chat_id）对应一个 Agent Session（`channel:telegram:\u003cchat_id\u003e`），由通道配置中的 `defaultAgentId` 指定智能体。\n\n**配置**：enabled、botToken、defaultAgentId。**用法**：通过 [@BotFather](https://t.me/BotFather) 获取 Bot Token；OpenBot **设置 → 通道** 启用 Telegram 并填写 Bot Token → 保存后**重启 Gateway**。在 Telegram 内与机器人对话即可。也可编辑 `config.json` 中 `channels.telegram`。\n\n未配置或未启用某通道时，Gateway 会跳过该通道启动；若已启用但必填项为空，控制台会提示到「设置 → 通道」检查。\n\n### 2.4.1 代理模式与多节点协作\n\n智能体除在本机运行（**local**）外，可配置为**代理模式**，将对话转发至 Coze、OpenCode 或另一台 OpenBot，实现生态接入与多节点协作。**代理智能体为本机 0 Token 消耗模式**：推理与消息处理均在对方平台完成，本机仅做转发与展示，不占用本机模型 API 的 Token。特别适合 **Coze**、**OpenCode** 等具备大量消息、长上下文或代码协作能力的平台，在桌面端与通道中直接使用其能力而无需消耗本机配额。\n\n| 模式 | 说明 | 配置要点 |\n|------|------|----------|\n| **local** | 本机执行，使用当前模型的 pi-coding-agent 与 Skills | 默认；无需额外配置 |\n| **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） |\n| **openclawx** | 代理至其他 OpenBot 实例（多节点） | 执行方式选 OpenBot；填写目标实例 **baseUrl**（如 `http://另一台机器:38080`）、可选 **API Key**。`agents.json` 中为 `\"execution\": \"openclawx\"`，含 `openclawx.baseUrl`、`openclawx.apiKey`（可选） |\n| **opencode** | 代理至 OpenCode 官方 Server | 执行方式选 OpenCode；本地模式需先在本机运行 `opencode serve`（默认 4096 端口），填写端口；远程模式填写地址与端口。可选密码、工作目录、默认模型。支持 `/init`、`/undo`、`/redo`、`/share`、`/help` 等斜杠指令，分享链接会回显到对话中 |\n\n- **入口**：桌面端「设置」→「智能体」中新建/编辑智能体时可选择执行方式；通道使用的默认智能体也可设为 Coze 或 OpenBot 代理。\n- **多节点**：多台机器各跑一个 OpenBot Gateway，将部分智能体指向对方 baseUrl，即可实现分工、专机专用或负载均衡。\n\n---\n\n## 2.5 即将支持\n\n**通道与终端**\n\n| 端 | 说明 |\n|----|------|\n| **飞书** | 已支持，见上文「2.4 通道支持」。 |\n| **钉钉** | 已支持，见上文「2.4 通道支持」。 |\n| **Telegram** | 已支持，见上文「2.4 通道支持」。 |\n| **iOS** | 规划中 |\n| **Android** | 规划中 |\n\n上述端将通过 WebSocket Gateway 或专用适配与现有 Agent 核心对接。\n\n**生态与协议**\n\n| 方向 | 说明 |\n|------|------|\n| **MCP** | **已支持**：智能体可配置 MCP 服务器（stdio 本地进程 / SSE 远程），会话内自动加载 MCP 工具；支持标准 JSON 配置格式（含服务器名称、command/args/env 或 url/headers），与 Skill 形成互补 |\n| **RPA（影刀）** | **已支持**：通过 MCP 接入影刀 RPA（如 yingdao-mcp-server），在智能体配置中添加对应 MCP 即可在对话中调用影刀自动化 |\n| **Coze 生态** | **已支持**：智能体执行方式可选 coze，按站点（国内 cn / 国际 com）配置 Bot ID 与 Access Token，桌面端与通道均可使用 |\n| **OpenBot 多节点** | **已支持**：执行方式可选 openclawx，通过 baseUrl（及可选 apiKey）将对话代理到另一 OpenBot 实例，实现多节点协作与负载分工 |\n| **OpenCode 代理** | **已支持**：执行方式可选 opencode，对接 OpenCode 官方 Server（本地 `opencode serve` 或远程）；流式回复、`/init`/`/undo`/`/redo`/`/share`/`/help` 等指令，分享链接回显；失败时展示「执行失败」提示 |\n\n文档与发布节奏后续更新。\n\n---\n\n# 三、开发\n\n面向**参与 OpenBot 源码开发**的读者，按形态分为 CLI、Web（Gateway + 前端）、Desktop 三部分。\n\n## 环境与依赖\n\n- Node.js ≥ 20\n- 仓库克隆后安装依赖并构建：\n\n```bash\ngit clone \u003crepo\u003e\ncd openbot\nnpm install\nnpm run build\n```\n\n---\n\n## 3.1 CLI 开发\n\n- 入口：`openbot` → bin → `dist/cli/cli.js`\n- 技术：Commander（子命令 `gateway`、`login`、`config`、`service`）、TypeScript 5.7\n- 配置与数据：`~/.openbot/agent`、`~/.openbot/desktop`（与桌面共用）\n- Gateway 开机自启：`openbot service install` / `uninstall` / `stop`（见 `src/cli/service.ts`）\n\n修改 CLI 后重新构建并本地安装：\n\n```bash\nnpm run build\nnpm link\nopenbot --help\n```\n\n---\n\n## 3.2 Web 开发（Gateway + 前端）\n\n- **Gateway**：`src/gateway/`，默认端口 38080，可 `-p` 指定；单进程内嵌 Nest，按 path 分流（`/server-api`、`/ws`、静态资源等）；协议 JSON-RPC over WebSocket；职责包括连接管理、消息路由、鉴权、静态资源。\n- **方法**：`connect`、`agent.chat`、`agent.cancel`、`subscribe_session`、`unsubscribe_session` 等。\n\n本地启动网关：\n\n```bash\nnpm run build\nopenbot gateway --port 38080\n```\n\n若仓库内有独立 Web 前端工程，则分别启动 Gateway 与前端 dev server，前端通过 `ws://localhost:38080` 连接。\n\n---\n\n## 3.3 Desktop 开发\n\n- **后端**：NestJS（`src/server/`），前缀 `server-api`，默认端口 38081；Gateway 内嵌时直接挂载该 Express，无独立子进程。\n- **前端**：Electron 28 + Vue 3 + Pinia + Vite 5，位于 `apps/desktop/`。\n\n```bash\n# 先构建核心（若未构建）\nnpm run build\n\n# 开发模式（Vite 热更 + Electron）\nnpm run desktop:dev\n\n# 仅安装桌面依赖\nnpm run desktop:install\n```\n\n### Desktop 打包\n\n从源码构建可安装的桌面安装包（DMG/NSIS/AppImage），供发布或本地安装使用。\n\n**命令（在仓库根目录执行）：**\n\n```bash\nnpm run desktop:pack\n```\n\n该命令会依次执行：\n\n1. **根目录构建**：`npm run build`，生成 `dist/`（含 Gateway、Server、Agent 等）。\n2. **桌面构建**：`cd apps/desktop \u0026\u0026 npm run build`，其中包含：\n   - **build:gateway**：若需则再次构建根目录 `dist`；\n   - **build:copy-gateway**：将根目录 `dist` 复制到 `apps/desktop/gateway-dist`，写入 `package.json`（`type: \"module\"` + 生产依赖），并执行 `npm install --production`，得到带 `node_modules` 的 gateway 运行时；\n   - **build:renderer**：Vite 构建前端到 `renderer/dist`；\n   - **electron-builder**：打包为各平台安装包，并将 `gateway-dist` 作为 **extraResources** 拷贝到应用内 `Contents/Resources/dist`（含 Gateway 代码与依赖），无需用户安装 Node 即可运行。\n\n**产出物：**\n\n- **macOS**：`apps/desktop/dist/` 下生成 `.dmg`、`.zip`（如 `OpenBot Desktop-0.1.1-arm64.dmg`）；\n- **Windows**：nsis 安装程序；\n- **Linux**：AppImage。\n\n安装包安装后，Gateway 与前端均内嵌在应用内，用户无需单独安装 Node.js。\n\n---\n\n## 测试\n\n```bash\n# 单元/集成测试（含 config、gateway、server e2e）\nnpm test\n\n# 仅 e2e\nnpm run test:e2e\n\n# 记忆相关测试\nnpm run test:memory\n```\n\n测试分布：`test/config/` 桌面配置、`test/gateway/` 网关、`test/server/` Nest 后端 e2e。\n\n---\n\n# 附录\n\n## Gateway API 简述\n\n- **请求**：`{ \"type\": \"request\", \"id\": \"\u003cid\u003e\", \"method\": \"\u003cmethod\u003e\", \"params\": { ... } }`\n- **成功响应**：`{ \"type\": \"response\", \"id\": \"\u003cid\u003e\", \"result\": { ... } }`\n- **错误响应**：`{ \"type\": \"response\", \"id\": \"\u003cid\u003e\", \"error\": { \"message\": \"...\" } }`\n- **服务端事件**：如 `agent.chunk`（流式输出）、`agent.tool`（工具调用）等，格式为 `{ \"type\": \"event\", \"event\": \"...\", \"payload\": { ... } }`\n\n常用流程：先 `connect` 建立会话，再通过 `agent.chat` 发送消息并接收流式/事件；`agent.cancel` 取消当前任务。\n\n---\n\n\n\n---\n\n### 社区与交流\n\n扫码加入交流群：\n\n![OpenBot QQ交流群:362347735](docs/group-1.png)\n\n---\n\n## 许可证\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnext-open-ai%2Fopenbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnext-open-ai%2Fopenbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnext-open-ai%2Fopenbot/lists"}