🤖 开源AI桌面代理

Bytebot

让AI拥有自己的电脑,通过自然语言命令自动化任何计算机任务

9,504 GitHub Stars
1,178 Forks
TypeScript Language
Apache 2.0 License

什么是桌面代理?

Bytebot是一个拥有自己电脑的AI。与仅限浏览器的代理或传统RPA工具不同,Bytebot配备了完整的虚拟桌面环境

💻

使用任何应用程序

Firefox ESR、Thunderbird邮件、VS Code、办公工具等预装应用,还可安装任何Linux软件

📁

完整文件系统

拥有独立的/home/user目录,可下载、组织文件,处理PDF、电子表格和各类文档

🔐

密码管理器集成

支持1Password、Bitwarden等密码管理器,自动处理登录和2FA双因素认证

🔄

跨应用工作流

在浏览器、终端、文本编辑器之间无缝切换,完成复杂多步骤任务

👁️

实时VNC访问

通过noVNC在浏览器中实时观看桌面,支持Takeover模式随时接管控制

🚀

持久化环境

基于Ubuntu 22.04 LTS + XFCE4,配置和安装的软件持久保存

🎯

视觉理解能力

AI通过截图理解界面,不依赖脆弱的元素选择器,UI变化时自动适应

🔌

MCP协议支持

支持Model Context Protocol,可通过SSE端点连接MCP客户端

🐳

容器化隔离

完全隔离的Docker容器,不影响宿主系统,可随时重置到干净状态

虚拟桌面环境

完整的Ubuntu Linux桌面,专为AI自动化优化

🖥️ 系统配置

  • Ubuntu 22.04 LTS 稳定版
  • XFCE4 轻量级桌面环境
  • X11 显示服务器
  • 1920x1080 @ 24位色深
  • supervisord 进程管理

📦 预装软件

  • Firefox ESR 浏览器
  • Thunderbird 邮件客户端
  • Visual Studio Code IDE
  • 1Password 密码管理器
  • Git 版本控制
  • Python 3 开发环境

⚙️ 核心服务

  • bytebotd 自动化守护进程
  • noVNC Web客户端
  • WebSocket代理
  • REST API (端口9990)
  • MCP SSE端点 (/mcp)

👤 用户环境

  • 用户名: user
  • 主目录: /home/user
  • 无密码sudo权限
  • 自动登录桌面会话
  • 完整的文件系统访问

🔧 资源配置建议

开发环境

CPU: 2核心
内存: 4GB
用途: 个人自动化、测试

生产环境

CPU: 4核心
内存: 8GB+
用途: 业务流程自动化

企业部署

CPU: 专用节点
内存: 16GB+
用途: 组织级自动化

Bytebot vs 传统RPA

下一代企业自动化的革命性优势

对比维度 传统RPA (UiPath等) Bytebot
实施时间 3-6个月 1-2周
开发要求 需要RPA专家 任何技术用户
维护工作量 开发时间的40% 接近零
UI变化适应 立即中断 自动适应
错误恢复 仅预设脚本 智能适应
新流程添加 数周开发 几分钟描述
年度成本 $100,000+ 自托管基础设施
🧠

自然语言 vs 复杂脚本

传统RPA需要500+行代码处理一个银行门户,Bytebot只需一句话:"登录Chase银行,下载上月所有对账单"

👁️

视觉理解 vs 元素映射

不依赖脆弱的XPath选择器,通过视觉理解界面,就像人类一样识别按钮和表单

🔄

自动适应 vs 频繁维护

UI更新时自动适应,无需重新编程。传统RPA每次UI变化都需要修改脚本

🔐

智能2FA处理

通过密码管理器扩展自动处理双因素认证,无需为每个网站编写复杂逻辑

🔒

数据主权

完全在您的基础设施上运行,符合SOC2、HIPAA、PCI-DSS等合规要求

💰

成本优势

开源免费,使用自己的LLM API密钥,无平台费用、无使用限制

多AI提供商支持

灵活选择最适合您的AI模型

🤖 Anthropic Claude

推荐用于复杂任务和长上下文处理

ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-3-5-sonnet-20241022

🔷 OpenAI GPT

强大的通用能力和广泛的应用场景

OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o

✨ Google Gemini

快速响应和多模态理解能力

GEMINI_API_KEY=...
GEMINI_MODEL=gemini-1.5-flash

☁️ Azure OpenAI

企业级部署和合规性保障

# 通过LiteLLM代理配置
# 支持Azure部署端点

🏢 AWS Bedrock

在AWS基础设施上运行多种模型

# 通过LiteLLM代理配置
# 支持Claude、Llama等模型

🖥️ 本地模型 (Ollama)

完全离线运行,数据不出本地

# 通过LiteLLM代理配置
# 支持Llama、Mistral等

🔌 LiteLLM集成

通过LiteLLM代理支持100+种AI提供商,实现统一接口和负载均衡

# 使用LiteLLM代理部署
docker-compose -f docker/docker-compose.proxy.yml up -d

# 支持的提供商包括:
# - Azure OpenAI, AWS Bedrock, Google Vertex AI
# - Hugging Face, Replicate, Together AI
# - 本地模型 (Ollama, vLLM, LocalAI)
# - 以及更多...

快速开始

多种部署方式,2分钟即可启动

方式1: Docker Compose (推荐)
# 克隆项目
git clone https://github.com/bytebot-ai/bytebot.git
cd bytebot

# 配置AI提供商(选择一个)
echo "ANTHROPIC_API_KEY=sk-ant-..." > docker/.env
# 或: echo "OPENAI_API_KEY=sk-..." > docker/.env
# 或: echo "GEMINI_API_KEY=..." > docker/.env

# 启动所有服务(桌面、代理、UI、数据库)
docker-compose -f docker/docker-compose.yml up -d

# 访问服务
# - 任务界面: http://localhost:9992
# - 代理API: http://localhost:9991
# - 桌面API: http://localhost:9990
# - VNC访问: http://localhost:9990/vnc
方式2: Railway 一键部署
# 1. 访问 Railway 部署页面
https://railway.com/deploy/bytebot

# 2. 点击 "Deploy Now" 按钮

# 3. 添加环境变量(选择一个AI提供商)
ANTHROPIC_API_KEY=sk-ant-...
# 或 OPENAI_API_KEY=sk-...
# 或 GEMINI_API_KEY=...

# 4. 点击 Deploy,等待2-3分钟

# Railway会自动:
# - 构建所有服务
# - 配置私有网络
# - 生成公共URL
# - 启动您的AI代理
方式3: 仅桌面容器(无AI代理)
# 如果只需要虚拟桌面环境,不需要AI代理
docker-compose -f docker/docker-compose.core.yml up -d

# 访问桌面
# VNC: http://localhost:9990/vnc
# API: http://localhost:9990/computer-use
# MCP: http://localhost:9990/mcp

📋 系统要求

Docker环境

Docker ≥ 20.10
Docker Compose
4GB+ 可用内存

AI API密钥

Anthropic / OpenAI / Google
任选其一即可
支持多提供商切换

网络端口

9990: 桌面API/VNC
9991: 代理API
9992: Web界面

任务示例

从简单到复杂,看看Bytebot能做什么

🎯 基础任务(测试功能)

📸 截图

"Take a screenshot of the desktop"

🌐 打开浏览器

"Open Firefox and go to google.com"

📝 创建文件

"Create a text file called 'hello.txt' with today's date"

ℹ️ 系统信息

"Check the system information and tell me the OS version"

🚀 高级任务(展示能力)

🔍 网络研究

"Find the top 5 AI news stories today and create a summary document"

📊 数据提取

"Go to Hacker News, find the top 10 stories, and save them to a CSV file"

📄 文档处理

"Upload a PDF contract and extract all payment terms and deadlines"

🔄 多步骤工作流

"Search for 'machine learning tutorials', open the first 3 results in tabs, and take screenshots of each"

💼 企业级应用场景

🏢 金融服务自动化

  • 登录多个银行门户(自动处理2FA)
  • 下载交易文件和对账单
  • 运行专有脚本处理数据
  • 上传结果到内部系统
  • 生成合规报告

📊 业务流程自动化

  • 从多个SaaS平台提取报告
  • 交叉引用和数据对账
  • 客户入职流程自动化
  • 采购订单处理和ERP更新
  • 员工数据跨系统同步

📋 发票处理

  • 登录供应商门户下载发票
  • 从PDF中提取关键信息
  • 与内部系统对账
  • 标记异常需要人工审核
  • 自动化付款流程

🔬 研究与分析

  • 竞争对手网站监控
  • 市场数据收集和分析
  • 新闻和社交媒体监测
  • 行业报告汇编
  • 趋势分析和可视化

💻 开发与QA

  • 自动化UI测试和回归测试
  • 跨浏览器兼容性验证
  • 视觉回归测试(截图对比)
  • 与代码代理协作开发
  • 部署验证和健康检查

📄 文档管理

  • 批量PDF文档处理
  • 合同条款提取和分析
  • 多文档信息交叉引用
  • 自动化文档分类归档
  • 基于模板生成新文档

API集成指南

三种API方式,满足不同集成需求

🎯 1. Agent API - 高级任务接口

通过自然语言创建和管理AI任务,适合业务流程自动化

创建任务 (Python)
import requests

# 创建任务
response = requests.post(
    "http://localhost:9991/tasks",
    json={
        "instruction": "登录我的银行账户,下载上月的对账单",
        "files": []  # 可选:上传文件供AI使用
    }
)

task = response.json()
task_id = task["id"]
print(f"任务已创建: {task_id}")

# 检查任务状态
import time
while True:
    status = requests.get(f"http://localhost:9991/tasks/{task_id}")
    task_data = status.json()

    print(f"状态: {task_data['status']}")

    if task_data['status'] in ['completed', 'failed']:
        print(f"结果: {task_data['result']}")
        break

    time.sleep(2)  # 每2秒检查一次
带文件上传的任务 (Python)
import requests
import base64

# 读取文件并编码为base64
with open("contract.pdf", "rb") as f:
    file_content = base64.b64encode(f.read()).decode()

# 创建带文件的任务
response = requests.post(
    "http://localhost:9991/tasks",
    json={
        "instruction": "分析这份合同,提取所有付款条款和截止日期",
        "files": [
            {
                "name": "contract.pdf",
                "content": file_content,
                "mimeType": "application/pdf"
            }
        ]
    }
)

print(response.json())

🖱️ 2. Computer Use API - 直接桌面控制

低级API直接控制鼠标、键盘和屏幕,适合精确自动化

截图和鼠标操作 (Python)
import requests

BASE_URL = "http://localhost:9990"

# 获取屏幕截图
screenshot = requests.post(f"{BASE_URL}/computer-use", json={
    "action": "screenshot"
})
print(f"截图: {screenshot.json()['base64_image'][:50]}...")

# 移动鼠标并点击
requests.post(f"{BASE_URL}/computer-use", json={
    "action": "mouse_move",
    "coordinate": [100, 200]
})

requests.post(f"{BASE_URL}/computer-use", json={
    "action": "left_click"
})

# 输入文本
requests.post(f"{BASE_URL}/computer-use", json={
    "action": "type",
    "text": "Hello, Bytebot!"
})

# 按键操作
requests.post(f"{BASE_URL}/computer-use", json={
    "action": "key",
    "text": "Return"  # 按回车键
})

🔌 3. MCP协议 - Claude Desktop集成

通过Model Context Protocol连接Claude Desktop,让Claude直接控制桌面

Claude Desktop配置
# 编辑 Claude Desktop 配置文件
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "bytebot": {
      "url": "http://localhost:9990/mcp"
    }
  }
}

# 重启Claude Desktop后,Claude就可以:
# - 控制Bytebot的虚拟桌面
# - 执行鼠标和键盘操作
# - 截图并分析屏幕内容
# - 运行复杂的多步骤任务

📚 API端点总览

Agent API (端口9991)

  • POST /tasks - 创建任务
  • GET /tasks/:id - 获取任务状态
  • DELETE /tasks/:id - 删除任务
  • POST /tasks/:id/webhook - 设置Webhook

Desktop API (端口9990)

  • POST /computer-use - 执行桌面操作
  • GET /vnc - noVNC Web客户端
  • GET /mcp - MCP SSE端点
  • WebSocket /ws - 实时事件流

支持的操作

  • screenshot - 截图
  • mouse_move - 移动鼠标
  • left_click / right_click - 点击
  • type - 输入文本
  • key - 按键(Return, Tab等)

系统架构

模块化设计,企业级可扩展性

🏗️ 核心组件

🖥️

Desktop Container

完整的Ubuntu 22.04桌面环境

  • XFCE4 桌面环境
  • bytebotd 自动化守护进程
  • noVNC Web访问
  • 预装常用应用
  • 资源: ~1-2GB RAM
🤖

AI Agent Service

NestJS后端,AI任务编排

  • 任务规划和执行
  • 多AI提供商支持
  • WebSocket实时通信
  • Prisma ORM数据持久化
  • 资源: ~256MB RAM
🎨

Web Task Interface

Next.js 15 + React 19前端

  • 任务创建和管理
  • 实时VNC桌面查看
  • Takeover模式控制
  • Radix UI组件库
  • 资源: ~128MB RAM
🗄️

PostgreSQL Database

任务和状态持久化存储

  • 任务历史记录
  • 执行日志
  • 用户配置
  • 文件元数据
  • 资源: ~256MB RAM

🔄 数据流

用户输入 → 任务创建 → AI规划 → 动作执行 → 桌面自动化 → 结果处理 → 用户反馈

1. 用户通过Web UI或API提交任务
2. Agent Service接收任务,存储到PostgreSQL
3. AI模型分析任务,生成执行计划
4. Agent通过Computer Use API控制桌面
5. bytebotd守护进程执行鼠标/键盘操作
6. 实时截图反馈给AI进行下一步决策
7. 任务完成,结果返回给用户
                    

整个过程通过WebSocket实时推送状态更新,用户可以通过VNC观看执行过程,并随时通过Takeover模式接管控制。

🛡️ 安全架构

容器隔离

每个桌面运行在独立Docker容器中,完全隔离宿主系统

进程隔离

应用程序在受限用户环境中运行,无法访问敏感系统资源

网络安全

默认localhost绑定,可配置防火墙规则和VPN隧道

数据主权

所有数据保留在您的基础设施上,符合GDPR/HIPAA/SOC2要求

💻 技术栈

前端

Next.js 15, React 19, TypeScript, Radix UI, Tailwind CSS, react-vnc

后端

NestJS, Prisma ORM, Socket.io, PostgreSQL 16

AI集成

Anthropic SDK, OpenAI SDK, Google GenAI, LiteLLM

桌面自动化

nut.js, Ubuntu 22.04, XFCE4, noVNC, supervisord

部署

Docker, Docker Compose, Kubernetes, Helm, Railway

企业级部署方案

生产环境部署和扩展策略

☸️ Kubernetes + Helm部署

Helm安装
# 克隆仓库
git clone https://github.com/bytebot-ai/bytebot.git
cd bytebot

# 基础安装
helm install bytebot ./helm \
  --set agent.env.ANTHROPIC_API_KEY=sk-ant-...

# 生产环境配置
helm install bytebot ./helm \
  --set agent.replicas=3 \
  --set desktop.resources.requests.memory=4Gi \
  --set desktop.resources.requests.cpu=2 \
  --set postgresql.persistence.size=50Gi \
  --set ingress.enabled=true \
  --set ingress.host=bytebot.company.com
自定义values.yaml
# values.yaml
agent:
  replicas: 3
  env:
    ANTHROPIC_API_KEY: "sk-ant-..."
    # 或使用LiteLLM代理
    LITELLM_PROXY_URL: "http://litellm-proxy:4000"

desktop:
  resources:
    requests:
      memory: "4Gi"
      cpu: "2"
    limits:
      memory: "8Gi"
      cpu: "4"

postgresql:
  persistence:
    enabled: true
    size: 50Gi

ingress:
  enabled: true
  className: nginx
  host: bytebot.company.com
  tls:
    enabled: true
    secretName: bytebot-tls

🔧 部署模式对比

部署模式 适用场景 资源要求 扩展性
单用户 (Docker Compose) 个人自动化、开发测试 4GB RAM, 2 CPU 单实例
生产环境 (Docker Compose) 小团队、业务流程自动化 8GB+ RAM, 4 CPU 垂直扩展
企业部署 (Kubernetes) 组织级自动化、高可用 专用节点,16GB+ RAM 水平扩展

🚀 高级配置

LiteLLM代理集成

统一多个AI提供商,实现负载均衡和故障转移

# 部署LiteLLM代理
docker-compose -f docker/docker-compose.proxy.yml up -d

# 支持100+提供商
# Azure, AWS, GCP, Hugging Face等

自定义桌面镜像

预装企业应用和配置

# 修改 packages/bytebotd/Dockerfile
# 添加企业应用
RUN apt-get install -y your-app

# 构建自定义镜像
docker build -t bytebot-custom .

Webhook集成

任务完成时自动通知外部系统

POST /tasks/:id/webhook
{
  "url": "https://your-system.com/webhook",
  "events": ["completed", "failed"]
}

监控和日志

集成Prometheus、Grafana、ELK

# 查看日志
docker-compose logs -f agent
docker-compose logs -f desktop

# Kubernetes
kubectl logs -f deployment/bytebot-agent

💡 生产环境最佳实践

  • 资源隔离: 为桌面容器分配专用节点,避免资源竞争
  • 持久化存储: 使用PVC持久化PostgreSQL数据和桌面文件
  • 负载均衡: 通过LiteLLM代理分发请求到多个AI提供商
  • 安全加固: 启用TLS、配置网络策略、使用Secret管理API密钥
  • 监控告警: 设置资源使用、任务失败率、API延迟的监控
  • 备份策略: 定期备份数据库和重要桌面配置
  • 版本管理: 使用固定版本标签,避免意外更新

管理和故障排除

常用管理命令和问题解决

🔧 常用管理命令

Docker Compose管理
# 查看服务状态
docker-compose -f docker/docker-compose.yml ps

# 查看日志
docker-compose -f docker/docker-compose.yml logs -f
docker-compose -f docker/docker-compose.yml logs -f agent
docker-compose -f docker/docker-compose.yml logs -f desktop

# 停止服务
docker-compose -f docker/docker-compose.yml stop

# 重启服务
docker-compose -f docker/docker-compose.yml restart

# 更新到最新版本
docker-compose -f docker/docker-compose.yml pull
docker-compose -f docker/docker-compose.yml up -d

# 完全重置(删除所有数据)
docker-compose -f docker/docker-compose.yml down -v
docker-compose -f docker/docker-compose.yml up -d
Kubernetes管理
# 查看Pod状态
kubectl get pods -l app=bytebot

# 查看日志
kubectl logs -f deployment/bytebot-agent
kubectl logs -f deployment/bytebot-desktop

# 进入容器调试
kubectl exec -it deployment/bytebot-desktop -- bash

# 扩展副本数
kubectl scale deployment bytebot-agent --replicas=5

# 更新配置
helm upgrade bytebot ./helm -f values.yaml

# 回滚版本
helm rollback bytebot

# 卸载
helm uninstall bytebot

🐛 常见问题排查

桌面无法访问

  • 检查端口9990是否被占用
  • 确认Docker容器正在运行
  • 查看desktop容器日志
  • 尝试重启desktop服务
docker-compose logs desktop
docker-compose restart desktop

任务创建失败

  • 验证AI API密钥是否正确
  • 检查API配额是否用尽
  • 查看agent服务日志
  • 确认网络连接正常
docker-compose logs agent
# 检查环境变量
docker-compose exec agent env | grep API_KEY

性能问题

  • 检查系统资源使用情况
  • 增加容器内存限制
  • 优化AI模型选择
  • 考虑使用更快的模型
docker stats
# 修改docker-compose.yml增加资源
resources:
  limits:
    memory: 8G

数据库连接错误

  • 确认PostgreSQL容器运行
  • 检查数据库连接字符串
  • 验证数据库凭据
  • 查看postgres日志
docker-compose logs postgres
docker-compose exec postgres psql -U bytebot

📞 获取帮助

如果遇到无法解决的问题,可以通过以下渠道获取帮助:

  • Discord社区: 最快的响应,社区成员和开发者实时帮助
  • GitHub Issues: 报告Bug或请求新功能
  • 官方文档: docs.bytebot.ai 包含详细的故障排除指南
  • GitHub Discussions: 讨论最佳实践和使用案例

社区与支持

加入我们的社区,获取帮助和讨论

💬

Discord社区

加入我们的Discord服务器,获取帮助、分享经验和讨论想法

加入Discord
📚

完整文档

访问docs.bytebot.ai获取详细的部署指南、API参考和最佳实践

查看文档
🐛

GitHub Issues

报告错误、请求功能或为项目做出贡献

提交Issue
🌟

GitHub Star

如果觉得Bytebot有用,请在GitHub上给个Star支持项目发展

⭐ Star项目
🤝

贡献代码

欢迎提交Pull Request,一起完善这个开源项目

贡献指南
🎓

示例项目

查看社区分享的实际应用案例和最佳实践

查看示例