OpenBot 是 CopilotKit 开源的一个本地优先 AI 智能体运行时,定位为“公司真正可以拥有的 AI 助手”。它与 ChatGPT、Claude 或 Grok 形态相似,但关键区别在于:运行在你自己的基础设施上,并且你能够修改它的任何部分。它本身更像一个模板而非成品,没有托管版本可注册,也不作为依赖包发布,仓库中的每个工作空间都是私有的。你克隆仓库、替换 examples/ 下的示例租户包,放进自己的同事、频道和技能,然后运行。
用途与定位
OpenBot 面向希望在企业自有环境中部署、定制并治理 AI 智能体的团队。它可以接入任意符合 AG-UI 协议的智能体端点,不绑定特定框架,因此用 LangGraph、Mastra、CrewAI、Pydantic AI、Google ADK 或手写方式构建的智能体都能以相同方式接入。每个“AI 同事”获得一台独立的计算机:真实的浏览器(含独立登录)、自己的文件,以及仅被授予的工具。
主要能力
- 每个 Bot 一台计算机:supervisor 为每个 Bot 提供独立容器、独立 /workspace 卷和独立浏览器配置;在主机支持时可通过 COMPUTER_RUNTIME=runsc 在 gVisor 下运行。
- 不只是浏览器,还能执行 Shell:Bot 可在工作区运行命令、按需安装、处理已保存文件;该能力与其它操作走同一网关,规则可拒绝 Shell 或特定命令,命令和记录都留痕。命令继承 PATH、locale、终端与代理变量,但不继承部署环境的其余变量。
- 网关是唯一入口:网关从服务器持有的快照解析目标、评估策略、写入审计行,然后才调用计算机;不存在先执行后记录或绕过记录的路径。
- CEL 策略,默认拒绝(fail closed):规则可检查 tool.name、intent、bot.id、actor.id、page.url、page.host、element.、key、command、file.、mcp.、initiator. 等。Deny 先于 allow 评估,缺失策略等同于不允许,规则出错时拒绝而非放行。
- 可视化与接管:界面显示 Bot 正在看什么,Activity 标签显示它运行、读取、保存了什么及输出;遇到登录墙或 2FA 时 Bot 请求帮助,控制权可在同一面板交接,并记录 computer.help_requested、computer.control_taken、computer.control_released。人工驾驶期间,Bot 操作被拒绝而非排队。密钥不会进入对话记录,只记录曾请求密钥及其长度。
- 用组件而非纯文字回应:编译后的 React 组件位于 app/src/components/gallery/,沙箱组件在 /admin/playground 编写并发布,无需部署。每次调用都会向服务器确认组件是否存在、已发布且未对该 Bot 禁用;数据函数按组件授予。
- 受治理的 MCP:目录内置 Google Drive、Notion 以及公开网络研究提供商 Parallel、Exa、Firecrawl,Composio 可代理数百个应用,均以提问者身份访问。自定义服务器须通过 URL 检查;未知工具和自定义服务器工具按“写”处理。Bot 会被告知有哪些连接器以及自己持有哪些。
- 技能是指令而非能力:个人技能只附着于作者拥有的 Bot,部署技能归管理员所有,二者在编辑器中以“/”调用。被授予 skill-creator 技能的 Bot 可在对话中与你一起编写技能,且只有你按下卡片上的按钮才会保存。
- 登录与人员管理:支持从环境配置 Google、Microsoft 或 Okta,或注册公司自有的 SAML / OpenID Connect 提供商并按邮箱域名路由。/admin/people 列出所有登录者,可提升、降级和移除访问权。
- 审计与凭据:/admin/audit 列出被许可、被拒绝和失败的操作,每次拒绝都附带导致它的规则。凭据通过 /admin/credentials 存储,静态加密,API 从不返回,并在审计事件中脱敏。
- 默认回环绑定:计算机绑定 127.0.0.1 并要求每容器令牌;supervisor 也绑定于此,因为其持有 Docker socket 且令牌是共享密钥。
使用方式(快速开始)
环境要求:Docker(用于 PostgreSQL 和内置 Bot)、Bun 1.3+(用于应用和 API 服务器)、一个 CopilotKit Intelligence 项目及许可(有免费计划,Intelligence 可自托管)、一个模型密钥(概念验证 Bot 使用 OpenAI;LangGraph Bot 可用 OpenAI、Anthropic 或 Google)。
步骤:
- 复制环境文件并安装依赖:
cp .env.example .env,然后bun install。 - 连接一个新的托管 Intelligence 项目:
npx --yes copilotkit@latest login,npx --yes copilotkit@latest project select,bun scripts/setup-learning.ts。该辅助脚本会为所选项目配置运行时密钥,创建或复用其 openbot Learning 容器,并把两项设置写入 .env。若使用自托管,设置 INTELLIGENCE_API_URL 为该部署的 HTTPS API 源(本地为 http://localhost)并运行辅助脚本。 - 填写其余必需值:OPENAI_API_KEY。保持 .env.example 中的托管 Intelligence URL,除非你自己运行 Intelligence。示例 KEY_ENCRYPTION_KEY 仅本地可用,建议自行生成:
openssl rand -base64 32。 - 运行:
bash scripts/start.sh,然后打开http://localhost:3010。脚本会启动 Docker 服务、应用迁移、在 3001 端口启动 API 服务器、启动常规 worker、在 3010 端口启动应用,并检查服务健康路由。停止使用bash scripts/stop.sh,--keep-computers可保留计算机运行;数据库、Bot 文件和浏览器配置都存于卷中,不会被删除。
也可在单台 Mac 上本地评估 Intelligence:免费 Developer 计划即可,本地许可有效 30 天,可用 npx copilotkit@latest local renew 续期;在 OpenBot 根目录运行 npx copilotkit@latest local connect,它会把 INTELLIGENCE_API_URL、INTELLIGENCE_GATEWAY_WS_URL 和 CPK_INTELLIGENCE_API_KEY 写入 .env;但 OpenBot 只从 INTELLIGENCE_API_KEY 读取项目密钥,需在启动前把 cpk-... 值复制过去。
单镜像部署:一个镜像包含应用、API、Bot 驱动的浏览器,可选 PostgreSQL,同一 .env,无需 Kubernetes;默认端口 3001。
适用场景
内置示例部署以两个同事起步(General Assistant 和 Knowledge),配置 Risk Analyst 后加入,examples/fintech/catalog/ 中还有十个各司其职的 Bot,涵盖费用政策核对、会议纪要跟进、发布说明草稿、工单分流、新人手册问答、访谈撰写、值班交接、续约前信息汇总、客户反馈主题归类等。可将其中一个复制到 examples/fintech/agents/ 添加,也可自行编写或用 UI 的 /bots 创建。
限制与说明
OpenBot 处于 Alpha 阶段并活跃开发中,预期会有粗糙边缘和 bug,会持续变动,欢迎提交 issue 和 PR。它是模板而非产品,没有托管版本,仓库中每个工作空间都是私有的。默认本地运行,.env.example 中 OPENBOT_SINGLE_USER=true 会把所有请求当作一个管理员,方便全新克隆直接使用;启用登录后会关闭该设置,且在其他人访问部署前必须启用。