沙箱可以理解成大模型智能体出门干活前被装进的一间透明工作房:它能在里面自由读写、跑脚本、访问网络,但墙外的资源碰不到,墙内的东西也不能随意搬出去。这篇按一次执行的完整时间线,把文件与网络两条隔离线逐步拆开讲。
沙箱到底隔开了什么
先给一个可带走的判断:隔离的对象是「能力」而不只是内容。Agent 在沙箱里照样能看到任务材料,但对文件系统的写入被限制在一个专用目录,对网络的访问必须经过一层受控代理。举个例子,用扣子搭一个自动整理表格的工作流,脚本生成的中间文件只会落在沙箱内的临时目录,任务结束后要么被显式导出,要么随沙箱一起销毁,宿主机上的其他目录对它完全不可见。当两个 Agent 在同一环境里同时改一个文件时,边界也是分流的第一道防线,具体的处理思路见两个 Agent 冲突了怎么处理。
文件隔离:一张只进不出的桌子
文件方向的常见做法是挂载加命名空间:把沙箱内的路径映射到宿主机一块独立区域,路径看起来一样,实际指向的却是隔离空间。进来的是任务输入,发生的每一次读写都落在映射区,出去的只有规则允许的产物。类比也有失效的时候:这张桌子并非万无一失,如果配置不当、误挂载了宿主机根目录,隔离就成了摆设,所以工程上还要叠加执行前的权限关卡,同子域里讲这道闸门的文章可以接着读。另外,临时目录的清理节奏要与产物导出的声明配套,否则要么堆积垃圾,要么误删成果。
网络隔离:把网线换成传达室
网络方向通常靠代理加白名单:沙箱内进程发出的每个请求先到达代理,代理核对目标域名是否在允许清单里,放行的转发出去,不放行的直接丢弃并留下记录。这样即便智能体被诱导生成了奇怪的目标地址,请求也出不去。豆包、Kimi 这类产品在执行联网浏览任务时,底层大多走类似的受控通道,只是各家清单的宽严不同。请求被拒绝或超时之后怎么办,则交给工具调用失败是怎么重试的里的退避与换路机制。
串起一次执行的完整时间线
任务启动时,沙箱先拉起:文件区挂载好、网络代理就位;执行中,脚本读写文件、发起请求,全部被限定在边界之内;任务结束时,沙箱整体销毁,临时文件清空,只留下声明过的产物。浏览器类任务里,这套边界还会与页面操作配合运作;若碰上网页改版了 Agent 怎么办那样的失败重跑,重跑也仍然圈在同一个沙箱里,不会扩散到外部环境。
三条隔离线各自怎么落地,越界与检查一并列在这里。
| 隔离线 | 怎么做到 | 越界时会怎样 | 配套检查 |
|---|---|---|---|
| 文件 | 挂载加命名空间,沙箱内路径映射到宿主机一块独立区域 | 宿主机其他目录完全不可见,出去的只有规则允许的产物 | 产物是否声明了导出路径;临时目录是否随沙箱销毁 |
| 网络 | 代理加白名单,逐个核对请求的目标域名 | 不放行的请求直接丢弃并留下记录 | 白名单是否只放必需域名 |
| 执行全程 | 启动时挂载文件区与代理,执行中全程受限,结束时整体销毁 | 失败重跑仍圈在同一个沙箱里,不扩散到外部环境 | 失败重跑是否还在边界内 |
沙箱自查清单:产物是否声明了导出路径;临时目录是否随沙箱销毁;网络白名单是否只放必需域名;失败重跑是否还在边界内。四项都对,隔离才算站得住。
最后带走一个判断:沙箱的价值在于让大胆尝试有了可控的失败范围,而不是限制智能体的聪明。边界内可以随便试,边界外寸步难行——正是这种不对等,让自动化任务敢真正跑起来。
隔离的松紧怎么定
沙箱并非越严越好:全隔离的任务跑不快,全放开又危险,常见做法是按任务风险分级——只读类任务给窄边界,涉及写入与外部调用的给专用目录加白名单,高风险动作再叠加人工确认。共享资源如缓存与临时空间要单独划区,谁写谁读都有记录,避免并行任务互相污染。另一个常被忽略的点是超时兜底:沙箱内任务卡死时要能从外部强制回收,否则隔离区反而成了收容所。给一个参考尺度:浏览器类任务按会话隔离,脚本类任务按次隔离,长驻任务按天重建,重建频率以一周为上限比较稳。判断口诀:能重建的隔离才敢用,不能重建的边界迟早失守。
聊聊沙箱的常见疑问
- 沙箱会让任务明显变慢吗?:拉起与销毁有固定开销,通常在秒级以内,换来的是边界内的试错自由,长任务里这点开销占比很小。
- 沙箱里能访问公司内网吗?:取决于白名单配置,只有显式放行的地址才可达,这正是防止它乱连的意义。
- 沙箱和虚拟机是一回事吗?:虚拟机隔出一整台机器,沙箱往往轻量得多,只圈住文件与网络能力,启动快、销毁也快。


