OpenShell——自主 AI 代理的安全、私密运行时
[!IMPORTANT] OpenShell 0.1.x 新特性: 稳定的发布节奏、新的隔离原语、扩展的插件接口以及全新 API。阅读 0.1.0 升级指南。
OpenShell 是面向自主 AI 代理集群的安全、私密运行时。当代理能够读取文件、安装软件包、调用 API 并使用凭证时,它们才能发挥最大价值。OpenShell 赋予代理这些能力,同时不会让它们无限制地访问你的数据、机密或网络。你在策略中声明每个代理可以访问的内容,由 OpenShell 负责强制执行。
工作原理
OpenShell 通过两种方式管控代理的行为:一是对内核进行插桩,在运行时对每一次文件访问、系统调用和网络连接强制执行策略;二是利用形式化验证,在策略变更生效前检查它将允许哪些操作。
- 内核级强制执行。 每个代理运行在隔离的沙箱中。内核控制机制限定它可以访问哪些文件、可以进行哪些系统调用,每条网络连接在离开沙箱前都要经过策略检查。代理永远看不到真实凭证;OpenShell 只将凭证附加到发往已批准端点的请求中。
- 经过形式化验证的策略变更。 在策略变更被批准之前,OpenShell 使用形式化验证标记该变更将授予的风险性新访问权限,例如使用凭证访问新主机或调用新的 API 方法,此类变更需要等待人工审核。
参见架构了解网关、监管器与沙箱如何协同工作。
快速开始
你需要 Linux、Apple Silicon 上的 macOS,或 Windows with WSL 2(实验性),以及 Docker、Podman 或主机虚拟化。详情参见支持矩阵。
curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
openshell sandbox create --name demo
安装程序会配置 CLI 和本地网关。默认沙箱镜像是不含代理的最小化 Ubuntu。要运行真实的代理,请参阅运行你的第一个代理:它针对免费的 OpenRouter 模型运行 OpenCode,并演示如何在代理需要时批准新的访问权限。
深入探索
- 沙箱:镜像、运行时、GPU 与生命周期。
- 策略:文件系统、网络和进程规则,附带用于审查变更的 advisor 和 prover。
- 提供商:仅在已批准端点生效的凭证,包括推理。
- 网关:沙箱、策略和访问的控制平面。
- Kubernetes:使用 Helm 部署网关。你的 CNI 必须支持强制执行
NetworkPolicy。 - 可扩展性:中间件、拦截器和计算驱动。
- 教程:循序渐进的策略与代理实操指南。
- 预发布与开发版本:尝试即将发布的版本或
main分支上的最新提交。
代理技能
为你的编码代理安装公开的 OpenShell 技能:
npx skills add NVIDIA/OpenShell
这些技能教会你的代理操作 OpenShell CLI、编写沙箱策略,以及调试网关和推理路由。它们位于 skills/ 目录中,无需检出 OpenShell 源码即可使用。
SDK
SDK 用于将应用程序连接到 OpenShell 网关,不会安装 CLI。SDK 与网关应尽可能使用相同的 OpenShell 版本。
| 语言 | 安装 | 文档 |
|---|---|---|
| Python | uv add openshell | README |
| TypeScript | npm install @nvidia/openshell-sdk(GitHub Packages) | README |
| Go | go get github.com/NVIDIA/OpenShell/sdk/go@latest | README |
| Rust | cargo add openshell-sdk --git https://github.com/NVIDIA/OpenShell --tag <release-tag> | 安装与使用 |
社区
- 问题与讨论: GitHub Discussions
- Bug 报告与功能请求: GitHub Issues,请使用 issue 模板
- 安全漏洞: 遵循 SECURITY.md,不要在 GitHub 上提交 issue。
- 路线图: OpenShell Roadmap 和 RFC 看板
- 在云端试用: Brev Launchable
OpenShell 以“代理优先”的方式构建:它使用与自己所支持的同类代理驱动工作流进行开发。参见 CONTRIBUTING.md 了解开发环境搭建和贡献工作流,参见 AGENTS.md 了解仓库编码规范。
遥测
OpenShell 收集匿名遥测数据,仅限于操作类别和计数,用于帮助改进项目。它不会收集沙箱名称、主机名、文件路径、提示词、凭证、提供商或模型名称,也不会收集用户内容。要禁用遥测,可在网关上设置 OPENSHELL_TELEMETRY_ENABLED=false,Helm 安装则设置 server.telemetryEnabled=false。你也可以在编译时完全移除遥测功能。详情参见遥测,已发布的使用趋势参见社区遥测报告。
声明与免责声明
本软件会自动检索、访问外部资源或与之交互。这些被检索的资源不随本软件分发,仅受单独的条款、条件和许可证约束。你有责任自行查找、审查并遵守所有适用的条款、条件和许可证,并验证任何被检索资源对于你的特定用例在安全性、完整性和适用性方面是否符合要求。本软件按“原样”提供,不附带任何形式的保证。作者对任何被检索资源不作任何陈述或保证,且不对因使用或无法使用本软件或任何被检索资源而产生的任何损失、损害、责任或法律后果承担责任。使用本软件及被检索资源的风险由你自行承担。
许可证
本项目基于 Apache License 2.0 许可证开源。