刚开始使用一个能执行任务的AI Agent,很多人遇到的第一个困惑不是它能做什么,而是它为什么总在问我。

我让它修改一个文件,它问我是否允许写入;它准备运行测试,又问我是否允许执行命令;它要安装依赖、读取网页或调用外部服务时,还会弹出网络访问确认。任务明明是我发起的,为什么每走一步都要重新批准?

这些弹窗看起来像是在打断工作,其实是在提醒你:Agent准备执行一个可能影响本地环境或外部系统的动作。它需要确认的,通常不是「我是不是想让它继续」,而是「我是否允许它跨过这一道权限边界」。

也就是说,系统不是在每一步重新问你「还要不要继续」,而是在判断Agent这一步是否仍然处于被授权的范围内。这个范围,就是沙盒。

所谓沙盒,可以先把它理解成一套门禁系统。Agent能进入哪些目录、能修改哪些文件、能运行哪些命令、能连接哪些网络地址,都由系统提前划定。它只能在这个范围内工作,超出范围就会被拒绝,或者停下来询问你。

因此,审批弹窗是沙盒边界在产品界面上的表现。沙盒本身由系统强制执行,它不是模型自己在心里记住的一句「不要越权」。它也不一定意味着一定要启动一个虚拟机或容器,容器、虚拟机、操作系统权限、网络代理,都可以成为实现沙盒的技术手段。

一、每一次确认,实际上是在确认哪道边界

Agent走到不同步骤时,系统看到的风险并不一样:

Agent准备做什么 它可能跨过的边界 为什么可能需要确认
读取文件 数据访问边界 文件里可能包含不该暴露的内容
修改或删除文件 本地写入边界 会改变现有数据,甚至造成不可逆影响
运行Shell命令 程序和进程边界 命令可能启动程序、修改环境或调用其他工具
访问网络 网络边界 可能下载内容、上传数据或连接内网服务
调用外部API 外部系统边界 可能发布内容、修改数据或产生费用

并不是每一个动作都必须弹窗。通常,处在当前工作区和默认权限范围内的低风险操作可以直接执行;超出范围的操作,才会被系统拦截、请求确认或直接拒绝。这样做的目的,是让Agent能够连续完成日常任务,同时把真正需要你判断的动作单独提出来。

这里还有一个容易混淆的例子。你在A文件夹中启动一个项目,终端的当前工作目录可能是:

/Users/you/A/

这只代表命令默认从A文件夹开始执行,并不自动意味着Agent只能访问A。只要底层进程仍然拥有整个用户目录的权限,Agent理论上仍然可能通过命令访问:

/Users/you/B/ /Users/you/Documents/ /Users/you/.ssh/

真正的沙盒需要进一步规定:

允许读取:A/ 允许写入:A/ 允许运行:项目所需的命令 禁止访问:A/之外的目录

因此,「从哪里启动」是工作目录问题,「能访问哪里」是权限边界问题。两者经常同时出现,但不是一回事。

你在界面里看到的是一个确认弹窗,系统背后处理的却是文件、网络、进程和外部系统之间的边界。理解了这一层,沙盒就不再是一个抽象的工程术语。

图下注释:Agent从A目录启动,不代表它拿到了整台电脑的钥匙。

二、沙盒到底是什么

可以把电脑想象成一栋大楼,里面有项目文件、个人文档、浏览器、数据库和系统配置。

Agent像一名执行任务的工作人员。它需要进入某些房间,使用一些工具,但不应该拿着一把能打开整栋楼的万能钥匙。

沙盒就是这套门禁系统:

  • 哪些目录可以进入;
  • 哪些文件可以读取、修改或删除;
  • 哪些网络地址可以连接;
  • 哪些程序可以启动或控制;
  • 哪些资源和设备可以使用;
  • 哪些动作必须先经过用户确认。

这里有一个重要的区分:沙盒本身主要负责「技术上能不能做」,审批机制负责「什么时候要先问你」。

比如,Agent要修改当前项目里的代码,可能属于已授权范围,可以直接执行;它要修改工作区之外的文件、访问网络或调用有副作用的外部工具时,系统可能会拒绝,或者弹出审批请求。

三、Agent是怎么被约束住的

Agent并不是一个单独的模型。一个能执行真实操作的Agent,至少还需要工具和执行环境。

📐 Mermaid 图表(请查看原文)

大模型负责判断「下一步想做什么」,比如读取一个文件、运行测试或调用搜索工具。真正执行之前,Harness或工具执行层会检查这次调用是否符合权限规则。最后,操作系统、容器或其他运行时机制再把边界落实到实际执行过程中。

所以,产品里通常有几层东西一起工作:

层次 主要作用
LLM 理解任务,生成计划或工具调用参数
Harness 管理Agent循环、工具、权限、状态和审批流程
沙盒 限制文件、网络、进程和资源访问范围
工具执行层 把模型的调用请求转换成实际操作
审批机制 在高风险或越界操作前请求用户确认

拿「运行测试」这个动作举例。模型通常不会直接接触操作系统,而是先提出一个工具调用请求,类似这样:

{ "tool": "shell", "command": "npm test", "cwd": "/Users/you/A", "network": "off" }

实际字段会随产品不同而变化,但执行链路大致相同:

  1. LLM根据任务判断需要运行测试;
  2. Harness把这个意图转换成结构化的工具调用;
  3. 权限层检查命令、工作目录、文件范围和网络状态;
  4. 操作系统或运行时在受限环境中启动命令;
  5. 命令输出、错误信息和生成的文件再返回给LLM,供它决定下一步。

这里有一个产品上很重要的细节:npm test看起来只是测试命令,但它可能继续调用项目脚本、创建子进程、读取配置、访问依赖或启动服务。因此,系统不能只看命令名字,还要结合工作目录、环境变量、网络权限和子进程规则一起判断。

如果只在Prompt里写「你只能操作当前项目」,这仍然只是行为约定。真正的安全边界,必须由运行时、操作系统或权限系统强制执行。

四、最重要的三类沙盒边界

1. 文件沙盒:Agent能进入哪些房间

文件沙盒限制Agent能够看到和修改哪些内容。最直观的规则是:

A文件夹:允许读取、创建和编辑 B文件夹:禁止访问 系统目录和密钥目录:禁止访问或额外保护

这里还要进一步区分读权限和写权限。一个Agent可能可以读取整个项目,但只能修改某些子目录;也可能可以创建新文件,却不能删除已有文件。

文件沙盒要防的不只是「误删」。项目里的配置文件可能包含数据库地址、API Key和内部服务信息。如果Agent能够读取任意目录,它接触到的敏感信息就会明显增加。

再往下看一层,文件沙盒也不是简单地在界面上隐藏几个文件夹。执行层通常还要处理路径解析、相对路径、软链接和子进程继承权限等问题。比如,Agent请求访问A/../B,系统不能只检查字符串里有没有「A」,而要解析出它最终指向的真实路径;如果A里面有一个指向B的软链接,也不能因为链接位于A内,就默认允许它读取B。

这也是为什么「只在Prompt里提醒Agent不要访问其他目录」不够。真正的文件边界需要在操作系统或运行时层面生效,最好还要有日志记录:Agent访问了哪个路径,读取还是写入,是否被拒绝。

2. 网络沙盒:Agent能和谁通信

网络权限不只是「能不能上网」,还包括它能连接哪些目标:

  • 公共网站和文档服务;
  • 包管理器和依赖下载源;
  • 本机启动的服务;
  • 公司内网和云平台接口;
  • 生产环境API和远程数据库。

如果网络完全开放,风险会从本地文件扩展到外部世界。Agent可能误把代码、配置或用户数据上传出去,也可能安装不可信依赖,访问本机或内网服务,调用产生费用或真实副作用的API。

因此,很多Agent产品会默认关闭命令的网络访问,或者采用按域名放行的方式。比如只允许访问依赖源和指定文档站点,不允许访问任意地址;涉及发布、删除、支付或修改生产数据的操作,还需要额外审批。

网络沙盒还有一个容易被忽略的边界:本机服务。即使Agent不能访问公网,如果它可以连接localhost上的数据库、后台管理服务或其他项目,也可能越过原本的任务范围。

网络控制通常会分成两步:先决定命令有没有网络能力,再决定它能连接哪些目标。常见做法包括默认关闭网络、按域名设置允许列表、限制本机和内网地址,以及通过代理记录出站请求。这样做的原因是,网络权限一旦打开,脚本和它创建的子进程通常也会继承这项能力。

所以,用户看到的「允许访问网络」弹窗,背后可能包含几个不同判断:它要访问哪个域名?是下载依赖、读取文档,还是上传文件?目标是公网、localhost还是公司内网?这也是为什么一个笼统的「允许联网」在产品上通常不够精细。

3. 进程沙盒:Agent能启动和控制哪些程序

进程就是一个正在运行的程序,例如Node.js服务、Python脚本、数据库、浏览器或测试命令。

进程沙盒通常限制Agent:

  • 能启动哪些程序;
  • 能查看哪些进程;
  • 能结束哪些进程;
  • 能创建多少个进程;
  • 能占用多少CPU和内存。

如果没有这类限制,Agent执行一个清理、重启或调试命令时,可能误关闭其他项目的服务,读取其他程序的运行信息,或者因为不断创建后台任务而拖垮机器。

对产品经理来说,不必一开始就深入操作系统的进程模型。先记住一个判断就够了:Agent可以运行完成当前任务所需要的程序,但不应该因此获得控制整台电脑上所有程序的能力。

进程边界还会影响一个常见体验:为什么Agent启动的开发服务,有时会在任务结束后继续占用端口?因为Agent启动的不是一个孤立命令,而是一棵进程树。一个Shell可能继续启动Node.js服务,Node.js又可能创建子进程。如果系统没有统一管理进程组、运行时长和资源配额,就很难保证任务结束后所有后台进程都被清理。

因此,进程沙盒除了「能不能控制别的程序」,还涉及「自己启动的程序能活多久、消耗多少资源、任务结束后是否会被回收」。

五、沙盒不等于容器,也不等于虚拟机

这几个概念经常被放在一起,但它们解决的问题不同。

概念 怎么理解
沙盒 要把Agent限制在什么能力边界内
容器 实现文件、进程、网络等隔离的一种技术
虚拟机 提供更完整运行环境隔离的一种技术
Harness 编排Agent、工具、权限、状态和审批的控制框架
审批机制 决定哪些动作需要先让用户确认

可以把它们放进一个关系里:

Harness负责管理整体执行过程 沙盒负责划定技术边界 容器或虚拟机可以用来实现隔离 审批机制负责管理边界之外的请求

以Codex为例,官方文档把沙盒模式和审批策略分开描述:本地运行时通常通过操作系统级机制限制命令访问的文件和网络;审批策略则决定什么时候需要用户确认。常见的权限模式包括只读、工作区可写,以及几乎取消沙盒限制的高权限模式。具体行为会随运行界面和配置变化,使用时应以对应产品的官方文档为准。

Codex本地运行的官方说明:Sandbox、Agent approvals & security。

六、如果从0到1做Agent,却没有沙盒,会发生什么

假设你做了一个「代码修改Agent」。用户让它修复A项目中的一个登录页面Bug。

如果你的系统把当前用户的Shell直接交给Agent,同时开放整个文件系统和网络,那么它实际上可能拥有这样的能力:

读取整个用户目录 修改任意可写文件 执行任意Shell命令 访问网络和本机服务 读取环境变量中的密钥 调用任意外部API

这时,风险不只来自模型本身。项目中的安装脚本、第三方依赖、网页内容和外部工具返回结果,也可能影响Agent的下一步行为。

图下注释:依赖脚本、环境变量和网络,会把一次普通操作变成扩散风险。

可能出现的结果包括:

  • Agent把B项目的文件当成当前项目的一部分进行修改;
  • 清理命令的路径写错,删除无关文件;
  • 测试脚本读取到数据库配置或云服务密钥;
  • 安装了不可信依赖,执行了远程代码;
  • 调用远程API,创建资源、修改数据或产生费用;
  • 把代码、配置或用户资料上传到一个未经确认的服务。

这里的关键词是「可能」。只要Agent没有相关工具,它就不能凭空访问文件或网络;但一旦你把高权限工具暴露给它,风险就不再是模型回答得好不好,而是它能把什么动作真正执行出去。

一个完整的风险链路:从安装依赖到数据外传

假设用户对Agent说:「帮我安装项目依赖,然后运行测试。」这看起来是一个非常普通的开发任务,但它可能经过这样一条链路:

这里不需要假设模型故意作恶。风险可能来自被篡改的第三方依赖、项目中原本就存在的安装脚本,或者某个工具返回的恶意指令。

一套边界完整的系统,可以在多个位置切断这条链路:不把生产密钥放进Agent环境;限制它只能读取当前项目;默认关闭网络;安装依赖或执行脚本前展示具体命令;任务结束后清理临时凭证。即使某一层判断失误,其他层仍然有机会把影响控制住。

这就是沙盒的实际价值:它不是保证Agent永远不会判断错误,而是让一次错误判断不至于直接扩散到整台电脑和所有外部系统。

七、看到确认弹窗时,应该看什么

当确认弹窗出现时,不要只看「允许」还是「拒绝」。你可以先确认4件事:

要看什么 具体要确认什么
Agent准备执行什么动作 是读取文件、修改代码、删除目录、运行命令,还是调用外部API
目标在哪里 是当前项目中的某个文件,还是工作区之外的目录、localhost服务或外部域名
这次操作会带来什么影响 是读取内容、写入文件、上传数据,还是修改远程系统中的真实数据
权限会持续多久 只允许当前动作、当前任务,还是以后遇到类似操作都自动放行

比如,Agent请求运行npm install时,真正需要判断的就不只是“要不要安装依赖”,还包括:它在哪个目录执行?依赖安装脚本会不会被运行?是否需要访问网络?网络目标是包管理器,还是一个不熟悉的域名?

再比如,弹窗写着「允许访问网络」,这个信息仍然不够完整。你至少要知道它准备访问哪个目标。访问官方文档和访问localhost上的数据库,风险不是一个量级;下载依赖和上传项目文件,也不是同一种操作。

如果弹窗提供「仅本次允许」「允许本次任务」「始终允许」等选项,优先选择范围更小、有效期更短的选项。重复出现确认很烦,但永久放开权限,往往会让后续每一次操作都失去这道提醒。

一个好的确认弹窗,应该让用户在点击前看到动作、目标、影响和权限期限。用户不需要理解容器、系统调用这些工程术语,但应该能判断:这次操作是不是我期待的,影响是不是我能接受的。

八、如果你正在设计Agent,先把这张权限表填出来

从0到1做产品,不需要第一天就实现最复杂的虚拟机集群。但至少要把下面这些问题写清楚:

权限问题 最小安全判断
能读取哪些文件 默认只读当前任务所需的目录
能修改哪些文件 默认只允许当前工作区,必要时细分子目录
能否删除文件 先限制范围,高风险删除需要确认
能否访问网络 默认关闭,按域名或用途放行
能否访问本机和内网 默认禁止,单独配置必要目标
能拿到哪些密钥 尽量不直接暴露,使用受控凭证代理
能调用哪些外部API 只暴露完成任务所需的最小接口
能占用多少资源 设置CPU、内存、磁盘和运行时间上限
任务结束后怎么办 清理临时文件、进程和临时凭证
是否能追溯行为 记录工具调用、参数、结果和审批记录

这张表背后对应的是一个很实用的设计原则:最小权限。

Agent不是需要什么权限就一次性给满。更稳妥的做法是先问:完成这个任务最少需要什么?只给这些权限;当它确实需要跨出边界时,再通过审批或受控接口临时放行。

图下注释:权限不是越多越省事,而是只给当前任务真正需要的那一部分。

但权限也不能一味收紧。沙盒过严,Agent可能连安装依赖、运行测试这样的日常任务都无法完成;权限过松,用户虽然少看到几个弹窗,风险却转移到了数据和外部系统上。产品设计要做的是在「自主完成」和「用户控制」之间划出不同等级:

权限策略 用户体验 风险水平 适合场景
只读 Agent可以分析和规划,但不能修改 较低 初次了解项目、代码审查、资料分析
工作区可写、默认断网 可以编辑和运行部分本地命令 中低 日常代码修改、生成文档、运行已有测试
工作区可写、按域名联网 可以安装依赖、查文档或调用指定服务 中等 需要外部资料或依赖的开发任务
全部权限 操作最顺畅,但边界最宽 较高 临时调试、可信环境或明确隔离的实验环境

审批弹窗本身也需要设计。一个只写着「是否允许执行」的弹窗,把判断成本全部推给用户;更好的确认信息至少应该说明:准备执行什么动作、目标路径或域名是什么、为什么需要这项权限、权限只对当前动作有效还是对后续一段时间有效。

例如,下面两种提示的差别很大:

是否允许?

Agent请求执行:npm install 工作目录:/Users/you/A 可能影响:执行项目依赖中的安装脚本 网络访问:registry.npmjs.org 权限范围:仅当前任务

前者只能让用户凭感觉点击,后者才让用户有机会做出判断。对于删除文件、上传内容、发布信息、修改远程数据等不可逆操作,还应该把确认做得更明确,必要时要求二次确认或拆成预览和执行两个步骤。

九、几个常见误区

误区一:把规则写进Prompt就安全了

「只能操作当前项目」可以帮助模型理解任务范围,但它不是权限系统。模型可能理解错,工具也可能被绕过。越权限制必须落在执行层。

误区二:从A文件夹启动,Agent就只能访问A

启动目录只是当前路径。是否能访问B,取决于操作系统和沙盒给了它什么权限。

误区三:用了容器,就一定安全

容器是隔离手段,不是安全结论。如果把整个用户目录挂载进去,或者把宿主机的高权限接口暴露给容器,边界仍然可能很宽。

误区四:只限制文件就够了

Agent可以不修改文件,却通过网络上传数据;也可以不访问B文件夹,却通过进程、密钥或本机服务获取信息。文件、网络、进程、凭证和资源边界需要放在一起看。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐