自主 AI 代理功能强大,但也伴随着显著的风险。具有 shell 访问权限的代理可能会意外删除文件、发送非预期的网络请求或泄露敏感数据。传统的容器化技术(Docker、gVisor)并非为 AI 应用所需的细粒度、代理专属安全策略而设计。NVIDIA OpenShell 以一个专为 AI 代理打造的沙盒运行环境来填补这一空白。
OpenShell 发布在 github.com/NVIDIA/OpenShell,是 NVIDIA 针对代理安全性的开源解答。它提供了一个隔离的运行环境,代理在其中根据声明式 YAML 策略运作,这些策略精确地控制文件系统访问、网络通信、进程执行和推理调用。该沙盒以独立进程方式运行,拥有最小权限,并通过 Linux 安全模块在内核层级执行策略。
OpenShell 与通用沙盒的不同之处在于其 AI 感知设计。它能理解代理专属的操作,如模型推理调用、工具调用和上下文窗口边界。策略可以设置为允许代理读取项目目录但禁止写入,或允许调用特定 API 端点但阻止所有其他网络流量。这种细粒度对于代理处理敏感数据的生产部署至关重要。
什么是 NVIDIA OpenShell?
OpenShell 是一个为 AI 代理设计的开源沙盒运行环境。它通过声明式 YAML 策略提供安全隔离,控制文件系统、网络、进程和推理操作。由 NVIDIA 开发,其设计与代理无关——兼容 Claude Code、LangChain 代理、AutoGPT 和自定义代理实现。
OpenShell 的沙盒是如何运作的?
OpenShell 使用 Linux 内核安全功能来强制执行代理隔离。
| 安全领域 | 控制项目 | 执行方式 |
|---|---|---|
| 文件系统 | 每个路径的读/写/执行 | Linux seccomp + Landlock |
| 网络 | 按主机名、端口、协议允许/阻止 | eBPF + nftables |
| 进程 | 限制 fork/exec、信号能力 | Linux seccomp-bpf |
| 推理 | 按模型端点允许/阻止 | 应用层拦截 |
| 环境 | 屏蔽环境变量、机密 | 进程层隔离 |
| 时间 | 限制执行挂钟时间 | 进程 cgroup 配额 |
每个策略被编译成一个在内核中运行的 seccomp 过滤器,使执行既快速又安全。
OpenShell 策略长什么样?
策略使用 YAML 定义,语法清晰且声明式:
name: "code-review-agent"
version: "1.0"
filesystem:
read:
paths: ["/home/user/projects", "/usr/share/doc"]
write: []
execute: []
network:
allow:
- hostname: "api.github.com"
port: 443
protocol: "tcp"
deny:
- hostname: "*"
port: "*"
protocol: "*"
process:
max_forks: 10
allowed_executables: ["/usr/bin/git", "/usr/bin/python3"]
inference:
allowed_models:
- "nvidia/nemotron-4-340b-instruct"
max_tokens_per_call: 4096
max_calls_per_session: 100
此策略将代码审查代理限制为仅读取项目文件、仅调用 GitHub API 和 NVIDIA 推理端点,以及仅执行 git 和 Python。
支持哪些 AI 代理?
OpenShell 设计为可与任何能以子进程方式启动的 AI 代理搭配使用。
| 代理 | 集成方式 | 状态 |
|---|---|---|
| Claude Code | 在沙盒内启动 CLI | 已支持 |
| LangChain 代理 | Python SDK 集成 | 已支持 |
| AutoGPT | 在沙盒内启动 CLI | 已支持 |
| 自定义 Python 代理 | OpenShell Python API | 原生支持 |
| 任何代理二进制文件 | oshell run | 通用 |
oshell CLI 工具可在沙盒上下文中启动任何命令:
# 在受限沙盒中启动 Claude Code
oshell run --policy code-review.yaml -- claude code
# 启动自定义代理
oshell run --policy data-analysis.yaml -- python agent.py
如何安装 OpenShell?
安装需要一个 Linux 系统,其内核支持所需的安全模块:
# 下载最新版本
curl -LO https://github.com/NVIDIA/OpenShell/releases/latest/download/oshell
chmod +x oshell
sudo mv oshell /usr/local/bin/
# 验证安装
oshell --version
Docker 镜像也可用于非 Linux 开发环境,但完整的安全执行需要原生 Linux 内核功能。
OpenShell 使用什么许可?
OpenShell 采用 Apache License 2.0 发布,这是 NVIDIA 的标准开源许可。这允许在商业和非商业项目中自由使用、修改和分发,并享有 NVIDIA 的专利保护。
常见问题
什么是 NVIDIA OpenShell?
OpenShell 是 NVIDIA 推出的开源 AI 代理沙盒运行环境,通过 Linux 内核功能强制执行安全策略。它通过声明式 YAML 策略控制文件系统、网络、进程和推理操作。
OpenShell 沙盒是如何运作的?
它使用 Linux seccomp、Landlock、eBPF 和 cgroups 在内核层级执行细粒度策略。每个策略被编译成一个 seccomp 过滤器,以实现快速、安全的执行。
OpenShell 策略长什么样?
策略以 YAML 定义,包含文件系统(读/写/执行路径)、网络(允许/阻止主机名和端口)、进程(fork 限制和允许的可执行文件)以及推理(允许的模型和代币限制)等部分。
支持哪些 AI 代理?
Claude Code、LangChain 代理、AutoGPT 以及任何能以子进程运行的自定义代理。oshell run 命令可将任何二进制文件或脚本包装在沙盒上下文中。
如何安装 OpenShell?
从 GitHub Releases 下载 oshell 二进制文件,设为可执行,并放置在 PATH 中。需要一个内核支持 seccomp、Landlock 和 eBPF 的 Linux 系统。
延伸阅读
graph TD
A[AI 代理] --> B[OpenShell 沙盒]
B --> C{策略执行器}
C --> D[seccomp 过滤器]
C --> E[Landlock 文件系统]
C --> F[eBPF 网络]
C --> G[cgroup 限制]
D --> H[内核]
E --> H
F --> H
G --> H
H --> I[系统调用]
H --> J[文件操作]
H --> K[网络数据包]
H --> L[进程创建]flowchart LR
subgraph 策略声明
A[YAML 策略] --> B[文件系统规则]
A --> C[网络规则]
A --> D[进程规则]
A --> E[推理规则]
end
subgraph 内核执行
B --> F[Landlock]
C --> G[eBPF]
D --> H[seccomp]
E --> I[应用拦截]
end
subgraph 结果
F --> J[允许]
G --> J
H --> J
I --> J
F --> K[拒绝]
G --> K
H --> K
I --> K
end
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!