让自主 AI 智能体去读文件、装包、调 API、用凭证,是它最有用的时刻,也是它最危险的时刻。一个能自由访问你全盘数据、网络和凭据的代理,一旦被诱导或出错,后果可能是删库、外泄、乱改配置。很多「智能体运行时」只是在应用层做了点隔离,代理换个路径就能越界。NVIDIA 的 OpenShell 选择从更底层下手:它直接在操作系统内核层面给每个智能体划定能碰什么、不能碰什么,并在策略变动生效前用形式化验证先算一遍。
OpenShell 的定位是「自主 AI 智能体的安全、私密运行时」,专门解决「既要让代理有能力,又不能给它无限制访问」这个根本矛盾。
项目基本信息
| 信息项 | 详情 |
|---|---|
| 项目名称 | OpenShell |
| GitHub地址 | https://github.com/NVIDIA/OpenShell |
| 项目描述 | 给自主 AI 智能体提供内核级强制隔离的安全运行时 |
| 作者 | NVIDIA |
| 开源协议 | Apache License 2.0 |
| 开源状态 | 公开 |
| Languages | Rust |
| 支持平台 | Linux / macOS / Windows (WSL2) |
| 最后更新 | 2026-10-24 |
一、项目介绍
OpenShell 是 NVIDIA 开源的、面向智能体舰队(fleets of agents)的安全私密运行时。它用两种方式约束代理能做什么:一方面,它插桩(instrument)内核,对每一次文件访问、系统调用和网络连接在运行时强制策略,每个代理跑在隔离沙箱里,永远看不到真实凭据——OpenShell 只在发往已批准端点的请求里注入凭据;另一方面,在策略变更被批准前,它用形式化验证检查这次改动会放开出什么新权限(比如连到一个带凭据的新主机、调用一个新方法),这类变更会先等人工复核。
二、核心优势
第一,内核级强制。文件、系统调用、网络连接都被策略实时拦截,不是应用层「自觉」隔离,越界即拦。第二,凭据不落地。代理从来看不到真实密钥,OpenShell 只在批准的请求上替它注入。第三,策略变更先验证。用形式化方法在生效前标出「会新增哪些访问」,高风险改动走人工审核。第四,扩展原语丰富。0.1.x 起提供稳定的发布节奏、新的隔离原语、扩展 API 和新版 MCP 接口。第五,多语言 SDK。Python、TypeScript、Go、Rust 都能接 gateway,把应用和沙箱体系打通。
三、适用场景
适合要让自主代理真正「动手」(读写文件、跑代码、调外部 API、用云凭证)的团队:内部自动化流水线、需要跑不可信第三方代理的公司、以及做智能体安全研究的同学。也适合把 OpenCode 之类代理接进来的个人,想在不交出全盘权限的前提下让代理帮你干活。
四、安装教程
需要 Linux、macOS(Apple Silicon)或 Windows(WSL 2,实验性),并准备好 Docker / 虚拟化支持。安装器会装好 CLI 和本地 gateway:
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
openshell sandbox create --name demo默认沙箱镜像是最小 Ubuntu,不含任何代理。要跑真实代理,按官方「Run Your First Agent」用 OpenCode 接一个免费 OpenRouter 模型,并学习如何在代理需要新权限时批准访问。给编码代理装官方 skills:
npx skills add NVIDIA/OpenShell常见报错:在纯 Windows 原生环境会失败(需要 WSL2),报虚拟化相关错误时先确认已开启 WSL2 和嵌套虚拟化;openshell 命令找不到通常是安装脚本没把 bin 加进 PATH,重开终端或手动 source 一下。
五、使用示例
创建并进入一个沙箱:
openshell sandbox create --name demo
openshell sandbox run demo -- opencode在沙箱里让代理去读某个目录、调用一个外部 API,OpenShell 会在内核层拦截每一次文件/网络动作;当代理第一次想去一个还没批准的主机,会触发策略审批,你确认后才放行。应用中接 gateway(以 Python 为例):
uv add openshellTypeScript 用 npm install @nvidia/openshell-sdk(走 GitHub Packages),Go 用 go get github.com/NVIDIA/OpenShell/sdk/go@latest,Rust 用 cargo add openshell-sdk --git ...。
六、常见问题
问:OpenShell 和 Docker 隔离有什么区别?答:Docker 是容器级隔离,OpenShell 在内核层对每个文件/系统调用/网络连接强制策略,粒度更细且带凭据代理。问:Windows 能用吗?答:可以,但需 WSL2(实验性),纯原生 Windows 不支持。问:策略变更一定要人审吗?答:只有「会放开新权限」的变更才需要,普通动作按已有策略自动放行或拦截。问:会收集我的数据吗?答:只收集匿名运行遥测(计数类),不含文件路径、提示词、凭据;设 OPENSHELL_TELEMETRY_ENABLED=false 可关。
七、总结
OpenShell 把「自主代理如何安全动手」这个问题从应用层上提到了内核层:强制拦截 + 凭据代理 + 策略变更前的形式化验证,三件事合起来,让代理「有能力但不越界」真正可落地。对需要在不受信环境下跑智能体的团队,它是目前少见的、从底层做隔离的开源方案;代价是部署依赖 Linux/macOS/WSL2 与虚拟化,且新权限的审批会带来一点流程成本。
评论 0
还没有评论,来说两句吧。