🚀 快速安装

复制以下命令并运行,立即安装此 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 云模型调用

蓝图生命周期:

  1. 解析工件
  2. 验证摘要
  3. 规划资源
  4. 通过 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 原始英文文档,方便对照翻译。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。