跳到正文

沙箱

Sandbox

高级通用

沙箱(Sandbox)是给程序或 AI Agent 划出受限运行范围的机制,限制它能访问的文件、网络和其他资源。它解决的是不可信代码或自动化操作可能影响宿主环境的问题,例如先在隔离环境中试跑生成的脚本。

你可能会说:「我想让 AI 先试跑它写的脚本,但别让它碰我的项目文件和线上数据。」

读之前建议先了解(这是一个高级概念)

动手看看

试跑生成脚本沙箱受限运行临时目录宿主与外网未触达
1

AI 刚生成一段处理图片的脚本。先把它放进沙箱试跑,而不是让它直接在宿主环境里执行。

要点

  1. 1

    先划定能接触的资源

    你可以把沙箱理解成一块有边界的工作区:程序只能接触开放给它的文件、网络连接和系统能力。边界具体有多严,要看所用的隔离方式和配置。

  2. 2

    隔离运行不等于毫无风险

    如果你把真实密钥放进沙箱,或允许它访问线上数据库,里面运行的代码仍可能使用这些资源。所以我们不只看代码跑在哪里,还要看给了它什么权限和数据。

  3. 3

    临时产物要有带出规则

    让 AI Agent 在沙箱里生成页面时,它可能还需要把修改后的文件交给你。我们可以只开放指定的输出目录,再检查差异;这样既能取回成果,也不会默认接受所有改动。

容易混淆的地方

沙箱限制的是程序运行时能接触什么;权限控制更宽泛,也包括判断某个用户能否查看或操作产品功能。预发布环境则主要用于上线前验证:它即使使用测试数据,也未必限制进程读取文件或访问网络。你可以在预发布环境里使用沙箱,但两者不能互相替代。

什么时候用

适合用

  • 让 AI Agent 运行刚生成的脚本或命令时,先限制它能读写的目录和能访问的网络。
  • 做在线代码练习工具时,让用户提交的程序在隔离环境中执行,再返回运行结果。
  • 接入第三方插件时,把插件的文件和网络访问限制在实现功能所需的范围内。

不适合用

  • 只是想控制后台员工能否看到客户订单时,用身份认证和权限控制;沙箱不负责判断用户身份。
  • 只是想在上线前检查新版本的页面和接口时,用预发布环境;这本身不需要运行不可信代码。
  • 只是担心误删自己写的项目文件时,先用 Git 提交和差异对比保留、检查改动;不必为此搭沙箱。

练一练

你做了一个网站,想让 AI Agent 执行它刚写的图片处理脚本,输入是用户上传的文件,项目中还存着线上服务的密钥。哪种安排最符合沙箱的用途?

让 AI 帮你做

请把你生成的图片处理脚本放在沙箱中试跑:只读取我指定的测试图片,只向指定输出目录写文件,不注入线上密钥,也不开放额外网络访问。运行后告诉我实际使用了哪些资源,并列出产物。

接下来学什么