
沙箱 Web 浏览器在明确限制的浏览器环境中运行 Web 内容,因此故障或恶意页面影响主机、其他用户或后续会话的方式较少。 对于 AI 代理来说,“沙箱”可能意味着多种不同的东西:Chromium 的进程沙箱、单独的浏览器配置文件、本地应用程序工作区、容器、虚拟机、网络策略或临时远程会话。 你需要先命名边界,然后才能判断它。
什么是沙盒网络浏览器?
一个有用的定义包含三个部分:浏览器进程受到约束,浏览器状态受到范围限制,以及周围系统限制会话可以达到或保留的内容。 如果产品仅在另一个选项卡中打开 URL,则不足以将其称为安全沙箱。 如果它启动了一个新的远程浏览器,但为该浏览器提供了广泛的网络凭据,那么“短暂”并不自动意味着低风险。
Chromium 本身将浏览器和渲染器进程分开,并应用特定于平台的沙箱机制。 然后,服务可以添加新的用户数据目录、容器或虚拟机、出站网络控制、秘密注入、文件安装、资源限制和拆卸。 每层保护不同的资产并具有不同的故障模式。
对于 AI 代理来说,威胁模型比恶意 JavaScript 更广泛。 代理可能会遵循页面上的提示注入,选择错误的控件,暴露表单中的秘密,下载不安全的文件,或重复使用特权会话来执行意外任务。 因此,浏览器隔离必须与代理权限和确认策略配合使用。
代理应该使用本地沙箱还是远程沙箱?
按这个顺序判断:身份状态、风险边界、运行规模、人工接管。哪一项是不能妥协的硬要求,就由它决定路线。
- 任务必须沿用已授权的登录状态、本地扩展或设备绑定状态时,选择本地持久浏览器。
- 不可信页面必须与用户设备隔离、每次运行都要从干净环境开始,或需要大量并发会话时,选择远程沙箱。
- 用户必须随时查看、登录、确认或叫停任务时,选择已经验证过实时画面和人工接管能力的本地或远程浏览器。
- 既要保留身份连续性,又要把风险隔离到设备之外时,选择混合架构:把依赖账户的步骤留在本地,把匿名或高并发任务交给一次性远程会话。
| 决策因素 | 本地持久浏览器 | 远程沙箱 |
|---|---|---|
| 现有登录 | 可以重用授权的本地配置文件或专用本地状态 | 通常根据提供者规则导入、重新创建或注入状态 |
| 人类接管 | 在用户附近直接可见 | 取决于提供商实时查看/控制支持和延迟 |
| 与主机隔离 | 浏览器/配置文件边界; 主机仍然是本地的 | 可以添加与用户主机分离的容器或VM |
| 并发 | 受一台机器和本地争用的限制 | 专为配置队列、配额和并行会话而设计 |
| 托管 | 状态和工件保留在用户的计算机上,除非同步 | 状态、流量和工件进入提供商控制的基础设施 |
| 维护 | 用户或团队拥有浏览器、计算机、更新和容量 | 提供商拥有更多基础设施; 客户拥有策略和集成 |
哪些隔离层真正重要?
分别评估至少六层。 进程隔离限制了受损渲染器可以对其他进程执行的操作。 配置文件隔离将 cookie、本地存储、历史记录和扩展分开。 文件系统隔离限制可读和可写路径。 网络隔离控制目的地、DNS、代理和专用网络范围。 计算隔离添加了容器或虚拟机边界。 租户隔离可防止一个客户的浏览器、日志、机密或工件进入另一个客户的工作负载。
还将生命周期与隔离分开。 十分钟后删除会话会降低持久性,但并不能证明该会话在活动状态下无法到达敏感网络。 相反,如果有意限制配置文件、代理权限和任务范围,则对于狭窄的受信任帐户工作流程来说,持久本地空间是可以接受的。
登录状态和数据保管有何不同?
本地持久性浏览器可以将 cookie、本地存储、客户端证书和兼容的扩展保存在靠近用户的地方。 这消除了重复的登录工作,但引发了过度访问的后果:代理可能会继承比任务所需的更多的帐户状态。 首选专用工作配置文件或空间,仅允许所需的站点,并要求确认不可逆转的操作。
远程沙箱通常开始清理,然后接收存储状态、登录流或提供程序管理的持久性。 这提高了再现性,但将一些浏览器状态和流量发送到远程控制平面。 检查加密、区域、保留、日志、重放工件、员工访问、子进程隔离和删除行为。 不要上传个人资料,因为提供商支持存储状态字段。
会话过期仍然是应用程序行为。 MFA、风险检查、设备绑定、IP 更改和 cookie 轮换可能会使任一路径失效。 可靠的代理会检测到过期的会话,在错误页面上执行操作之前停止,然后返回控制权或遵循批准的重新身份验证流程。
人工接管和调试有何不同?
本地可见执行将浏览器放在用户旁边,当人们必须检查上下文、解决身份验证步骤或立即停止不安全操作时,这非常有用。 专用的本地空间还可以避免将代理操作混合到不相关的日常选项卡中。
远程浏览器环境可能会公开实时会话表面、命令流、日志、记录和重播。 这些功能可以支持分布式团队和运行后调试,但接管延迟、访问控制、保留和区域可用性仍然是特定于实现的。 在您实际操作的环境中验证它们。
在实时验证的 Airbnb 运行中,Claude Code 使用 ego-browser 路径验证可见 UI 的登录,搜索东京 10 月 20 日至 23 日和两名房客,应用整个家庭过滤器,打开两个列表,并比较可见字段,同时专用空间仍处于代理控制之下。 它不会检查会话 cookie 或执行预订、愿望清单、消息传递或帐户操作。

运行仅比较两个页面明显暴露的内容。 房源 A 显示的是一套价格为 JPY 58,188 的服务式公寓,并有 577 条评论给出 4.89 评级。 清单 B 显示的出租单位价格为 43,154 日元,并有 489 条评论给出 4.9 评级。 两个页面都使用相同的通用“24 小时免费取消”措辞,因此代理在未进入预订面板的情况下无法推断特定日期的取消条款。
比较完成后,用户选择了接管。 相同的空间和列表保持打开状态,状态从“代理处于控制状态”更改为“您处于控制状态”,并且可用操作更改为“返回代理”。 这是直接的接口级切换观察; 它没有规定每个网站或中断的操作将如何运行。

并发、重放和成本有何不同?
本地计算机的 CPU、内存、显示器、配置文件锁和网络容量都是有限的。 它适用于交互式或低并发工作,但并行代理不得立即改变相同的配置文件。 远程服务可以提供许多独立的会话并集中记录,但配额、启动时间、浏览器分钟数、代理流量、存储和可观察性功能会影响成本。
成本比较需要一个匹配的单位:完成的任务,而不是单独的原始浏览器分钟。 包括设置、重试、代理流量、CAPTCHA 或 MFA 切换、状态创建、工件存储、失败会话重播和操作员时间。 我们没有针对本文的可比较的计费遥测,因此我们不会发布获胜者或价格表。
我们的本地持久性测试显示了什么?
我们在一个专用的 ego (lite) 空间中使用了 ego-browser 0.5.0.31 和 Chromium 152.0.7977.54。 第一个 Claude Code 进程完成了只读 Airbnb 比较并将空间交给用户。 用户返回控制权后,新的 Claude Code 进程恢复 Space 12 并检查其现有选项卡,而无需导航、重新加载或更改它们。
| 检查 | 观察结果 |
|---|---|
| 新进程找到的相同空间 | 是的,空间12 |
| 东京搜索结果选项卡保留 | 是的,第1页 |
| 保留了两个列表详细信息选项卡 | 是的,p2 和 p3 |
| 可见列表仍然活跃 | 是的,p3 |
| 需要导航、重新加载或选项卡突变 | 没有 |

此观察结果在该计算机上的两个 Claude Code 进程之间建立了连续性:相同的空间、三个选项卡、标签、标题、URL 和活动列表仍然可用。 它不能证明无限期的身份验证、浏览器或设备重新启动后的持久性、与每个网站的兼容性或远程沙箱行为。
我们的远程代理运行显示了什么?
为了进行中立的设备外检查,我们在 Google Colab Linux 运行时中启动了无头 Chromium,并在 10 月 20 日至 23 日、两名成人和整个家庭中打开了相同的东京公共搜索。 未提供 Airbnb 凭据。 两次运行在 17.66 和 16.42 秒内完成。 两者都返回 HTTP 200,呈现列表和地图,提取相同的五个不同的房间链接,并且没有记录任何阻止信号。


这缩小了早期的证据差距:一个干净的远程虚拟机完成了这个匿名公共页面探测两次。 它仍然没有测试多租户隔离、提供商管理的机密、会话重放、实时接管、地理出口、帐户重用或拆卸保证。 这些需要具有授权帐户和单独冻结的测试计划的托管远程浏览器环境。
什么时候应该使用混合架构?
当同一系统具有不兼容的信任区域时,请使用混合。 将依赖于帐户的、用户可见的步骤路由到专用本地空间,并将匿名发现、不受信任的页面或大型扇出工作路由到一次性远程会话。 仅在区域之间传递最小结果,例如公共 URL 或规范化记录,而不是整个浏览器配置文件。
安全路由器会考虑目标信任、所需身份、数据敏感性、并发性、地理出口、接管要求以及官方 API 是否可以取代浏览器工作。 当没有路由符合策略时,它应该拒绝任务,而不是默默地选择最有特权的浏览器。
最小集成是什么样的?
本地路径创建一个专用的浏览器工作区、导航现有页面、执行有界任务、验证结果并关闭代理创建的页面。 远程路径向提供者请求会话,连接自动化客户端,执行相同的任务,仅存储所需的工件,甚至在失败时也终止会话。
route = policy.choose({
targetTrust, requiredIdentity, concurrency, takeover
})
if (route === "local") {
runInDedicatedVisibleSpace(task)
} else if (route === "remote") {
session = await sandbox.create({ ttl, egressPolicy })
try { await runTask(session.endpoint) }
finally { await sandbox.terminate(session.id) }
} else {
throw new Error("No safe browser route")
}生产代码还应设置超时、幂等密钥、允许的来源、下载隔离、秘密范围、工件保留以及不包含原始凭据的审核记录。
如何验证浏览器沙箱?
- 编写资产和攻击者模型:主机文件、内部网络、凭据、另一个租户、后续会话和人工操作员。
- 分别映射浏览器进程、配置文件、文件系统、网络、计算、租户和生命周期边界。
- 运行金丝雀任务,仅尝试批准的测试读取和写入,然后证明禁止的主机路径和目标仍然无法访问。
- 使用命名的非秘密标记验证干净启动和持久性行为。 确认拆卸实际上删除了预期状态。
- 测试过期、崩溃、重试、失去控制、弹出、下载和中断登录路径。
- 使用实际用户和访问策略验证实时接管和撤销,而不是营销屏幕截图。
- 根据保留策略检查工件、日志、重播、备份并支持访问。
- 在实际并发下重复并仅当所有分母都可用时记录已完成的任务成本。
ego (lite) 适合什么场景?
ego (lite) 首先是一款为人和 AI Agent 协同工作设计的本地 Chromium 浏览器,品类上属于 AI Agent 浏览器。它不是 AI Agent 本身,也不是挂在 Chrome 上的浏览器扩展程序、远程云浏览器或 Playwright 这类浏览器自动化框架。你可以像使用普通浏览器一样使用它;Claude Code、Codex、Cursor、Gemini CLI 等兼容 Agent 则通过 ego-browser 操作它。ego (lite) 目前运行在 macOS 上,可以导入 Chrome 的标签页、书签、密码、扩展程序、Cookie、登录会话和浏览器配置文件。每个 Agent 任务都在独立的 Space 中运行,你可以查看执行过程、暂停任务或随时接管。
基于这个定位,ego (lite) 适合需要沿用已授权登录态的网页工作,例如让 Agent 在你已经登录的 Gmail、Notion、LinkedIn、内部工具或 SaaS 后台中查询信息、整理内容和填写表单;也适合需要你看得见并能随时介入的跨页面研究、比价、浏览器测试和长流程操作。你还可以让多个 Agent 在各自的 Space 中并行执行任务,自己继续使用其他标签页。因为浏览器在本机运行,它也适合不想把 Cookie 和浏览会话交给托管云浏览器,并希望任务继续使用本机网络、VPN 或代理的场景。如果核心要求是远程多租户隔离、大规模一次性会话、由服务商控制网络出口,或把不受信任的页面完全隔离在本机之外,应选择远程沙箱或混合架构;如果官方 API 或普通 HTTP 请求已经能完成任务,也没有必要启动浏览器。
哪些来源定义了这种比较?
对于浏览器进程边界,请阅读Chromium的沙盒设计。 对于会话级分离,请阅读 Playwright 的浏览器上下文隔离指南。 对于主机和容器边界,请阅读 Docker 的引擎安全概述。 这些源定义了隔离层和测试原语。 它们并不能证明特定的托管服务正确地实现了每个边界。
常见问题解答
隐身模式是浏览器沙箱吗?
隐身主要改变本地历史记录和存储持久性。 它本身不会添加虚拟机、租户边界、网络白名单或针对权限过高的代理的保护。
远程沙箱总是更安全吗?
没有。 它可以将工作与用户的机器隔离,但安全性仍然取决于租户分离、网络覆盖范围、秘密、提供商保管、保留以及代理允许的操作。
本地浏览器可以重复使用我的登录信息吗?
专用的本地配置文件或授权的导入状态可以保留 cookie 和存储,具体取决于站点政策、到期日、MFA 和产品兼容性。 使用满足任务的最窄型材。
每个代理都应该在新的浏览器中运行吗?
新会话对于不受信任或可重复的工作很有用。 当身份连续性是任务的一部分并且有意限制权限时,持久会话是合理的。