Bytebot是一个拥有自己电脑的AI。与仅限浏览器的代理或传统RPA工具不同,Bytebot配备了完整的虚拟桌面环境
Firefox ESR、Thunderbird邮件、VS Code、办公工具等预装应用,还可安装任何Linux软件
拥有独立的/home/user目录,可下载、组织文件,处理PDF、电子表格和各类文档
支持1Password、Bitwarden等密码管理器,自动处理登录和2FA双因素认证
在浏览器、终端、文本编辑器之间无缝切换,完成复杂多步骤任务
通过noVNC在浏览器中实时观看桌面,支持Takeover模式随时接管控制
基于Ubuntu 22.04 LTS + XFCE4,配置和安装的软件持久保存
AI通过截图理解界面,不依赖脆弱的元素选择器,UI变化时自动适应
支持Model Context Protocol,可通过SSE端点连接MCP客户端
完全隔离的Docker容器,不影响宿主系统,可随时重置到干净状态
完整的Ubuntu Linux桌面,专为AI自动化优化
CPU: 2核心
内存: 4GB
用途: 个人自动化、测试
CPU: 4核心
内存: 8GB+
用途: 业务流程自动化
CPU: 专用节点
内存: 16GB+
用途: 组织级自动化
下一代企业自动化的革命性优势
传统RPA需要500+行代码处理一个银行门户,Bytebot只需一句话:"登录Chase银行,下载上月所有对账单"
不依赖脆弱的XPath选择器,通过视觉理解界面,就像人类一样识别按钮和表单
UI更新时自动适应,无需重新编程。传统RPA每次UI变化都需要修改脚本
通过密码管理器扩展自动处理双因素认证,无需为每个网站编写复杂逻辑
完全在您的基础设施上运行,符合SOC2、HIPAA、PCI-DSS等合规要求
开源免费,使用自己的LLM API密钥,无平台费用、无使用限制
灵活选择最适合您的AI模型
推荐用于复杂任务和长上下文处理
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-3-5-sonnet-20241022
强大的通用能力和广泛的应用场景
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o
快速响应和多模态理解能力
GEMINI_API_KEY=...
GEMINI_MODEL=gemini-1.5-flash
企业级部署和合规性保障
# 通过LiteLLM代理配置
# 支持Azure部署端点
在AWS基础设施上运行多种模型
# 通过LiteLLM代理配置
# 支持Claude、Llama等模型
完全离线运行,数据不出本地
# 通过LiteLLM代理配置
# 支持Llama、Mistral等
通过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分钟即可启动
# 克隆项目
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
# 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代理
# 如果只需要虚拟桌面环境,不需要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 ≥ 20.10
Docker Compose
4GB+ 可用内存
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"
三种API方式,满足不同集成需求
通过自然语言创建和管理AI任务,适合业务流程自动化
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秒检查一次
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())
低级API直接控制鼠标、键盘和屏幕,适合精确自动化
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" # 按回车键
})
通过Model Context Protocol连接Claude Desktop,让Claude直接控制桌面
# 编辑 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的虚拟桌面
# - 执行鼠标和键盘操作
# - 截图并分析屏幕内容
# - 运行复杂的多步骤任务
模块化设计,企业级可扩展性
完整的Ubuntu 22.04桌面环境
NestJS后端,AI任务编排
Next.js 15 + React 19前端
任务和状态持久化存储
用户输入 → 任务创建 → 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
Anthropic SDK, OpenAI SDK, Google GenAI, LiteLLM
nut.js, Ubuntu 22.04, XFCE4, noVNC, supervisord
Docker, Docker Compose, Kubernetes, Helm, Railway
生产环境部署和扩展策略
# 克隆仓库
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
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
统一多个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 .
任务完成时自动通知外部系统
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
常用管理命令和问题解决
# 查看服务状态
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
# 查看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
docker-compose logs desktop
docker-compose restart desktop
docker-compose logs agent
# 检查环境变量
docker-compose exec agent env | grep API_KEY
docker stats
# 修改docker-compose.yml增加资源
resources:
limits:
memory: 8G
docker-compose logs postgres
docker-compose exec postgres psql -U bytebot
如果遇到无法解决的问题,可以通过以下渠道获取帮助: