🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx skills add https://skills.sh/aradotso/trending-skills/nvidia-nemoclaw
💡 提示:需要 Node.js 和 NPM
NVIDIA NemoClaw
技能由 ara.so 提供 — Daily 2026 Skills 系列。
NVIDIA NemoClaw 是一个开源的 TypeScript CLI 插件,简化了安全运行 OpenClaw 始终在线 AI 助手的过程。它安装并编排 NVIDIA OpenShell 运行时,创建策略强制的沙箱,并通过 NVIDIA 云(Nemotron 模型)路由所有推理。网络出口、文件系统访问、系统调用和模型 API 调用都受声明性策略管控。
状态: 阿尔法版 — 接口和 API 可能会更改,恕不另行通知。
安装
前提条件
- Linux Ubuntu 22.04 LTS 或更高版本
- Node.js 20+ 和 npm 10+(推荐 Node.js 22)
- 已安装并运行 Docker
- 已安装 NVIDIA OpenShell
一键安装
curl -fsSL https://nvidia.com/nemoclaw.sh | bash
此操作安装 Node.js(如果缺失),运行引导向导,创建沙箱,配置推理并应用安全策略。
手动安装(从源码)
git clone https://github.com/NVIDIA/NemoClaw.git
cd NemoClaw
npm install
npm run build
npm link # 使 `nemoclaw` 全局可用
环境变量
# 必需:用于 Nemotron 推理的 NVIDIA 云 API 密钥
export NVIDIA_API_KEY="nvapi-xxxxxxxxxxxx"
# 可选:覆盖默认模型
export NEMOCLAW_MODEL="nvidia/nemotron-3-super-120b-a12b"
# 可选:自定义沙箱数据目录
export NEMOCLAW_SANDBOX_DIR="/var/nemoclaw/sandboxes"
在 build.nvidia.com 获取 API 密钥。
快速开始
1. 创建新智能体
nemoclaw onboard
交互式向导会提示:
- 沙箱名称(例如
my-assistant) - NVIDIA API 密钥(
$NVIDIA_API_KEY) - 推理模型选择
- 网络和文件系统策略配置
成功时的预期输出:
──────────────────────────────────────────────────
沙箱 my-assistant (Landlock + seccomp + netns)
模型 nvidia/nemotron-3-super-120b-a12b (NVIDIA 云 API)
──────────────────────────────────────────────────
运行: nemoclaw my-assistant connect
状态: nemoclaw my-assistant status
日志: nemoclaw my-assistant logs --follow
──────────────────────────────────────────────────
[INFO] === 安装完成 ===
2. 连接到沙箱
nemoclaw my-assistant connect
3. 与智能体聊天(在沙箱内)
TUI(交互式聊天):
sandbox@my-assistant:~$ openclaw tui
CLI(单条消息):
sandbox@my-assistant:~$ openclaw agent --agent main --local -m "hello" --session-id test
主要 CLI 命令
主机命令(nemoclaw)
| 命令 | 描述 |
|---|---|
nemoclaw onboard |
交互式设置:网关、提供商、沙箱 |
nemoclaw <name> connect |
在沙箱内打开交互式 shell |
nemoclaw <name> status |
显示 NemoClaw 级别的沙箱健康状态 |
nemoclaw <name> logs --follow |
流式传输沙箱日志 |
nemoclaw start |
启动辅助服务(Telegram 桥接、隧道) |
nemoclaw stop |
停止辅助服务 |
nemoclaw deploy <instance> |
通过 Brev 部署到远程 GPU 实例 |
openshell term |
启动 OpenShell TUI 进行监控和审批 |
插件命令(openclaw nemoclaw,在沙箱内运行)
注意:这些功能正在积极开发中 — 使用
nemoclaw主机 CLI 作为主要接口。
| 命令 | 描述 |
|---|---|
openclaw nemoclaw launch [--profile ...] |
在 OpenShell 沙箱内引导 OpenClaw |
openclaw nemoclaw status |
显示沙箱健康状态、蓝图状态和推理状态 |
openclaw nemoclaw logs [-f] |
流式传输蓝图执行和沙箱日志 |
OpenShell 检查
# 列出 OpenShell 层的所有沙箱
openshell sandbox list
# 检查特定沙箱
openshell sandbox inspect my-assistant
架构
NemoClaw 编排四个组件:
| 组件 | 角色 |
|---|---|
| 插件 | TypeScript CLI:启动、连接、状态、日志 |
| 蓝图 | 版本化的 Python 工件:沙箱创建、策略、推理设置 |
| 沙箱 | 隔离的 OpenShell 容器,运行 OpenClaw,具有策略强制的出口/文件系统 |
| 推理 | 通过 OpenShell 网关路由的 NVIDIA 云模型调用 |
蓝图生命周期:
- 解析工件
- 验证摘要
- 规划资源
- 通过 OpenShell CLI 应用
TypeScript 插件用法
NemoClaw 暴露了用于构建自定义集成的程序化 TypeScript API。
导入并初始化
import { NemoClawClient } from '@nvidia/nemoclaw';
const client = new NemoClawClient({
apiKey: process.env.NVIDIA_API_KEY!,
model: process.env.NEMOCLAW_MODEL ?? 'nvidia/nemotron-3-super-120b-a12b',
});
以编程方式创建沙箱
import { NemoClawClient, SandboxConfig } from '@nvidia/nemoclaw';
async function createSandbox() {
const client = new NemoClawClient({
apiKey: process.env.NVIDIA_API_KEY!,
});
const config: SandboxConfig = {
name: 'my-assistant',
model: 'nvidia/nemotron-3-super-120b-a12b',
policy: {
network: {
allowedEgressHosts: ['build.nvidia.com'],
blockUnlisted: true,
},
filesystem: {
allowedPaths: ['/sandbox', '/tmp'],
readOnly: false,
},
},
};
const sandbox = await client.sandbox.create(config);
console.log(`沙箱已创建:${sandbox.id}`);
return sandbox;
}
连接并发送消息
import { NemoClawClient } from '@nvidia/nemoclaw';
async function chatWithAgent(sandboxName: string, message: string) {
const client = new NemoClawClient({
apiKey: process.env.NVIDIA_API_KEY!,
});
const sandbox = await client.sandbox.get(sandboxName);
const session = await sandbox.connect();
const response = await session.agent.send({
agentId: 'main',
message,
sessionId: `session-${Date.now()}`,
});
console.log('智能体回复:', response.content);
await session.disconnect();
}
chatWithAgent('my-assistant', '总结最新的 NVIDIA 财报。');
检查沙箱状态
import { NemoClawClient } from '@nvidia/nemoclaw';
async function checkStatus(sandboxName: string) {
const client = new NemoClawClient({
apiKey: process.env.NVIDIA_API_KEY!,
});
const status = await client.sandbox.status(sandboxName);
console.log({
sandbox: status.name,
healthy: status.healthy,
blueprint: status.blueprintState,
inference: status.inferenceProvider,
policyVersion: status.policyVersion,
});
}
流式传输日志
import { NemoClawClient } from '@nvidia/nemoclaw';
async function streamLogs(sandboxName: string) {
const client = new NemoClawClient({
apiKey: process.env.NVIDIA_API_KEY!,
});
const logStream = client.sandbox.logs(sandboxName, { follow: true });
for await (const entry of logStream) {
console.log(`[${entry.timestamp}] ${entry.level}:${entry.message}`);
}
}
应用网络策略更新(热重载)
import { NemoClawClient, NetworkPolicy } from '@nvidia/nemoclaw';
async function updateNetworkPolicy(sandboxName: string) {
const client = new NemoClawClient({
apiKey: process.env.NVIDIA_API_KEY!,
});
// 网络策略可以在运行时热重载
const updatedPolicy: NetworkPolicy = {
allowedEgressHosts: [
'build.nvidia.com',
'api.github.com',
],
blockUnlisted: true,
};
await client.sandbox.updatePolicy(sandboxName, {
network: updatedPolicy,
});
console.log('网络策略已更新(热重载已应用)。');
}
安全/保护层
| 层 | 保护内容 | 是否支持热重载? |
|---|---|---|
| 网络 | 阻止未经授权的出站连接 | ✅ 是 |
| 文件系统 | 防止在 /sandbox 和 /tmp 之外进行读写 |
❌ 创建时锁定 |
| 进程 | 阻止权限提升和危险系统调用 | ❌ 创建时锁定 |
| 推理 | 将模型 API 调用重路由到受控后端 | ✅ 是 |
当智能体尝试访问未列出的主机时,OpenShell 会阻止该请求并在 TUI 中显示以供操作员审批。
常见模式
模式:用于开发的最小沙箱
const config: SandboxConfig = {
name: 'dev-sandbox',
model: 'nvidia/nemotron-3-super-120b-a12b',
policy: {
network: { blockUnlisted: false }, // 开发环境宽松
filesystem: { allowedPaths: ['/sandbox', '/tmp', '/home/dev'] },
},
};
模式:生产环境严格沙箱
const config: SandboxConfig = {
name: 'prod-assistant',
model: 'nvidia/nemotron-3-super-120b-a12b',
policy: {
network: {
allowedEgressHosts: ['build.nvidia.com'],
blockUnlisted: true,
},
filesystem: {
allowedPaths: ['/sandbox', '/tmp'],
readOnly: false,
},
},
};
模式:部署到远程 GPU(Brev)
nemoclaw deploy my-gpu-instance --sandbox my-assistant
await client.deploy({
instance: 'my-gpu-instance',
sandboxName: 'my-assistant',
provider: 'brev',
});
故障排除
错误:未找到沙箱
错误:未找到沙箱 'my-assistant'
修复: 在 OpenShell 层检查 — NemoClaw 错误和 OpenShell 错误是分开的:
openshell sandbox list
nemoclaw my-assistant status
错误:NVIDIA API 密钥缺失或无效
错误:推理提供商认证失败
修复:
export NVIDIA_API_KEY="nvapi-xxxxxxxxxxxx"
nemoclaw onboard # 重新运行以重新配置
错误:Docker 未运行
错误:无法连接到 Docker 守护进程
修复:
sudo systemctl start docker
sudo usermod -aG docker $USER # 将当前用户添加到 docker 组
newgrp docker
错误:未安装 OpenShell
错误:未找到 'openshell' 命令
修复: 首先安装 NVIDIA OpenShell,然后重新运行 NemoClaw 安装程序。
智能体在出站请求时被阻止
当您在 TUI 中看到被阻止的请求通知时:
openshell term # 打开 TUI 以批准/拒绝请求
# 或更新策略以允许该主机:
nemoclaw my-assistant policy update --allow-host api.example.com
查看完整调试日志
nemoclaw my-assistant logs --follow
# 或使用详细标志
nemoclaw my-assistant logs --follow --level debug
文档链接
📄 原始文档
完整文档(英文):
https://skills.sh/aradotso/trending-skills/nvidia-nemoclaw
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

评论(0)