给AI Agent配好API key、让它自动整理日志、抓取数据、跑批处理,本是件省心事,可一旦它为了「完成任务」翻出本地SSH私钥,或悄悄curl一个陌生域名,甚至来个rm -rf,用户心里就没底了。问题未必出在Agent有意作恶,而是它压根不清楚操作边界在哪里。
近期GitHub热榜上出现了一个由英伟达开源的项目OpenShell,瞄准的正是这类失控风险。该项目开源半年多便积累了上万Star,提交次数超过1500次,当前版本刚迈入0.1.x的稳定节奏。据项目定位,OpenShell是面向自主AI智能体的安全、私有运行时,核心目标是在赋予Agent干活能力的同时,让它碰不到不该碰的资源。

使用方式比较直接:用户在策略中声明每个智能体可接触的范围,由OpenShell负责执行。其能力建立在两层机制上。其一是内核级强制执行,每个Agent运行于隔离沙箱内,文件访问、系统调用、网络连接等每一笔操作都要经过策略检查。其二是形式化验证,策略变更在正式生效前,先用数学方法(SMT求解器)推演「这条改动会额外放开哪些权限」,发现风险就先卡住,等待人工审核。
系统整体分成三部分:Gateway作为控制平面,负责沙箱生命周期、策略与凭据管理;Supervisor驻守信任侧,承担核对请求、下发凭据、转发连接等工作;沙箱是Agent的活动范围,其外围还有一层网络围栏,除连接Supervisor外其他流量一律不放行。

内核级沙箱:出口默认为零放行,按需开口
沙箱流量策略遵循「不通」才能开的原则:默认情况下,任何出口流量都不被放行。策略以YAML编写,覆盖五类控制对象——文件读写、进程身份、网络目的地、允许发出的请求类型,以及附加的流量中间件。底层依靠Landlock、seccomp等内核机制支撑,网络层则设置了一道L7代理,会检查请求的目标、发起程序的二进制路径、请求方法乃至路径信息。
凭据不经Agent手:API key Agent自己都拿不到
该项目的一大设计亮点是凭据隔离。真实凭据仅存放于Gateway的凭据库,沙箱内部只保留一个占位符。当Agent发起请求、且目的地位于策略批准的endpoint时,Supervisor才会把真实凭据注入进去。换句话说,即使把key配置给Agent,Agent本身也接触不到它,自然谈不上外传。

策略变更先过「数学证明」关
Agent被规则拦截时不必干等。它可以借助策略Advisor自行起草一条网络规则提案,粒度可以细到「某个二进制访问某个主机的某个端口」。提案递交后,Gateway内的Policy Prover会调用SMT求解器执行风险检查:比对新增规则前后沙箱的可达范围,一旦发现多出高危访问路径,比如能触达云元数据地址,或凭据可流向新主机,就会被标记,等待人工批复。每条提案默认都需人工审批,批准后方能生效,且沙箱无需重启。
全程可观测:每条放行或拦截决策都可见
项目自带TUI界面,沙箱状态、每一条CONNECT与L7请求的放行或拦截决策会实时滚动展示,支持按来源过滤并下钻查看细节。Agent正在与谁通信、是哪条规则放行了它,都能直观看到;出现故障时,日志也就在手边。

上生产:可用Helm部署到Kubernetes
单机环境玩顺手之后,可通过Gateway用Helm部署至Kubernetes。沙箱Pod由控制器直接管理,工作负载Pod不允许主动外联(no workload-initiated egress),出站流量全部走经过策略评估的通道。底层运行时可插拔,Docker、Podman、MicroVM、Kubernetes均可,上层API保持一致。此外项目提供Python、TypeScript、Go、Rust四种SDK,便于将沙箱能力嵌入自有应用。
前置条件方面,支持Linux,或运行于Apple Silicon的macOS,Windows则通过WSL 2(实验性);本机需装有Docker、Podman或具备宿主机虚拟化能力。安装可一行完成,会同时装好CLI与本地Gateway,命令为:curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh,随后可执行\openshell sandbox create --name demo 创建沙箱。默认镜像是一个极简Ubuntu,其中并不包含Agent。若要跑真实的Agent,可参照官方教程,用OpenCode搭配OpenRouter上的免费模型,全程无需充值。

配置上,先导入OpenRouter的provider配置(须预先设置OPENROUTER_API_KEY):\openshell profile import --url https://raw.githubusercontent.com/NVIDIA/OpenShell/main/providers/openrouter.yaml \openshell provider create --name openrouter --type openrouter --from-existing。接着创建沙箱并启动Agent:\openshell sandbox create --name my-agent --from ghcr.io/anomalyco/opencode:latest --provider openrouter -- opencode -m openrouter/nvidia/nemotron-3.5-lightning:free。如果Agent运行中被拦,不必手工修改策略,可查询待审批提案:\openshell rule get my-agent --status pending、\openshell rule approve my-agent --chunk-id 。默认策略下Agent几乎事事受限,这是有意为之的特性而非缺陷,按需放行即可。
安装方式上有一点需要注意:snap安装包不包含openshell-prover,若需要使用形式化验证能力,应选择deb、rpm或Homebrew方式。遥测功能默认开启且完全匿名,如果介意可通过设置OPENSHELL_TELEMETRY_ENABLED=false关闭。项目地址为https://github.com/NVIDIA/OpenShell。
小结:OpenShell用内核沙箱、凭据托管与形式化验证三层组合思路,回应了自主AI智能体「既能放手干活、又不越界」的现实诉求,项目在半年多时间内即获1万+ Star、1500+次提交,已进入0.1.x节奏。对正在构建Agent的开发者来说,它提供了一套可落地的权限收紧方案,值得纳入评估视野。
