NVIDIA OpenShell
NVIDIA 开源的自治 Agent 安全运行时:内核层按策略限制文件、系统调用与网络,Agent 看不到真实凭据,策略变更还要先过形式化验证;Apache-2.0,Rust 实现。
NVIDIA OpenShell 快速入门:先给 Agent 画好能碰什么,再让它自己干活
这是什么?适合谁?
OpenShell 是 NVIDIA 开源的 Agent 安全运行时。官方定义很短:「the safe, private runtime for fleets of autonomous AI agents」——Agent 最有用的时刻,正是它能够读文件、装包、调 API、用凭据的时候;OpenShell 要解决的矛盾是:既给它这些能力,又不给它对你数据、密钥、网络的无限访问权。做法是「先在策略里声明每个 Agent 能碰什么,再由 OpenShell 强制执行」。
它和「换一个更听话的模型」「在 prompt 里写不要删文件」不是一类东西。官方给了两条执行路径:
- 内核层强制(kernel-level enforcement):每个 Agent 跑在独立沙箱里,内核控制它可访问的文件与可发起的系统调用;每一条网络连接在离开沙箱前都要过策略检查;Agent 拿不到真实凭据,OpenShell 只在请求发往「已批准的端点」时才把凭据注入进去。
- 策略变更的形式化验证(formally verified policy changes):策略改动在生效之前,先算出它会新放开哪些危险访问——比如「带着凭据访问一个新主机」「调用一个新的 API 方法」——这类变更会停下来等人审。
适合谁:
- 要让 Agent 在有敏感数据、有内网、有真实凭据的环境里跑,而不敢直接给一台机器权限的团队;
- 需要把「Agent 能做什么」写成可审、可 diff、可回滚的策略文件,而不是散落在 prompt 与脚本里的运维与安全负责人;
- 要把 Agent 沙箱铺到多台机器或 Kubernetes 上、并且要求凭据统一从网关侧下发的平台团队。
不适合谁:只想在本机试一个 Agent 的普通用户——它默认沙箱镜像里连 Agent 都没装,先读完「Run Your First Agent」那页再动手。
与站内同类条目对比:Hive(本站 8.5)解决的是一堆工作单元如何并行与持久化,属于编排层;OpenShell 解决的是这些 Agent 允许碰什么,属于执行边界层。两者不冲突:CrewAI(本站 8.6)、AutoGen(本站 8.6)这类框架负责让 Agent 分工,OpenShell 负责把分工结果关进沙箱。
核验日期:2026-10-30。依据 官方仓库 README、官方文档站、GitHub API。
准备工作
- 系统:Linux、macOS(Apple Silicon),或 Windows + WSL 2(官方标注为 experimental)。支持矩阵在 Support Matrix。
- 容器/虚拟化:Docker、Podman,或宿主虚拟化,三选一——沙箱本身要靠它跑。
- 一个网关:安装脚本会同时装 CLI 与一个本地 gateway。要铺到集群则用 Helm(要求你的 CNI 能真正执行
NetworkPolicy)。 - 一个要被管住的 Agent:默认镜像是极简 Ubuntu,里面没有 Agent。教程用 OpenCode 配一个免费 OpenRouter 模型演示。
- 时间预算:从安装到跑通第一个带策略的 Agent,按官方教程顺序大约 30–60 分钟;如果卡在 WSL 2 或 CNI 上,另算。
费用:软件 Apache-2.0 免费;费用来自你放进去的 Agent 所用的模型,以及运行沙箱的机器/集群。
安装与首次启动
1. 装 CLI 与本地网关
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
2. 建第一个沙箱
openshell sandbox create --name demo
这一步能跑通,说明 CLI、网关与容器运行时这条链路是通的——但沙箱还是空的(极简 Ubuntu,无 Agent)。
3. 按教程放一个真 Agent 进去
照 Run Your First Agent 做:它用 OpenCode 配免费 OpenRouter 模型,并演示「Agent 需要新权限时,你怎么批准」这个关键动作。
成功判定
三个都成立才算装好:openshell sandbox create 能建成并进入;沙箱里能跑起一个模型 Agent;Agent 尝试访问未被策略允许的主机时被拦下,而你批准后同样的请求能通过。
首个任务:让 Agent 只能访问一个域名、只用一份凭据
目标:给一个「查文档 + 写文件」的 Agent 配最小权限,验证策略真的生效。
- 建一个专用沙箱:
openshell sandbox create --name scoped-demo。 - 写一份策略,只放开:读
/workspace、写/workspace/out、允许访问你指定的文档站主机;其余文件与网络一律关掉(策略字段见 Policies 概览)。 - 用 provider 把凭据挂上去,而不是把 key 写进沙箱环境变量——OpenShell 的模型是「凭据只在发往已批准端点时才注入」,Agent 进程本身看不到明文(见 Providers)。
- 让 Agent 做一件事:抓取该文档站的一页并总结,写到
/workspace/out/summary.md。 - 再做一次反证:让它访问一个不在策略里的域名,确认被拒。
预期产出:/workspace/out/summary.md 存在且有内容;越权访问那条命令失败,且失败原因是策略而不是网络抖动。
成功判定:同一个 Agent、同一份代码,只改策略就能改变它能不能出网——这是整套东西的核心价值,也是验收时唯一有意义的判据。
初级用法
1. 用 advisor 先看「这条策略会放开什么」
策略改动之前先跑 advisor,它会把你即将授予的访问逐条列出来。配合 prover 用,比改完再出事便宜得多(Policies advisor 与 prover)。
2. 一个任务一个沙箱,而不是一个 Agent 一个沙箱
沙箱是有生命周期的(镜像、运行时、GPU、create/stop/remove),按任务开、按任务销毁,比长期养一个「万能沙箱」更接近最小权限。
3. 把 telemetry 关掉再进内网
默认会收集匿名运营类计数(不包含沙箱名、主机名、路径、prompt、凭据、provider 名、模型名、用户内容)。内网部署按官方给的方式关:网关侧设 OPENSHELL_TELEMETRY_ENABLED=false;Helm 安装用 server.telemetryEnabled=false;需要彻底干净就编译时把 telemetry 去掉。
高级玩法
1. 用 SDK 把沙箱变成业务能力
四种语言都能连网关:Python(uv add openshell)、TypeScript(npm install @nvidia/openshell-sdk,走 GitHub Packages)、Go、Rust。适合「用户点一个按钮 → 后台开沙箱 → 跑完回收」这类产品化用法。
2. 在 Kubernetes 里铺一层
网关用 Helm 部署,沙箱作为工作负载分发。前提是你的 CNI 真能执行 NetworkPolicy——否则「网络策略」只是文档上的字(Kubernetes setup)。
3. 用 middleware / interceptor / compute driver 扩展
扩展面分三类:middleware 与 interceptor 改请求路径上的行为,compute driver 换底层算力(含 GPU)。想在策略之外再加一层「业务级白名单」,这是入口(Extensibility)。
4. 让编码 Agent 自己会写策略
仓库自带一组公开 skills:npx skills add NVIDIA/OpenShell,教你的编码 Agent 驱动 OpenShell CLI、写沙箱策略、排查网关与推理路由。它不需要 checkout 源码。
五个小技巧
- 先跑反证:新策略上线第一件事是验证「不该通的确实不通」,比验证「该通的通了」更能发现配置写错。
- 凭据走 provider,不要走环境变量:环境变量是沙箱内的明文,provider 是「只在出站时注入」。
- 镜像别用默认的:默认镜像是极简 Ubuntu 且没有 Agent,正式用要自己打镜像。
- 策略改动一律走验证再合并:把它当代码审,而不是当配置热改。
- WSL 2 只是 experimental:Windows 上真要长期跑,优先虚拟机或远端 Linux。
常见踩坑
坑 1:openshell sandbox create 之后以为可以立刻派活
现象:沙箱进去什么 Agent 都没有。 原因:官方默认镜像是极简 Ubuntu,故意不带 Agent。 解决:按「Run Your First Agent」放一个进去,或者自己打带 Agent 的镜像。
坑 2:Agent 报「连不上网」,其实是策略在拦
现象:网络请求失败,看起来像 DNS 或代理问题。 原因:每条出站连接都要过策略检查,未批准的主机会被拦在沙箱内。 解决:看策略与 advisor 输出,把目标主机加进允许列表;调试期不要图省事关掉整套策略。
坑 3:把 API key 写进沙箱环境变量
现象:策略配得很漂亮,但凭据泄漏风险仍在。 原因:环境变量对沙箱内进程是明文的,等于绕过了「Agent 看不到真实凭据」这条设计。 解决:用 provider 挂凭据,只在发往已批准端点时注入。
坑 4:Windows 上直接装,撞到 WSL 2 的坑
现象:安装或启动失败。 原因:Windows 支持走 WSL 2,官方标注 experimental;原生 Windows 支持走 Microsoft MXC,另有一份 Windows 指南,有当前限制。 解决:先按 WSL 2 路线排查;需要原生支持就照那份指南,别混用两套文档。
坑 5:Kubernetes 上策略不生效
现象:Helm 装完,Pod 之间照样随便连。
原因:网络策略靠 CNI 执行,CNI 不支持或未启用 NetworkPolicy 时,策略只是声明。
解决:先确认 CNI 能力,再谈策略;这条官方写在 Kubernetes 文档开头。
坑 6:把它当成「装完就安全」
现象:以为上了 OpenShell 就不用管镜像、依赖与模型。 原因:它管的是运行时访问边界(文件、系统调用、网络、凭据),不管镜像里的漏洞、模型输出质量、业务逻辑错误。 解决:把 OpenShell 当作安全栈的一层,而不是全部。
常见问题 FAQ
Q1:它和 Docker 沙箱有什么区别?
A:Docker 给你隔离的进程与文件系统;OpenShell 在隔离之上加了每条系统调用与网络连接都按策略检查、凭据只在出站时注入、以及策略变更前做形式化验证。它本身还要靠 Docker/Podman/宿主虚拟化来承载沙箱。
Q2:它是 Agent 框架吗?
A:不是。它不提供任务规划、多 Agent 协作或记忆,只负责「Agent 允许碰什么」。编排交给 Hive、CrewAI 或你自己的代码。
Q3:要钱吗?
A:软件 Apache-2.0 免费。成本来自沙箱所在的机器/集群,以及沙箱里跑的模型。
Q4:只能在 Linux 上跑吗?
A:Linux、Apple Silicon 的 macOS、以及 Windows + WSL 2(experimental)都能跑;原生 Windows 走 Microsoft MXC,另有一份指南与限制说明。
Q5:我的数据会被收集吗?
A:默认有匿名 telemetry,范围限于运营类目与计数,官方明确不含沙箱名、主机名、文件路径、prompt、凭据、provider/模型名与用户内容,并且可以关闭或编译掉。是否接受,按你的合规要求判断。
Q6:策略写错了会怎样?
A:两件事分别兜底:advisor 会先告诉你这条改动放开了什么;prover 做形式化验证,把「带凭据访问新主机」「调用新 API 方法」这类有风险的变更标出来等人工审。但最终仍然要人看——它是把错误变得可见,不是替你决策。
成本、权限与安全边界
- 成本:软件免费;GPU/集群资源与模型调用是实际支出。沙箱按任务开、按任务销毁可以显著压低成本。
- 权限:能力上限就是策略。管理员要能写、审、合并策略文件,否则这套东西会退化成「全放开」。
- 凭据:设计目标是 Agent 永远看不到明文凭据;一旦你把 key 塞进环境变量或镜像,这条保证就失效。
- 审计与数据:telemetry 可关;沙箱内的文件与日志仍在你自己的机器/集群上,谁有宿主权限谁就能读。
- 平台成熟度:当前是 0.1.x(官方称已进入稳定发布节奏,并暗示 API 面还会扩展)。生产采用前建议先锁版本、自己跑一轮升级演练(有 0.1.0 升级指南)。
进阶学习建议
- 先读架构,再读策略:Architecture 讲 gateway / supervisor / sandbox 三者关系——不理解这三层,策略写错时你会不知道是哪一层在拦。
- 把 Policies 的三块读全:overview(规则种类)+ advisor(改动影响预览)+ prover(形式化验证)。这三页是它区别于普通沙箱的全部所在。
- 照 first-network-policy 教程 走一遍:这是唯一一条把「策略—拦截—批准」串起来的官方路径。
- 再看 Providers 与 inference:凭据怎么只在出站注入、推理请求怎么被路由,是做内网落地时最容易写错的部分。
- 最后看 Extensibility 与 SDK:要把沙箱做成产品能力时,SDK(Python/TypeScript/Go/Rust)比 CLI 更合适。
- 社区侧:GitHub Discussions 问用法,issues 提 bug,安全漏洞走 SECURITY.md(官方要求不要开公开 issue);路线图与 RFC 在 NVIDIA 的 project 233 看板上。
免责声明
本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。
未安装 OpenShell,未在任何平台上执行安装脚本,未创建沙箱,未实测内核级策略拦截、形式化验证、provider 凭据注入与 Kubernetes 部署。文中能力、限制与数字均转述自官方 README、官方文档站与 GitHub 公开数据,属官方自述。
参考链接
- 官方仓库 README:定位、工作原理、quickstart、SDK、telemetry、社区
- 官方文档站:架构、策略、providers、gateways、Kubernetes、扩展性
- Run Your First Agent:用 OpenCode 跑通第一个受策略约束的 Agent
- Support Matrix:平台与运行时支持范围
- 0.1.0 升级指南:版本节奏与 API 变化
- Apache-2.0 许可
- GitHub API:stars / forks / 未关闭 issue / 创建与最近推送时间
📊 评分与标签
核验口径:已按现行口径通过,待按新证据契约复核
评分说明
总分 8.6/10 · P_优选
核验日期:2026-10-30。评价对象是 NVIDIA 开源的 Agent 运行时安全层(NVIDIA/OpenShell),评价依据是官方仓库 README、官方文档站(docs.nvidia.com/openshell)、支持矩阵与 GitHub 公开仓库状态。
评分依据可追溯至公开来源,每项分数都有明确理由与数据支撑;这是文档与公开数据层面的编辑判断,不是安全测评结论,也不是我们在生产集群里做过的渗透或压测。
🤖 Agent 能力:1.7/2.0
它本身不是「会干活的 Agent」,能力体现在给出的执行边界上:README 写明两条主轴——内核层强制(每个 Agent 独立沙箱,内核控制可访问文件与可发起系统调用,每条网络连接离开沙箱前过策略检查,Agent 看不到真实凭据,只在请求发往已批准端点时注入)与策略变更的形式化验证(prover 在改动生效前指出会新放开哪些危险访问,如带凭据访问新主机、调用新 API 方法)。
扣分在两处:其一,沙箱本身不提供任务规划、记忆或多 Agent 协作,默认镜像里连 Agent 都没装;其二,能力上限受底座约束(要 Docker/Podman/宿主虚拟化,集群侧还要求 CNI 真能执行 NetworkPolicy)。
- 竞品对比 1:Hive(本站 8.5)解决「一堆工作单元如何并行与持久化」,属编排层;OpenShell 只解决「这些 Agent 允许碰什么」,属边界层,两者是叠加关系。
- 竞品对比 2:CrewAI(本站 8.6)能给 Agent 分工,却不会在系统调用与网络连接这一层限制它;要用 CrewAI 跑敏感任务,OpenShell 这种运行时才是补位的那一层。
🖐️ 易用性:1.1/1.5
最短路径只有两行:一条安装脚本装 CLI 与本地网关,然后 openshell sandbox create --name demo。官方文档组织得清楚(架构、策略、providers、gateways、Kubernetes、扩展性各有专页),并且给了 npx skills add NVIDIA/OpenShell 让编码 Agent 自己学会驱动 CLI 与写策略。
扣分在三处:其一,平台门槛实——Linux、Apple Silicon 的 macOS、或 Windows + WSL 2(官方标注 experimental),三者之外要另走 Microsoft MXC 的原生 Windows 路线(另有一份指南与限制);其二,默认沙箱是极简 Ubuntu 且没有 Agent,装完不能立刻派活,必须再走一遍「Run Your First Agent」;其三,概念门槛高(sandbox / policy / provider / gateway / supervisor 五件套,加上 advisor 与 prover),安全同学容易懂、普通开发者需要时间。
- 竞品对比 1:Codex CLI(本站 9.2)装完就能用,没有额外基础设施;OpenShell 的「装完」只是开始,沙箱与策略才是主体。
- 竞品对比 2:Dify(本站 9.4)走可视化与托管体验,业务同学也能上手;OpenShell 的配置面是策略文件与 CLI,面向工程与安全角色。
🔌 生态集成:1.8/2.0
挂载面覆盖得相当全:README 提供四种语言 SDK(Python uv add openshell、TypeScript 走 GitHub Packages、Go、Rust),Kubernetes 用 Helm 部署网关,扩展面分 middleware / interceptor / compute driver(含 GPU),教程以 OpenCode 作为被管住的 Agent 示例,另有 Brev 云端 launchable 可直接试;仓库还自带公开 skills 让编码 Agent 学会写策略、调 CLI、排查网关与推理路由。
扣分在两处:Kubernetes 路线有硬前置(CNI 必须执行 NetworkPolicy,否则策略只是声明);生态集中在官方一侧,第三方集成与社区插件还很少。
- 竞品对比 1:AutoGen(本站 8.6)的生态在「Agent 框架与工具」这一侧,接的是模型与代码执行;OpenShell 的生态在「运行时与平台」这一侧,接的是容器、Kubernetes 与凭据体系。
- 竞品对比 2:OpenCode(本站 9.4)是被管理对象的典型代表——它能自己读写代码、跑命令;这类高权限 Agent 正是 OpenShell 存在的理由,两者不是竞品而是上下游。
👥 社区支持:1.4/1.5
GitHub API 在核验日返回 20,685 stars、2,027 forks、608 个未关闭 issue,仓库创建于 2026-02-24,最近推送 2026-10-29,Apache-2.0,主语言 Rust,由 NVIDIA 组织维护。八个月两万星、有 Discussions、issues 模板、独立 SECURITY.md、公开路线图与 RFC 看板(NVIDIA project 233),背后是大厂工程团队。 扣分只在一点:社区问答目前主要靠官方渠道与 Discussions,第三方教程、中文实践与踩坑合集还很少。
- 竞品对比 1:AutoGen(本站 8.6)同样有微软背书,且更早进入公开视野,社区存量更大。
- 竞品对比 2:CrewAI(本站 8.6)的社区活跃度体现在教程与视频生态上;OpenShell 的社区更偏「平台与安全工程师」,内容形态以文档与 RFC 为主。
💡 创新程度:1.4/1.5
最实质的创新是把形式化验证放进策略变更流程:改动生效前先算出它会新放开哪些高风险访问,再让人审——这一步把「配置审查」从人工读 diff 变成机器先给结论。第二个创新是凭据注入的时机设计:Agent 进程永远拿不到明文 key,只有请求打到已批准端点时才注入。第三个是把内核级强制与容器沙箱组合起来,而不是只在容器边界上做文章。 扣分在底层技术组合:沙箱、系统调用过滤、网络策略都是成熟手段,创新点在「策略验证前置 + 凭据出站注入」这两处组合。
- 竞品对比 1:普通 Docker 编排只提供隔离,不会对「策略改动会放开什么」做验证,也没有凭据注入时机控制。
- 竞品对比 2:Hive(本站 8.5)的创新在编排(取消图、共享 tracker);两者创新点完全不重叠,一个改工作方式,一个改权限边界。
🔒 稳定性:1.2/1.5
有利面:主语言 Rust、由 NVIDIA 工程团队维护、已有 0.1.x 的稳定发布节奏与升级指南;内核侧强制的好处是「不依赖 Agent 配合」,不会因为模型改写代码就失效。 扣分在三处:其一,0.1.x 意味着 API 面仍在扩展(官方 0.1.0 升级指南就是为此存在);其二,Windows 走 WSL 2 标注 experimental,原生 Windows 另走一条分支的指南;其三,608 个未关闭 issue 对一个八个月的项目偏多,加上策略与网络这一层出问题往往表现为「连不上」,排查成本高于普通应用。
- 竞品对比 1:Codex CLI(本站 9.2)有明确发布节奏与稳定 CLI 面,升级风险可预期;OpenShell 的版本面更宽(CLI + 网关 + 沙箱 + SDK + Helm chart),升级要一起考虑。
- 竞品对比 2:Dify(本站 9.4)作为平台有版本化发行与回滚路径;OpenShell 目前建议自行锁版本并演练升级。
可观测社区指标
采集日期:2026-10-30。GitHub API 返回 20,685 stars、2,027 forks、608 个未关闭 issue,pushed_at 为 2026-10-29T21:22:18Z,仓库创建于 2026-02-24,主语言 Rust,Apache-2.0,未归档。
README 自述的 0.1.x 发布节奏、支持矩阵(Linux / macOS Apple Silicon / WSL 2 experimental)与 telemetry 范围均为官方口径。
这些指标只代表公开仓库状态,不代表企业采用率、安全审计结论或生产稳定性。
标签说明
- 开源免费:代码以 Apache-2.0 发布;成本来自沙箱所用机器/集群与其中运行的模型。
- Agent沙箱:官方定位是「fleets of autonomous AI agents 的安全私有运行时」,核心形态是带生命周期的隔离沙箱(Sandboxes 文档)。
- 权限管控:通过策略限制文件、系统调用与网络,并在策略变更前做验证与人工审批(README 的 How It Works 两条主轴)。
- 自托管:CLI + 本地网关即可单机跑,Kubernetes 路线用 Helm 自建;数据与日志留在自己的环境里,telemetry 可关。
局限与声明
未安装 OpenShell,未在 Linux / macOS / WSL 2 上执行安装脚本,未创建沙箱,未实测内核级拦截、prover 的形式化验证、provider 凭据注入、Kubernetes/Helm 部署与 SDK 调用。 README 与文档中的能力(内核级强制、形式化验证、凭据出站注入、SDK、扩展面)均为官方说明,本站未独立复现。 本文不构成安全评估结论:没有做过渗透测试,也没有核对其威胁模型的完备性。 本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。
来源核实
- 仓库 README:确认定位、两条主轴、quickstart、运行首个 Agent 的路径、SDK 列表、skills 安装、telemetry 与社区入口。
- 官方文档站:确认架构(gateway/supervisor/sandbox)、策略(overview/advisor/prover)、providers、gateways、Kubernetes、扩展性、教程索引。
- Support Matrix:确认平台与容器/虚拟化前置条件。
- 0.1.0 升级指南:确认版本节奏与 API 变化。
- Apache-2.0 许可:确认开源许可。
- GitHub API:stars / forks / 未关闭 issue / 创建时间 / 最近推送 / 主语言。
- Hive、CrewAI、AutoGen、Dify、OpenCode、Codex CLI:仅作层次划分与站内评分对照。
同分类推荐
开源框架 分类下的其他 Agent