
过去两年,AI Agent 浪潮席卷了整个开发者社区。
从最早之前 AutoGen 把”多智能体协作”的概念摆在台面上,到后面各大框架相继推出自己的 Agent 编排方案,再到 2025 年 MCP 协议让 Agent 能真正连接外部工具,整个行业都在往同一个方向狂奔:让 AI 不只是聊天,而是真正”干活”。
听起来挺灵活,但实际用起来总有一种”裸奔”的感觉——Agent 操作你的文件、访问你的浏览器、调用你的 API,每一步都是黑盒,你事后查日志才能知道它做了什么,而且很多时候日志根本不够详细。
这就是 CopilotKit 团队在推出 OpenBot 时想要解决的核心痛点。

他们的思路很有意思:既然我们信不过 Agent 的”自觉性”,不如给每个 Agent 配一台专属的”电脑”——一个真正独立的容器环境,有自己的浏览器、自己的文件系统、自己的会话状态。
Agent 所有的操作都发生在这台电脑里,你通过一个审计网关来控制和记录每一个动作。
这不是在 Agent 外面包一层权限校验,而是从底层重构了”Agent 如何使用工具”的方式。让我们来看看 OpenBot 是怎么做到的。
OpenBot 是什么
OpenBot 是 CopilotKit 推出的一个开源 Agent 平台,它把 AI Agent 变成了你可以信任的数字同事(AI coworkers)。
每个 Agent 都拥有自己专属的计算机环境:一个独立的 Docker 容器,里面运行着 Chromium 浏览器和专属的工作空间文件系统。
它基于 CopilotKit 之前推出的 AG-UI 协议构建,这意味着你可以把任何支持 AG-UI 的 Agent 框架(LangGraph、Mastra、CrewAI、Pydantic AI、Google ADK 等)接入 OpenBot,不用被某个特定框架绑死。
目前已经收获 2.2k Star。
核心亮点
OpenBot 相比现有的 Agent 框架,在理念上有几个根本性的差异。

亮点一:每个 Agent 有自己的”电脑”
Supervisor 服务为每个 Bot 创建一个独立的 Docker 容器实例,这个容器就是 Agent 的”电脑”——里面有一个 Chromium 浏览器实例(拥有独立的登录会话和 Cookie)、一个 /workspace 工作空间目录、以及一个专属的浏览器配置文件(profile)。
这带来了几个关键好处:
- • 会话持久化:Agent 登录过的网站会保持登录状态,不需要每次重新认证
- • 环境隔离:不同 Agent 之间完全隔离,一个 Agent 出问题不会影响另一个
- • 可观测性:你可以直接查看 Agent 正在看的浏览器画面,就像坐在同事旁边看他工作一样
如果你需要更高的安全级别,还可以设置 COMPUTER_RUNTIME=runsc 使用 gVisor 来运行容器,提供额外的内核级隔离。
亮点二:所有操作都经过”网关审计”
OpenBot 的核心安全理念是:每一个动作,在执行前就已经被记录。
Agent 对浏览器、文件、MCP 服务器的任何操作,都必须经过 Server 网关。网关的工作流程非常严格:
- 1. 接收 Agent 的工具调用请求
- 2. 解析目标(哪个 URL、哪个文件、哪个 MCP 工具)
- 3. 根据策略规则进行评估(允许?拒绝?需要更多信息?)
- 4. 写入审计日志
- 5. 执行操作或返回拒绝原因
这不是传统的”先操作后记录”,而是 “先记录后操作”。即使操作失败,日志里也会完整记录下来。用 OpenBot 官方的话来说:”没有任何操作路径可以跳过记录环节。”
亮点三:支持人机协作的”方向盘接管”
OpenBot 有一个很实用的功能叫”Take the wheel”(方向盘接管)。
当 Agent 在操作过程中遇到登录墙、2FA 验证或其他需要人工介入的场景时,它会主动请求帮助。
此时你可以在同一个面板中接管这台电脑,完成认证操作后再交还给 Agent。
整个过程都会被记录为 computer.help_requested、computer.control_taken 和 computer.control_released 事件。在人工驾驶期间,Agent 的所有操作都会被拒绝而不是排队等待,确保不会出现冲突。
这个设计特别适合处理那些”只需要人工完成一步认证,后续就可以全自动”的场景,比如登录企业内部系统、完成支付验证等。
亮点四:组件式 UI 输出,而非纯文本
OpenBot 遵循 AG-UI 协议,这意味着 Agent 的输出不只是纯文本回复,还可以是交互式的 React 组件。
这些组件可以在运行时动态渲染,用户可以直接与组件交互,而不是阅读一大段文字后自己去操作。
组件有两种来源:
- • 内置组件:存放在
app/src/components/gallery/目录下,经过编译后直接使用 - • 沙箱组件:在
/admin/playground中创建和测试,无需重新部署即可发布
每个组件的访问权限也可以单独控制,管理员可以决定哪些 Agent 可以使用哪些组件。
快速上手
第一步:克隆仓库并配置环境变量
git clone https://github.com/CopilotKit/openbot.git
cd openbot
cp .env.example .env
第二步:获取 CopilotKit Intelligence 凭证
npx --yes copilotkit@latest login
npx --yes copilotkit@latest project select
npx --yes copilotkit@latest license --write
执行 project select 后会输出一个 cpk-... 格式的运行时密钥,将它填入 .env 文件的 INTELLIGENCE_API_KEY 字段。license --write 命令会自动将 COPILOTKIT_LICENSE_TOKEN 写入 .env 文件。
第三步:配置必要的环境变量
在 .env 文件中填入其他必要的配置:
# 必填:你的大模型 API Key
OPENAI_API_KEY=sk-xxxxxxxx
# 可选:如果使用自托管的 Intelligence,保留默认的托管 URL 即可# INTELLIGENCE_API_URL=https://...
# INTELLIGENCE_GATEWAY_WS_URL=wss://...# 推荐:生成自己的密钥加密密钥
openssl rand -base64 32
# 将输出填入 KEY_ENCRYPTION_KEY 字段
如果只是本地测试,.env.example 中的示例 KEY_ENCRYPTION_KEY 可以直接使用。但在生产环境中必须使用自己的密钥。
第四步:一键启动
bun install
bash scripts/start.sh
start.sh 脚本会自动完成以下工作:
- 1. 启动 Docker Compose 中的所有服务(PostgreSQL、Agent Bot、LangGraph Bot、Supervisor 等)
- 2. 执行数据库迁移
- 3. 在 3001 端口启动 API 服务器
- 4. 在 3010 端口启动前端应用
- 5. 检查所有服务的健康状态
第五步:开始使用
打开浏览器访问 http://localhost:3010,你应该能看到 OpenBot 的主界面。
写在最后
OpenBot 代表了一种与传统 Agent 框架完全不同的思路。
它不追求让 Agent 拥有无限的自由度,而是通过给每个 Agent 分配独立的计算环境、强制的审计网关和细粒度的策略控制,让 Agent 的每一步操作都可追溯、可审计、可干预。
这种设计特别适合企业级场景——当你需要让 AI Agent 操作真实的业务系统、处理敏感数据、与合规要求打交道时,”信任但验证”比”放手去干”更重要。





评论(0)