你敢让你的 AI 智能体随便读你电脑上的文件吗?
我以前试过一个能自动干活的智能体,让它帮忙改个配置。它是真能干活,也是真没边界——它能读的文件,跟你自己能读的一样多。那次之后我一直在琢磨一件事:有没有办法把它干活的权限和它可能闯的祸,中间隔一层。

OpenShell 就是干这个的。英伟达开源,Rust 写就,Apache 2.0 协议,目前一万四千颗星左右。
我先把话说在前面:智能体最好用的时候,是它什么都能碰的时候;最危险的时候,也是。OpenShell 想解决的就是这个矛盾。
它到底管什么
官方定位一句话:给一大批自主智能体用的、安全私密的运行时。
你把每个智能体允许碰的东西写进一份策略(policy)里,然后 OpenShell 负责执行这份策略。
不是提醒,不是警告,是拦。它从两个层面动手:
内核级拦截:每一次访问都过审
每个智能体跑在独立沙箱里。内核控制它能读哪些文件、能发哪些系统调用。每一个网络连接,在离开沙箱之前都要先过一遍策略检查。
形式化验证:改策略先验算后果
策略改动生效之前,它会用形式化验证先把「这次改动会放开什么」算出来。比如突然能连一个新主机、能带密钥调一个新接口,这种就会标红,等人工确认。
第二条我觉得挺有意思。大多数人做权限,是「先放开再出问题」。它反过来了,先算清楚这次放开意味着什么,再让你决定。
为什么密钥这事特别关键
智能体要干活,就得用密钥。要用密钥,密钥就得能被它拿到。这就是死结。
OpenShell 的做法是:智能体永远看不到真密钥。
它只在请求真正要发给「已批准的端点」那一刻,才把密钥加上去。中间这一段,智能体拿着的是个空的。

这点比我原先想的要细。很多方案是「给你一把钥匙,但告诉你不许乱开锁」,靠的是自觉。这个是「钥匙根本不给你,锁我替你开」。
允许连的主机、允许调的方法,都要在策略里一条条列出来,没列的默认不放行。
对比其他方案
说几个大家会拿来比的。
对 Docker 沙箱:不止是隔离
容器管的是「跑在一个盒子里」,OpenShell 管的是「这个盒子能碰外面的什么」。文件、系统调用、网络连接,逐项过策略。
对 SDK 层拦截:更靠底层
有些方案在 SDK 里做过滤,智能体绕过 SDK 直连就失效了。OpenShell 是内核级,绕不过去。
对权限清单:多了验算
普通权限系统只告诉你「它可以做什么」。OpenShell 在你改权限时,会先告诉你「这次改完它会多能做什么」。
一句话,它是给智能体用的门禁系统,不是贴在门上的告示。
怎么装怎么用
它是 CLI 工具,先装再建沙箱:
装的时候跑一行脚本,会把命令行工具和一个本地网关都装好。默认沙箱镜像是极简的 Ubuntu,里面什么都没装。想跑真智能体,官方教程会让你拿一个免费的模型去跑 OpenCode,一路演示「智能体要新权限时你怎么批」。

环境要求也说一下,别踩空:Linux、苹果芯片的 macOS,或者 Windows 上的 WSL 2(官方标的是实验性)。另外要有 Docker、Podman 或者宿主机虚拟化。
它还配了官方的智能体技能包,一条命令就能教你的编程智能体怎么开沙箱、怎么写策略、怎么排查网关问题。也有 Python、TypeScript、Go、Rust 四种语言的 SDK。
该说的问题也得说
Windows 原生不行:得走 WSL
官方对 Windows 的支持标的是实验性,而且要先装 WSL 2。纯 Windows 环境别指望开箱即用。
概念不算少:有学习曲线
沙箱、策略、网关、提供方、计算驱动……想真用起来,得先花时间把这些概念理一遍,不是装上就会。
内核级意味着要权限:部署得想清楚
它靠内核控制做拦截,这意味着它对宿主机是有比较深的要求的。装在个人电脑上和生产集群上,是两回事。
策略要自己写:不是自动的
它负责执行策略,策略得你来定。哪些文件能读、哪些主机能连,写宽了等于没装,写窄了智能体干不了活。

它解决的是「智能体乱来」的风险,解决不了「智能体能力不行」的问题。
我为什么推荐它
现在做智能体的团队,吵得最凶的一个问题就是:怎么让它在「能干活」和「不出事」之间取平衡。
大部分做法是在事后补救,出了事再收紧权限。OpenShell 是把这层约束做到了运行时里面,在它动手之前就已经拦住了。
英伟达开源它,我猜也是看准了这个方向。智能体往后一定是成群结队地跑,一个管不住,就是一串出事。项目是今年 2 月建的,到现在一万四千星,Rust 写,Apache 2.0,商用没问题。