SynapseWire

NVIDIA OpenShell 入門:安裝、第一個代理,以及 BlueField Sentry 的定位

OpenShell 的 README 裝的是 CLI 和空沙盒。第一個 agent 在另一頁。Sentry 不是第二行命令。

發布於:
木桌上一部筆電,旁邊另放一張機架卡,冷色日光,兩邊螢幕都沒有商標,也沒有可讀文字。
FIG. 01 // 木桌上一部筆電,旁邊另放一張機架卡,冷色日光,兩邊螢幕都沒有商標,也沒有可讀文字。

重點先看: NVIDIA OpenShell 的 README 用兩行指令安裝 CLI 和一個空的 Ubuntu 沙盒。執行第一個代理寫在另一份指南裡;BlueField Sentry 是同一次發表中依賴硬體的元件,不是在筆電上安裝的下一步。

NVIDIA OpenShell 的 README 把安裝寫成兩行。那兩行建出來的沙盒裡沒有 agent。9 月 29 日發布稿裡的硬體看門狗,也不是這兩行的下一行。把這三件事混在一起,你要麼以為空的 Ubuntu 盒子就是做完了,要麼去等一張你試軟體根本不需要的 BlueField。

本文依據 main 分支上的 README,以及它指向的兩頁文件:Run Your First Agent 和 第一篇網路政策教學。另外有 9 月 29 日的 NVIDIA 新聞稿、StorageReview 的整理,還有 Salesforce 9 月 28 日的 Slack 橋接說明。這篇沒有在正式機器上跑 install.sh。下面的命令是那些頁面印出來的。

這是管控層,不是新模型。本站寫過 JetBrains Air 是管控層,不是新模型,也寫過 Claude Code 接本機 Ollama 和 Antigravity SDK 在你的 GPU 上跑 Gemma 4。OpenShell 不取代那三篇。README 自己的說法是:agent 有用,是因為它能讀檔、裝套件、打 API、用憑證;OpenShell 要擋的是「因此就不設限」。你宣告每個 agent 能碰什麼,它來執行這份宣告。

先裝 OpenShell,然後看沙盒是空的

支援範圍寫得很短。Linux、Apple Silicon 的 macOS,或 Windows 加 WSL 2。WSL 那條標了實驗性。另外要有 Docker、Podman,或給 MicroVM 沙盒用的主機虛擬化。細節在 支援矩陣。

他們印出來的安裝是一支遠端腳本:

curl -LsSf https://raw.githubusercontent.com/NVIDIA/OpenShell/main/install.sh | sh
openshell sandbox create --name demo

這是文件上的路徑。README 旁邊沒有校驗碼。在意它寫進系統什麼,就先讀腳本。頁面上說,安裝器會裝 CLI 和本機 gateway。預設沙盒映像是最小的 Ubuntu,裡面沒有 agent。openshell sandbox create --name demo 給你一個有名字的盒子。它不給你盒子裡的 Claude、OpenCode 或 Hermes。

同一份 README 的提示寫的是 OpenShell 0.1.x 新增了什麼:穩定的發布節奏、新的隔離原語、更大的擴充面、新的 API。升級說明是另一頁,0.1.0 升級指南。你如果已經有預發布的检出,那頁才是告訴你什麼搬了位置。兩行安裝是給還沒裝的機器。

StorageReview 補的是 README 懶得寫的「能不能拿到」。OpenShell 先出現在 GTC 2026 的 NemoClaw 參考堆疊,後來進了 Dell、HPE、SUSE 的 AI Factory。NVIDIA 現在稱它 broadly available。程式在 GitHub,Apache 2.0。「能拿到」和「預設映像沒有 agent」可以同時為真。能拿到是指 runtime 裝得了。空的是指程序還得你自己放進去。

第一個 agent 在第二份文件

Run Your First Agent 才是空盒子裡放程序的地方。那頁的順序是:先設定 agent 可以用什麼,再選一個已經含有 agent 的映像,然後用 -- 後面的命令建立沙盒。

憑證那一步,文件印的是一個名叫 openrouter 的 provider:

openshell provider create \
  --name openrouter \
  --type openrouter \
  --from-existing

建立之前要先設 OPENROUTER_API_KEY。OpenShell 把值放進憑證庫,而且只送給 openrouter.ai。這句不要跳。金鑰不是放進沙盒、讓 agent 用 cat 就能看到的檔案。同一頁在 provider 之前還有 openshell profile import --url。import 那行從文件頁複製,不要從這篇文章複製。

建立沙盒的那行很具體:

openshell sandbox create \
  --name my-agent \
  --from ghcr.io/anomalyco/opencode:latest \
  --provider openrouter \
  -- opencode -m openrouter/nvidia/nemotron-3.5-lightning:free

-- 後面是沙盒裡的程序。--from 是映像。文件說這個映像把 opencode 裝在 /usr/local/bin/opencode,範例政策允許這個二進位連到 openrouter.ai。OpenCode 會拿到 OpenRouter 憑證,並用你傳給 -m 的模型啟動。例子裡的模型標了免費,所以不用 OpenRouter 點數。換模型用 opencode models openrouter。拉失敗是 tag 的問題,不是兩行 README 安裝寫錯。

agent 需要更多路徑時,那頁的答案是自訂政策:檔案系統、套件庫、原始碼主機、工具伺服器。README 的機制段就是這個答案存在的理由。內核控制檔案和系統呼叫。每條網路連線離開沙盒前都過政策。憑證只加在通往已核准端點的請求上。政策變更套用前,形式化驗證應該標出有風險的新存取,例如帶著憑證去一個新主機,或呼叫一個新的 API 方法,然後等人來審。這是 README 寫的設計。

讀得懂的網路政策,和代表它生效的 403

第一篇網路政策教學 是讓你看見拒絕的那頁。看不見拒絕,政策就只是註解。教學裡被拒的 curl 會從代理回 HTTP 403,發生在 CONNECT 之後。它要你把沙盒的 shell 留著,下一條 openshell 在主機上跑。退出 shell 會停掉沙盒的主程序。預設的重啟政策下,退出後不能再連。建立時加 --no-keep,退出就刪沙盒。這件事在 shell 死掉之前決定,不要之後。

教學加上的規則是這段 YAML,放在政策的 network_policies:

network_policies:
  github_api:
    endpoints:
      - host: api.github.com
        port: 443
        protocol: rest
        enforcement: enforce
        access: read-only
    binaries:
      - path: /usr/bin/curl

rest 是代理終止 TLS,並檢查每個 HTTP 請求。read-only 允許 GET、HEAD、OPTIONS。enforce 擋掉其餘的。教學說 policy update 只改網路規則,沙盒政策的其他部分留著。看完整份用 openshell policy get demo --base。被拒的連線進結構化日誌:openshell logs demo --since 5m --source sandbox,在主機上跑,不在沙盒裡。

想先記日誌、先不擋,同一頁說把 enforcement 設成 audit 而不是 enforce。先 audit,看哪些本來會被拒,再改成 enforce。這是迭代。也是你從部落格(包括這篇)抄政策、又跳過 audit 時會惹毛自己的地方。上面的 GitHub 規則只允許一個二進位讀一個主機。它不允許 agent git push。需要的話,教學的答案是再加一條規則,不是把代理關掉。

清理是 openshell sandbox delete demo。那頁說這會停掉程序,並清掉注入的憑證。非互動的路徑是 bash examples/sandbox-policy-quickstart/demo.sh,前提是你在有這個例子的原始碼目錄裡。README 的安裝沒說會把這個腳本放到 PATH。腳本不在,表示你走的是安裝路徑,不是 git checkout。用命令,不要用一個你沒有的路徑。

Sentry 是發布稿的另一半,不是這台筆電

9 月 29 日的新聞稿 命名的是平台,不是命令。Open Agent Safety Platform 是 OpenShell 加上 Sentry 這套參考設計。OpenShell 是軟體邊界:agent 在 NVIDIA Vera CPU 上跑的時候,它追蹤動作並執行政策。稿子說這個開源 runtime 也可以擴到 Arm 和 Intel。Sentry 是 BlueField-4 DPU 上的帶外看門狗。agent 走出軟體邊界,Sentry 在毫秒內隔離它。稿子稱這是晶片內的強制,信任域是 agent 看不到的。

在 Vera Rubin POD 上,BlueField-4 坐在節點通往模型的唯一路徑上,所以 Sentry 可以不靠主機配合,就在線速上看和擋。Sentry 建在 DOCA 上。新聞稿說 DOCA 用來檢查請求和回應、提供可證明的遙測、驗證 agent 身分,並對資料、工具、API、服務做零信任規則。這些都不在 install.sh 裡。機器上沒有 BlueField-4,你仍然有沙盒和政策。你沒有那個帶外看門狗。教學如果叫筆電使用者「啟用 Sentry」,那是虛構。

Anthropic 出現在新聞稿裡,是合作,不是你 apt-get 的模型。Claude Managed Agents 把 agent 迴圈放在另一台伺服器,工作在沙盒裡執行。和 OpenShell、BlueField 的整合,是企業要在那些沙盒上加邊界時的形狀。那不是上面的 OpenCode 例子,也不是 README 裡一行命令就能把 Claude 裝進 OpenShell 的承諾。

Salesforce 9 月 28 日那篇是邊界的人那一側,而且你得已經在那個堆疊裡。OpenShell 裡的 agent 需要現行網路政策以外的東西時,Slack Admin Bridge 會在 Slack 裡出一張核准卡。憑證留在 Slack 外面。橋接的範圍是送稽核事件、收回核准。Salesforce 說訊息、頻道、使用者資料不會流出 Slack。它有用,是因為 README 說有風險的政策變更要等人,而這是一家廠商把人放的位置。你的位置也可以是已經開著的終端機。

容易漏的開關

遙測預設開著,除非你關。README 說收集的是匿名遙測,限於操作類別和計數。不收集沙盒名稱、主機名稱、檔案路徑、提示詞、憑證、provider 或模型名稱、使用者內容。要關,在 gateway 上設 OPENSHELL_TELEMETRY_ENABLED=false,Helm 則是 server.telemetryEnabled=false。也可以在編譯時拿掉。

技能安裝和 runtime 安裝不是同一條命令:npx skills add NVIDIA/OpenShell。README 說這些技能教 agent 操作 CLI、寫政策、除錯 gateway,而且不需要原始碼目錄。裝技能不會建沙盒。建沙盒也不會裝技能。

SDK 同樣不安裝 CLI。Python 是 uv add openshell。TypeScript 是 npm install @nvidia/openshell-sdk,來自 GitHub Packages,不是公開的 npm,除非 README 之後改了。Go 是 go get github.com/NVIDIA/OpenShell/sdk/go@latest。Rust 的 cargo add 要一個發布 tag。README 的警告是 SDK 和 gateway 用同一個 OpenShell 版本。較新的 SDK 配較舊的 gateway,就是這種表存在的原因。那頁沒有保證它會大聲失敗。

Kubernetes 是另一條路:用 Helm 部署 gateway,而且 CNI 必須執行 NetworkPolicy。教學裡的代理拒絕,在一個不理網路政策的叢集網路上活不了。你如果還在筆電的快速開始,就不是這條路。不要因為發布稿寫了「平台」就從 Helm 開始。

安全問題走 SECURITY.md。README 說漏洞不要開 GitHub issue。

建議的操作順序

主機已經有 Docker 或 Podman 的話,文件支持的順序是兩行安裝,環境裡有金鑰之後建立 provider,從第一個 agent 那頁複製 profile import,然後建立 OpenCode 沙盒,再放一條你看得到它失敗的政策。403 是政策那一半的成功條件。agent 回答了一個提示,是另一半的成功條件。兩個測試不一樣。

文件把它印成不需要點數的例子。例子會過期。

有用的切分,是各頁已經做過、發布稿又塗掉的那一刀。OpenShell 是裝得了的 runtime,預設映像是空的,有政策語言,憑證庫應該只把金鑰注入到核准的主機。Sentry 是特定 NVIDIA 系統設計上的 DPU 看門狗。Slack 橋是住在 Slack 裡的人的核准匣。先裝第一個。第二個放進預算之前先讀完。第三個等 agent 真的撞上你政策本來就要造的牆,再談。

對讀者的意義

實際操作建議:先安裝 CLI,照官方的第一個代理教學走一遍,再套用範例網路政策,確認被擋下的請求會回傳 403。只有在你的基礎設施配備 BlueField 時,才需要另外評估 Sentry。

分享文章 //
READER LETTERS

讀者回應与討論

[ 0 則評論 ]

暫無讀者回應,歡迎發表你的見解。

FURTHER READING

相關文章