OpenShell 是 NVIDIA 开源的 Agent 运行时,把权限放在内核里强制执行,而不是写在提示词里求模型自觉:每个 Agent 一个沙箱,文件访问、系统调用、出网连接逐次过策略,凭证根本不进 Agent 的环境。项目用 Apache 2.0 授权,0.1.x 是第一个给出稳定发布节奏的版本(仓库)。

关键事实

项目 内容
回答的问题 NVIDIA OpenShell 评测:把 Agent 权限关进内核,Windows 只能走 WSL 2
简答 OpenShell 是 NVIDIA 开源的 Agent 运行时(Apache 2.0):每个 Agent 一个沙箱,文件、系统调用、网络连接逐次过策略,凭证只注入到已批准端点,策略变更先做形式化验证。Windows 侧只有 WSL 2 且标注实验性。
阅读时长 ~3 分钟
最后更新 2026-10-23

沙箱本身不新鲜。真正值得看的是两点:策略变更在生效前先做形式化验证;以及凭证放在 Agent 之外、按请求注入。

项目具体承诺了什么

README 写得够具体,可以直接核对:

  • 每个 Agent 跑在独立沙箱里,内核控制它能看到哪些文件、能发哪些系统调用。
  • 每条出网连接在离开沙箱前都要过策略检查。
  • Agent 永远看不到真实凭证;OpenShell 只对发往已批准端点的请求附加凭证。
  • 策略变更批准前,形式化验证会报告这次改动新增了什么权限——比如能用凭证访问新主机、能调用新 API 方法——这些新增项要等人审。
  • 组成是三块:gateway(沙箱、策略、访问的控制面)、supervisor、sandbox。

0.1.x 带来稳定发布节奏、新的隔离原语、扩展面和新 API。gateway 可以通过 Helm 部署到 Kubernetes,但有个前提要看清:CNI 必须真的执行 NetworkPolicy,否则网络边界只是一份 YAML。SDK 覆盖 Python、TypeScript、Go、Rust。

遥测也写得明白:只收集匿名的运行类目和计数,可以用 OPENSHELL_TELEMETRY_ENABLED=false 或 Helm 的 server.telemetryEnabled=false 关掉,也可以直接编译掉。

Windows 上的真实处境

支持矩阵是第一个该看的:需要 Linux、Apple Silicon 的 macOS,或者 Windows + WSL 2,且标注实验性,另外还要 Docker、Podman 或宿主虚拟化。

这是一条硬边界,不是脚注。WSL 2 后端管的是 Linux 虚拟机里的进程,它没法给一个点原生按钮、往 C:\Users\... 写文件的 Win32 进程套内核策略。所以对“操作你正坐着的这台电脑”的桌面 Agent 来说,OpenShell 今天给你的是一个受管的 Linux 工作区,不是一个受管的 Windows 桌面。

可迁移的是设计,而且迁移性很好:

  • 能力靠声明,不靠提示。 “可以读这个目录、可以访问这个主机”是运行时强制的策略对象,不是请模型遵守的一句话。
  • 凭证在 Agent 之外。 按端点注入意味着被攻破的 Agent 拿到的密钥不能直接拿去打任意服务器,这比出事后再轮换密钥强。
  • 审批看增量。 生效前先问“这次改动新增了什么权限”,能挡住权限一点点爬上去的失败模式。

上手前要核实的四件事

  • 策略有没有覆盖凭证库本身? 如果沙箱能读 ~/.aws/credentials 或浏览器配置目录,端点绑定的价值会大打折扣。
  • 审计记录在沙箱之外吗? Agent 自己沙箱能写的日志只是建议。这条对任何运行时都成立,包括这一个。
  • 形式化验证报出来的项谁审? 证明器再强,也要有人清队列。没人负责,“等人审”就会变成“永远等”,然后被自动放行。
  • 默认镜像里有什么? 快速开始给的是最小 Ubuntu、不装任何 Agent,这是对的默认值;换成你自己的镜像时,要看清楚多了什么再给它凭证。

如果你在 Windows 上要的是操作桌面而不是操作一个 Linux 虚拟机,那属于另一层:可以下载 MOOGH,先把权限面看清楚,再接敏感的东西。

结论

OpenShell 是目前对“运行时该强制什么、而不是请求什么”回答得最具体的一个公开实现:每个 Agent 的内核级策略、端点绑定凭证、策略增量的人工审批。上线当天在 Hacker News 拿到 319 分、165 条评论(讨论),说明这一层的需求是真实的。Windows 用户现阶段把它当 WSL 2 工作区工具用;就算不跑它的二进制,这套设计也值得抄。

相关阅读: