OpenShell

NVIDIA/OpenShell 访问 GitHub ↗
🔤 Rust ★ 18807 ⑂ 0 daily #4 (+1119) 抓取 2026-10-24

一句话简介

NVIDIA 开源的 Rust 实现跨平台 Shell 工具库,提供高性能、可扩展的命令行外壳功能与组件,用于构建定制化 Shell 环境。

标签

  • Rust
  • Shell
  • 命令行工具
  • NVIDIA
  • 开源库

适用应用场景

  • 构建自定义命令行 Shell
  • 开发嵌入式终端环境
  • 实现跨平台脚本执行器
  • 作为 Shell 功能模块集成到应用中

README 中文摘要

项目概述

OpenShell 是一个面向自主 AI 智能体集群的安全私有运行时。智能体需要读取文件、安装软件包、调用 API 并使用凭证才能发挥作用,OpenShell 让它们具备这些能力,同时限制其对数据、凭证和网络的未授权访问。用户通过策略声明每个智能体的权限边界,由 OpenShell 强制执行。

0.1.x 版本引入了稳定的发布节奏、新的隔离原语、扩展接口以及新的 API。

工作原理

OpenShell 从两个层面管控智能体的行为:

  • 内核级强制执行。每个智能体运行在独立的沙箱中,内核控制机制限制其可访问的文件与可执行的系统调用;所有出站网络连接在离开沙箱前都要经过策略检查。智能体永远看不到真实凭证,OpenShell 仅在请求指向已批准的端点时才注入凭证。
  • 形式化验证的策略变更。在策略变更生效前,OpenShell 使用形式化验证标记出该变更将带来的风险性新权限(例如使用凭证访问新主机、调用新的 API 方法),此类变更必须等待人工复核。

快速安装

环境要求:Linux、Apple Silicon 上的 macOS,或启用 WSL 2 的 Windows(实验性);同时需要 Docker、Podman 或主机虚拟化支持。

curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
openshell sandbox create --name demo  # 安装 CLI 与本地网关,并创建一个沙箱

默认沙箱镜像是精简的 Ubuntu,未预装智能体。若要运行真实智能体,可参考“运行第一个智能体”教程,该教程演示了 OpenCode 接入免费的 OpenRouter 模型,以及如何在智能体需要新权限时进行审批。

核心模块

  • Sandboxes(沙箱):镜像、运行时、GPU 配置与生命周期管理。
  • Policies(策略):文件系统、网络与进程规则;包含 advisor(建议器)与 prover(证明器),用于审查策略变更。
  • Providers(凭证提供方):仅在已批准端点上生效的凭证,包括推理服务接入。
  • Gateways(网关):沙箱、策略与访问的控制平面。
  • Kubernetes 部署:通过 Helm 部署网关,底层 CNI 必须支持 NetworkPolicy。
  • Extensibility(扩展性):中间件、拦截器与计算驱动。

智能体技能

通过以下命令为编码智能体安装 OpenShell 官方技能包,使其掌握 CLI 调用、策略编写与网关、推理路由调试:

npx skills add NVIDIA/OpenShell  # 安装 OpenShell 技能

技能定义位于 skills/ 目录,无需克隆源码即可使用。

SDK 多语言支持

各语言 SDK 用于将应用接入 OpenShell 网关,不包含 CLI。部署时 SDK 与网关版本尽量保持一致。

语言 安装命令 文档
Python uv add openshell python/openshell/
TypeScript npm install @nvidia/openshell-sdk(GitHub Packages) sdk/typescript/README.md
Go go get github.com/NVIDIA/OpenShell/sdk/go@latest sdk/go/README.md
Rust cargo add openshell-sdk --git https://github.com/NVIDIA/OpenShell --tag <release-tag> docs/sdk/rust.mdx

遥测与许可

OpenShell 默认采集匿名的运营类计数遥测,用于改进项目;不收集沙箱名、主机名、文件路径、提示词、凭证、提供方或模型名称以及用户内容。关闭方式:在网关上设置环境变量 OPENSHELL_TELEMETRY_ENABLED=false,或在 Helm 安装中将 server.telemetryEnabled 设为 false,也可在编译时移除遥测模块。

本软件可能自动获取、访问或交互外部材料,这些材料不随本软件分发,遵循各自的条款与许可。用户须自行审查其合规性与适用性。本软件按“现状”提供,不附带任何形式的担保。

本项目基于 Apache License 2.0 授权。

摘要更新于 2026-10-16 00:34:57 · 原文 8050 字符 · md5 902125791bc9…