尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Rakazo终极拆解:如何让每个机器人拥有独立Linux桌面的Computer运行时架构

Rakazo终极拆解:如何让每个机器人拥有独立Linux桌面的Computer运行时架构 Rakazo终极拆解如何让每个机器人拥有独立Linux桌面的Computer运行时架构【免费下载链接】rakazoOpen-source Grok Bot alternative. Choose your own model and sandbox.项目地址: https://gitcode.com/gh_mirrors/ra/rakazoRakazo 是一个开源的 Grok Bot 替代品核心理念是AI 队友归你所有模型、密钥、沙箱都由你自己选择。而它最硬核的设计之一就是让每个机器人Bot都拥有独立的 Linux 桌面——独立的屏幕、独立的浏览器配置、独立的文件空间。本文带你完整拆解 Rakazo 的 computer 运行时架构搞懂它背后的多屏调度、沙箱抽象与持久化机制。整体架构Agent 与 Computer 彻底分离Rakazo 在设计上刻意把两层运行时拆开了Agent 运行时对话、推理、工具调用跑在 Rakazo 自己的 API/Worker 进程里Computer 运行时屏幕、终端、文件则运行在可插拔的沙箱后端里。两者的通信链路是chat/API - Pi agent 会话 - Rakazo computer 工具 - SandboxProvider - Docker / E2B / Daytona / Box / desktop / fake这里有一个关键事实PiAgent 执行内核不是安装在 E2B 或任何沙箱里运行的它始终在 Rakazo 服务端。内置的桌面工具是普通的 Pi 工具不依赖任何特定模型或 MCP所以任何通过 Pi 暴露的模型都能调用。唯一的要求是要操作屏幕模型必须能看懂截图这类图像工具结果。这套边界的详细约定写在官方文档 docs/computer-runtime.md 中值得作为第一份阅读材料。两种计算机模式Team Computer 与 Private ComputerRakazo 为每个工作区默认提供一台Team Computer同时支持完全隔离的Private ComputerTeam Computer共享模式团队里的机器人共享同一台计算机的文件和已安装工具。每个 Bot 默认工作在自己的bots/bot-id/目录下刻意要共享的成果放在shared/。注意这些目录只是工作组织方式不是安全边界——每个 Bot 都能访问整台工作区的文件。Private Computer独占模式整台计算机的整个工作区就是这一个 Bot 的家工作负载互相不信任时用这种模式。一句话经验法则需要隔离就开多台 Computer而不是一台机器里靠目录自觉。核心机制每个 Bot 一个 X 显示 持久浏览器配置这是全文最值得展开的部分。在支持图形界面的 Computer 上Rakazo 给每个活跃的团队 Bot 分配独立的 X 显示X display每个 Bot 看到一块自己的屏幕独立的 Chrome 进程 持久配置ProfileProfile 按 Bot 身份建立索引登录态、Cookie、浏览历史完全独立绝不清空或合并Profile 永远不会从另一个 Bot 克隆、合并或在桌面释放时被删除。两个 Bot 的修改都会保留即使 Bot 重新打开时换了显示槽位用的还是它原来的 Profile。多 Bot 并发靠一套**围栏式数据库租约fenced lease**协调不同 Bot 可以同时操作各自的桌面但同一个 Bot 同一时间只有一个桌面驱动。屏幕租约协调的是工具调用而不是机器内部互相不信任的进程。还有一个省电设计桌面栈是懒加载的——只有当 Bot 真正用到图形工具时才启动桌面。没有 Bot 用图形界面时就不会有空跑的 Chrome。默认没有桌面数量上限一台 Computer 可以容纳 100 个以上 Bot 的 Profile并发桌面数只受内存、CPU、进程数和可用调试器端口的物理限制。Docker 运营者可以用SANDBOX_TEAM_SCREEN_LIMIT设置硬性上限超出时返回MULTI_SCREEN_UNAVAILABLE但 shell 和文件工具依然可用。屏幕网关一个端口服务所有桌面你可能以为每开一块屏就要多暴露一个端口Rakazo 反着来所有桌面共享同一个带令牌保护的屏幕网关因此无论多少 Bot 桌面都不需要发布更多端口。细节包括查看view与控制control使用两套独立的、可撤销的 WebSocket 能力每个能力绑定一个唯一的本地 Unix socket显示槽位被回收后旧连接不可能被误导向下一位住户拆除teardown前先断开客户端失败则保留槽位等待重试人类与 Agent 的输入可以共存于不同的屏幕。点击Take control会给用户发放该 Bot 屏幕的独占控制租约若 Bot 正在执行或持有运行中任务接管会被 409 拒绝提示先停止机器人。网关在容器内的实现是 noVNC websockify令牌插件挂载在view-target文件上相关源码见 start.sh。沙箱后端Docker、E2B、Daytona、Box 共用一套契约SandboxProvider是 Rakazo 的后端抽象边界任何后端只需实现四组能力生命周期provision / reconnect、stop、destroy桌面观察截图、有序批量操作、用户输入、实时屏幕会话执行机器内运行命令文件list/read/write 完整工作区导入导出。各后端的差异化实现Docker最完整的本地方案。桌面生命周期命令与其他后端完全一致且额外实现了pageBrowser契约让模型能通过browser_navigate、browser_snapshot、browser_act三个工具直接驱动可见的 Chromium 标签页——不需要任何托管浏览器服务或 API Key。☁️E2B基于e2b/desktop处理生命周期、shell、文件和端口 URL每个 Bot 桌面走同一套 Linux 运行时。Daytona数据库里只存 provider 类型和不透明的providerRef——这只是加速路径而非持久数据。机器丢失或换 provider 时通过 provider 无关契约重建并恢复工作区。Box使用官方 TypeScript SDK机器创建/恢复时noEnv: true两小时 TTL 在活跃期间续期共享运行时在 Box 上创建每 Bot 显示通过受保护的host port --private路由暴露而非默认桌面 API。各后端的源码入口docker-sandbox.ts、e2b-sandbox.ts、daytona-sandbox.ts、box-sandbox.ts。Docker 桌面镜像里装了什么Rakazo 的 Computer 镜像基于debian:bookworm-slim是一个精心裁剪的可用桌面组件作用Xvfb x11vnc noVNC虚拟显示 无密码内网 VNC 浏览器内嵌 Web 桌面DISPLAY:11280x800x24Fluxbox xterm轻量窗口管理器与终端Chromium xdg-desktop-portal完整浏览器并注册为默认 Web 浏览器rakazo-browserxdotool、xdamage自研 xcapture鼠标键盘注入 高效屏幕增量截图git、curl、jq、uv、imagemagickBot 克隆仓库、拉取产物、装 Python CLI 工具镜像以 uid 1000 无特权用户运行运行时无法再安装系统软件——想要更重的工具链应通过可复现的镜像或安装脚本来表达这正是后文换后端能成立的原因。完整定义见 infra/sandboxes/computer/Dockerfile。持久化便携工作区是唯一的持久边界Rakazo 把什么会丢、什么不会丢划得非常清楚会持久便携 Computer 工作区含bots/、shared/、.browser-profiles/下的浏览器 Profile 持久 Home 下的 uv 工具环境与命令垫片不会持久工作区之外安装的系统包如 apt 依赖。一次性 OS 镜像不是磁盘快照换机器就没了。工作区在三个边界点被 checkpoint 到AgentHomeStoreDATA_DIR/homes/computer-home-key运行完成或失败时显式停止前空闲挂起前。新机器或替换机器在使用前会先导入最近一次存储的工作区。导出远程工作区前后端会先让桌面浏览器静默保证 Profile 数据库和登录态被一致拷贝只有.browser-profiles里的临时缓存/锁文件被排除。生产部署需把DATA_DIR放在 Rakazo 自有的持久卷上并加密、异地备份。这套机制让未来从 E2B 迁到 Daytona变成一件可以实际操作的事而不是试图翻译厂商私有 VM 快照。终端与文件窗口看得见的操作历史Web 和桌面端的 Computer 视图在屏幕上方有一个 dock可以从里打开终端和文件浏览器终端展示 Bot 在计算机上做过的每件事实时和历史shell命令脱敏后 输出尾部、write_file/attach_file/open_path/launch_app各一行含写入大小或错误。只读工具如read_file不记录文件浏览和文本预览在计算机停止时也能通过存储的工作区进行窗口可见时目录会定期自动刷新Bot 的每次改动无需重开即可看到下载和上传则需要计算机处于运行状态。安全边界与运维租约、更新与恢复几个容易被忽略但很关键的细节容器即安全边界CDPChrome 调试协议只绑定容器 loopback 接口不作为主机端口发布更新与恢复是持久化后台作业Computer 级预留reservation会在操作期间排除新的执行租约、停止、接管和空闲挂起进度独立于 provisioning fence 存储报告的是真实生命周期阶段而非估算百分比崩溃恢复停止心跳 10 分钟的 Worker 被标记为 interrupted 并持续保留预留若 Worker 永久消失服务器属主需在确认 Worker 与 provider 操作已停止后才能用 server-owner 专属的Release computer动作释放。仅凭一个陈旧心跳永远不足以授权接管。多 Bot 桌面的并行性由回归测试保证Docker 回归测试会在隔离容器禁用网络 假浏览器状态中验证并行 Chrome 桌面访问不同站点、独立 Cookie、释放后的 Profile 持久化、传输拆除以及槽位复用后旧 view/control 令牌被拒绝测试文件见 team-desktops.docker.test.ts。本地跑起来从零到一块屏幕想亲手验证这套架构最快的路径是 clone 仓库后按自托管指南启动 Docker 栈git clone https://gitcode.com/gh_mirrors/ra/rakazo cd rakazo本地 Docker Computer 默认开启打开 Web 端创建一个 Bot让它执行任何需要浏览器的任务右侧就会出现它的专属 Linux 桌面——就像上文截图里 Chief 正在打开的 Google 首页那样。自托管细节见 docs/self-host.md可选远程沙箱E2B / Daytona / CreateOS / Box的配置见 docs/self-host-sandbox-providers.md。小结Rakazo 的 computer 运行时架构可以用四句话概括分离——Agent 推理在服务端桌面操作在沙箱中间是干净的SandboxProvider契约隔离——每 Bot 一个 X 显示、一个 Chrome Profile、一套围栏租约状态永不串号可插拔——Docker、E2B、Daytona、Box 共享同一套生命周期命令换后端只需恢复工作区可持久——便携工作区是唯一持久边界checkpoint 时机明确迁移不依赖厂商快照。这套设计让每个机器人一台自己的 Linux 桌面不是一句营销口号而是一套有契约、有测试、有恢复路径的工程实现。【免费下载链接】rakazoOpen-source Grok Bot alternative. Choose your own model and sandbox.项目地址: https://gitcode.com/gh_mirrors/ra/rakazo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表