ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

为什么多个Rakazo机器人能共用一台电脑完全互不干扰:屏幕租约与浏览器配置隔离内幕

为什么多个Rakazo机器人能共用一台电脑完全互不干扰:屏幕租约与浏览器配置隔离内幕 为什么多个Rakazo机器人能共用一台电脑完全互不干扰屏幕租约与浏览器配置隔离内幕【免费下载链接】rakazoOpen-source Grok Bot alternative. Choose your own model and sandbox.项目地址: https://gitcode.com/gh_mirrors/ra/rakazoRakazo 是一个开源 AI 机器人平台Open-source Grok Bot alternative允许你自己选择模型与沙箱。它最有意思的设计之一是多台 Rakazo 机器人Bot可以共享同一台团队电脑Team Computer同时看屏幕、点鼠标、开浏览器却互不干扰。本文带你拆解背后的两大核心机制屏幕租约Screen Lease与浏览器配置隔离Browser Profile Isolation。一台电脑多个机器人Team Computer 模式传统做法里一个机器人配一台虚拟机成本高、扩展慢。Rakazo 的 docs/computer-runtime.md 明确说明每个活跃的团队机器人都会获得自己的 X 显示屏幕和独立的 Chrome 进程并配有一份以机器人身份命名的持久化浏览器档案。登录状态、Cookie、浏览历史彼此独立档案绝不会从一个机器人克隆、合并或在桌面释放时被删除。也就是说一台电脑可以同时承载100 个以上的机器人档案同时开启的桌面数量只受 RAM、CPU 和调试端口数量限制可通过SANDBOX_TEAM_SCREEN_LIMIT显式设上限。那么互不干扰到底是怎么做到的靠的是下面这两层机制。屏幕租约谁在看、谁在操作一目了然 ️租约 ID 与栅栏号Fence屏幕访问的最小单元是租约Lease。每次机器人执行任务Run并获得屏幕使用权时会拿到一个形如runId:fence的租约 ID代码非常简洁位于 screen-lease.tsfence栅栏号是一个单调递增的计数器只有栅栏号更新的请求才能抢占现有租约canTakeScreenLease旧持有者即使后来复活想释放屏幕也会因为栅栏号过时而被拒绝canReleaseScreenLease这就是分布式系统里经典的** fencing token** 技巧彻底杜绝了僵尸请求覆盖新主人的竞态问题。每屏单主不同机器人抢屏会被礼貌拒绝在进程层面computer-screens.ts 中的SingleScreenClaimTracker按屏幕会话键默认即机器人 ID追踪每个屏幕的占用者同一个机器人再次申请屏幕 → 通过另一个机器人来申请 → 抛出ComputerScreenUnavailableError提示屏幕暂时繁忙稍后重试文件和 Shell 工具仍可用所以即使两个机器人同时在线点鼠标的动作也不会串台。用户接管15 分钟的控制租约人类随时可以接管Takeover某块屏幕此时系统会颁发一个控制租约默认有效期 15 分钟见 computer-control.ts。关键细节每次续期、过期都在数据库里以updateMany 租约 ID 匹配的方式完成只认当前那张租约票过期清理逻辑租约到期后系统会先吊销屏幕控制权限再清空调度字段并让被暂停的任务排队继续执行enqueueTakeoverContinuation机器人持有活动执行租约时用户的接管请求会收到 HTTP 409请先停止机器人避免人机同时操作冲突数据库侧的执行租约表由迁移 0009_computer_execution_leases 建立团队电脑模式则由 0008_team_computers 引入。浏览器配置隔离一人一档Cookie 永不串号 每个机器人独立的 Chrome 档案目录每个机器人的 Chrome 都以独立参数启动核心是--user-data-dir指向该机器人专属的档案目录。所有受管沙箱Box、E2B、Daytona、CreateOS、Docker都把浏览器档案统一放在可移植工作区的.browser-profiles/下例如 box-sandbox.tsBOX_BROWSER_PROFILES ${BOX_WORKSPACE}/.browser-profiles结果就是A 机器人在某网站登录B 机器人打开同一网站依然是未登录状态各自的 Cookie、历史记录、书签完全独立。档案还会随工作区快照持久化换机重建后原样恢复见 computer-workspace.ts 的恢复流程。页面会话隔离键电脑ID::机器人ID对于进程内的页面浏览器模拟器/离线场景page-browser-session.ts 定义了隔离键规则在团队电脑上隔离键必须包含正在运行的机器人身份computer.id::botId绝不能只用电脑 ID。注释还特别提醒不要加入租约栅栏号——同一个机器人重新获得屏幕时必须延续自己的页面状态和元素引用。快照时只跳过临时文件工作区做快照/导出时只有档案里的缓存、锁文件会被剔除如SingletonLock、Cache登录状态等核心数据完整保留见 shouldSkipPortableWorkspaceFile。协作而非互斥协调机制如何兜底 光有隔离还不够Rakazo 用了几处精巧的礼让逻辑保证并发不出错快照避让导出远程工作区前会让浏览器静止quiesce。若其他机器人还持有执行租约当前任务会推迟快照由最后结束的任务或空闲任务统一保存见 checkpointRunComputerWorkspace多屏命令按 DISPLAY 路由所有截图、鼠标动作命令都带DISPLAY:N前缀精准打到对应机器人的屏幕见 extra-displays.ts独立屏幕网关所有桌面共享一个带令牌的屏幕网关每块屏幕绑定唯一的本地 Unix socket显示槽位被回收后旧连接也无法重定向到新主人空闲回收闲置机器人不会一直挂 Chrome空闲任务在导出快照前会先抢占电脑防止新机器人插进来详见 computer-idle.ts⚠️ 需要说明的安全边界团队机器人共享同一个操作系统用户和 X11 访问权限屏幕租约协调的是工具调用而不是互不信任的进程。如果你的工作负载需要硬隔离请使用独立电脑。小结一张门票 一个档案柜机制解决的问题核心位置屏幕租约runId:fence同一块屏幕同时只被一个驱动者操作screen-lease.ts单屏单主追踪不同机器人抢屏时礼貌拒绝computer-screens.ts用户控制租约人机交接安全、可过期、可恢复computer-control.ts每 Bot 独立 Chrome 档案登录/Cookie/历史互不串号page-browser-session.ts工作区快照避让并发下快照一致computer-workspace.ts一句话总结Rakazo 用带栅栏号的租约管谁在操作用按机器人命名的档案目录管谁在什么状态再加一套快照与回收协调逻辑就让多个机器人能安全、并发地共用一台电脑。想深入了解建议通读 docs/computer-runtime.md 与packages/adapters/src/下的沙箱实现。【免费下载链接】rakazoOpen-source Grok Bot alternative. Choose your own model and sandbox.项目地址: https://gitcode.com/gh_mirrors/ra/rakazo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表