其他
需要安全沙箱运行 OpenClaw 常驻 AI 助手时,用…
在 Linux 上为 OpenClaw 常驻 AI 助手创建由 OpenShell 策略管控、走 NVIDIA 云推理的沙箱并编排部署时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 40/100 ×0.15
适用场景
需要安全沙箱运行 OpenClaw 常驻特定
解决思路
- 运行一键安装器:`curl -fsSL https://nvidia.com/nemoclaw.sh | bash`,它会安装 Node.js(如缺失)、运行引导 onboard 向导、创建沙箱、配置推理并应用安全策略。
- 或从源码手动安装:`git clone https://github.com/NVIDIA/NemoClaw.git`,`cd NemoClaw`,`npm install`,`npm run build`,`npm link` 使 `nemoclaw` 全局可用。
- 设置必需环境变量:`export NVIDIA_API_KEY="nvapi-xxxxxxxxxxxx"`,用于 Nemotron 推理的 NVIDIA 云 API key。
- 按需覆盖默认模型:`export NEMOCLAW_MODEL="nvidia/nemotron-3-super-120b-a12b"`。
- 按需设置自定义沙箱数据目录:`export NEMOCLAW_SANDBOX_DIR="/var/nemoclaw/sandboxes"`。
- 到 build.nvidia.com 获取 NVIDIA API key。
- 运行 `nemoclaw onboard` 引导新 agent;交互式向导会提示沙箱名(如 `my-assistant`)、NVIDIA API key(`$NVIDIA_API_KEY`)、推理模型选择、网络与文件系统策略配置。
- onboard 成功后按输出使用:`nemoclaw my-assistant connect` 连接,`nemoclaw my-assistant status` 查看状态,`nemoclaw my-assistant logs --follow` 跟踪日志。
- 运行 `nemoclaw my-assistant connect` 打开沙箱内交互 shell。
- 在沙箱内运行 `openclaw tui` 进行 TUI 交互式聊天。
- 在沙箱内运行 `openclaw agent --agent main --local -m "hello" --session-id test` 发送 CLI 单条消息。
- 使用 host 命令 `nemoclaw onboard` 交互设置 gateway、providers、sandbox。
- 使用 `nemoclaw <name> connect` 打开沙箱内交互 shell。
- 使用 `nemoclaw <name> status` 查看 NemoClaw 层沙箱健康状态。
- 使用 `nemoclaw <name> logs --follow` 流式查看沙箱日志。
- 使用 `nemoclaw start` 启动辅助服务(Telegram bridge、tunnel)。
- 使用 `nemoclaw stop` 停止辅助服务。
- 使用 `nemoclaw deploy <instance>` 通过 Brev 部署到远程 GPU 实例。
- 使用 `openshell term` 启动 OpenShell TUI 进行监控和审批。
- 在沙箱内使用插件命令 `openclaw nemoclaw launch [--profile ...]` 在 OpenShell 沙箱内引导 OpenClaw。
- 在沙箱内使用 `openclaw nemoclaw status` 查看沙箱健康、blueprint 状态和推理。
- 在沙箱内使用 `openclaw nemoclaw logs [-f]` 流式查看 blueprint 执行和沙箱日志。
- 使用 `openshell sandbox list` 列出 OpenShell 层所有沙箱。
- 使用 `openshell sandbox inspect my-assistant` 检查特定沙箱。
- 按架构理解并操作四个组件:Plugin 是 TypeScript CLI(launch、connect、status、logs);Blueprint 是版本化 Python 产物(沙箱创建、策略、推理设置);Sandbox 是隔离的 OpenShell 容器运行 OpenClaw;Inference 是经 OpenShell gateway 路由的 NVIDIA 云模型调用。
- 按 Blueprint 生命周期执行:解析 artifact、验证 digest、规划资源、通过 OpenShell CLI 应用。
- 在 TypeScript 中导入 `NemoClawClient`:`import { NemoClawClient } from '@nvidia/nemoclaw';`。
- 初始化 TypeScript 客户端:传入 `apiKey: process.env.NVIDIA_API_KEY!`,并可选传入 `model: process.env.NEMOCLAW_MODEL ?? 'nvidia/nemotron-3-super-120b-a12b'`。
- 以编程方式创建沙箱:定义 `SandboxConfig`,包含 `name`、`model`、`policy.network.allowedEgressHosts`、`policy.network.blockUnlisted`、`policy.filesystem.allowedPaths`、`policy.filesystem.readOnly`,然后调用 `client.sandbox.create(config)`。
- 连接并发送消息:用 `client.sandbox.get(sandboxName)` 获取沙箱,`await sandbox.connect()` 建立会话,调用 `session.agent.send({ agentId: 'main', message, sessionId: `session-${Date.now()}` })`,读取 `response.content`,最后 `await session.disconnect()`。
- 检查沙箱状态:调用 `client.sandbox.status(sandboxName)`,读取 `name`、`healthy`、`blueprintState`、`inferenceProvider`、`policyVersion`。
- 流式读取日志:调用 `client.sandbox.logs(sandboxName, { follow: true })`,遍历 `entry` 输出 `entry.timestamp`、`entry.level`、`entry.message`。
- 热重载网络策略:构造 `NetworkPolicy`(如 `allowedEgressHosts: ['build.nvidia.com', 'api.github.com']`、`blockUnlisted: true`),调用 `client.sandbox.updatePolicy(sandboxName, { network: updatedPolicy })`。
- 按安全保护层配置和预期行为:Network 阻止未授权出站且可热重载;Filesystem 阻止 `/sandbox` 和 `/tmp` 外读写且创建时锁定;Process 阻止提权和危险 syscall 且创建时锁定;Inference 将模型 API 调用重路由到受控后端且可热重载。
- 当 agent 尝试访问未列出主机时,OpenShell 阻止请求并在 TUI 中展示,由操作员审批。
- 开发用最小沙箱模式:`SandboxConfig` 中设 `network: { blockUnlisted: false }`,`filesystem.allowedPaths: ['/sandbox', '/tmp', '/home/dev']`。
- 生产用严格沙箱模式:`network.allowedEgressHosts: ['build.nvidia.com']`、`blockUnlisted: true`,`filesystem.allowedPaths: ['/sandbox', '/tmp']`、`readOnly: false`。
- 部署到远程 GPU(Brev):运行 `nemoclaw deploy my-gpu-instance --sandbox my-assistant`,或在 TypeScript 中调用 `client.deploy({ instance: 'my-gpu-instance', sandboxName: 'my-assistant', provider: 'brev' })`。
- 排错 `Sandbox not found`:先运行 `openshell sandbox list` 和 `nemoclaw my-assistant status`,因为 NemoClaw 错误和 OpenShell 错误是分开的。
- 排错 NVIDIA API key 缺失或无效:运行 `export NVIDIA_API_KEY="nvapi-xxxxxxxxxxxx"`,然后重新运行 `nemoclaw onboard` 重新配置。
- 排错 Docker 未运行:运行 `sudo systemctl start docker`,`sudo usermod -aG docker $USER`,`newgrp docker`。
- 排错 OpenShell 未安装:先安装 NVIDIA OpenShell,再重新运行 NemoClaw 安装器。
- 处理 agent 出站请求被阻止:运行 `openshell term` 打开 TUI 批准/拒绝请求,或运行 `nemoclaw my-assistant policy update --allow-host api.example.com` 更新策略允许该主机。
- 查看完整调试日志:运行 `nemoclaw my-assistant logs --follow`,或加 verbose flag:`nemoclaw my-assistant logs --follow --level debug`。
- 查阅 NVIDIA NemoClaw 文档:Overview、How It Works、Architecture、Inference Profiles、Network Policies、CLI Commands。
适用边界 · 注意事项
- 不适用于非 Linux Ubuntu 22.04 LTS 或更高版本、未安装 Docker、未安装 NVIDIA OpenShell、或 Node.js 20+/npm 10+ 不满足的环境。
- 不想使用 NVIDIA 云 API/Nemotron 模型或没有 NVIDIA API key 时,不适合用默认推理路径。
- 项目依赖稳定接口时不适合,因为该技能标注为 Alpha,接口和 API 可能无预警变化。