网络安全

使用 OpenClaw 和 NVIDIA NemoClaw 构建更安全、始终运行的本地 AI 智能体

智能体正在从问答系统发展为长期运行的自主助手,可读取文件、调用 API 并驱动多步骤工作流。但是,部署智能体来执行代码和使用工具而不进行适当隔离会带来真正的风险,尤其是在使用第三方云基础设施时,由于数据隐私和控制的原因。

NVIDIA NemoClaw 是一个开源参考堆栈,通过编排 NVIDIA OpenShell 来运行 OpenClaw,一个自托管网关,可将消息传递平台与由 NVIDIA Nemotron 等开放模型驱动的 AI 编码智能体相连接。NemoClaw 增加了引导式载入、生命周期管理、图像强化和版本化蓝图,提供了从模型推理到更安全的交互式智能体部署的完整流程。

本教程将介绍如何在 NVIDIA DGX Spark 上部署 NemoClaw,从配置运行时环境和在本地提供模型,到安装 NemoClaw 堆栈并将其连接到 Telegram 以进行远程访问,不一而足。您将构建一个在硬件上运行的本地沙盒 AI 助手,可通过任何 Telegram 客户端访问。

视频 1. 演示如何设置长时间运行的自主智能体

访问本教程的以下资源:

* 软件和模型:

代码和文档:

预备知识

有关完整的设置说明,请访问适用于 NemoClaw 的 DGX Spark 剧本,或者无需硬件即可开始使用

如果您计划使用其他设备,我们将在文档中列出的替代部署设备上对 NemoClaw 进行测试和验证,请检查 API/VLLM 功能

开始设置之前,请确保满足以下要求:

  • 硬件:运行 Ubuntu 24.04 LTS 的 DGX Spark (GB10) 系统,以及最新的 NVIDIA 驱动程序。
  • Docker: 28.x 版本或更高版本,配置了 NVIDIA 容器运行时 (将在下一节中介绍) 。
  • Ollama:安装为本地模型服务引擎。
  • Telegram 机器人词元: 通过 Telegram 的 BotFather 创建 (详情请参阅 Telegram 集成部分) 。

预计时间:大约 20 – 30 分钟的活动设置时间,以及 15 – 30 分钟的初始模型下载时间 (约 87 GB) ,具体取决于网络带宽。

以下命令可验证系统就绪情况:

head -n 2 /etc/os-release    # Expected: Ubuntu 24.04
nvidia-smi                     # Expected: NVIDIA GB10 GPU
docker info --format '{{.ServerVersion}}'  # Expected: 28.x+

NemoClaw 组件

在构建沙盒助手之前,务必要了解此环境中使用的软件。

组件 是什么 它的作用 何时使用
NVIDIA NemoClaw 包含编排层和安装程序的参考堆栈 安装 OpenClaw 和 OpenShell 以及策略和推理。 在更安全的沙盒中创建全天候助手的最快方式。
NVIDIA OpenShell 安全运行时和网关 执行安全边界 (沙盒) 、管理凭据和代理网络/ API 调用。 当您需要一个“围墙花园”来运行智能体时,无需公开敏感信息或启用无限制的网络访问。
OpenClaw 多渠道智能体框架 位于沙盒中。管理聊天平台 ( Slack/ Discord) 、内存和工具集成。 当您需要创建连接到消息传递应用和持久内存的长期智能体时。
NVIDIA Nemotron 3 Super 120B 智能体优化的 LLM ( 120B 参数) 为“大脑”提供高指令遵循和多步骤推理能力。 适用于需要使用工具并遵循复杂工作流程的生产级助手。
NVIDIA NIM/Ollama 推理部署 在本地运行 Nemotron 模型 如果您有 GPU,并且想在本地运行 LLM
表 1. NVIDIA NemoClaw 堆栈的架构组件

安全注意事项:虽然 OpenShell 提供了强大的隔离功能,但请记住,没有任何沙盒能够针对高级提示注入提供全面保护。在测试新工具时,始终在独立系统上进行部署。

我们开始吧。

配置运行时

DGX Spark 需要几个 Docker 配置步骤来支持具有适当隔离设置的 GPU 加速容器。首先,通过 Docker 注册 NVIDIA 容器运行时:

sudo nvidia-ctk runtime configure --runtime=docker

接下来,将 cgroup 命名空间模式设置为 host。此配置是 DGX Spark 正常处理容器化工作负载所必需的:

sudo python3 -c "
import json, os
path = '/etc/docker/daemon.json'
d = json.load(open(path)) if os.path.exists(path) else {}
d['default-cgroupns-mode'] = 'host'
json.dump(d, open(path, 'w'), indent=2)
"
Restart Docker to apply the changes and verify that the NVIDIA runtime is functioning:
sudo systemctl restart docker
docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

输出应显示 GB10 GPU。为避免后续 Docker 命令需要 sudo,请将当前用户添加到 Docker 组:

sudo usermod -aG docker $USER
newgrp docker

安装 Ollama

Ollama 是一个轻量级模型服务引擎,用于在本地运行大语言模型。使用官方安装程序进行安装:

curl -fsSL https://ollama.com/install.sh | sh

默认情况下,Ollama 仅会在本地主机上侦听。由于 NemoClaw 智能体在沙盒中运行,并且拥有自己的网络命名空间,因此它必须跨越网络边界到达 Ollama。将 Ollama 配置为在所有接口上侦听:

sudo mkdir -p /etc/systemd/system/ollama.service.d                                                                                                                                                                                           
printf '[Service]\nEnvironment="OLLAMA_HOST=0.0.0.0"\n' | \    
  sudo tee /etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload                                                                                                                                                                                                                 
sudo systemctl restart ollama

验证 Ollama 是否在所有接口上运行并可访问:

curl http://0.0.0.0:11434

重要提示:只能通过 systemd 启动 Ollama。手动启动的 Ollama 进程不会接收 OLLAMA_HOST = 0.0.0.0 优设,并且 NemoClaw 沙盒无法到达推理服务器。

sudo systemctl restart ollama

接下来,拉取 Nemotron 3 Super 120B 模型。下载约为 87 GB:

ollama pull nemotron-3-super:120b

下载完成后,将模型权重预加载到 GPU 显存中,以避免首次智能体交互出现冷启动延迟:

ollama run nemotron-3-super:120b

加载模型并给出提示后,使用 /bye 退出会话。权重仍将缓存在内存中。确认模型可用:

ollama list
# You should see something like
NAME                     ID              SIZE     MODIFIED                                                                                                                                                                                        nemotron-3-super:120b    95acc78b3ffd    86 GB    2 weeks ago   

安装 NemoClaw

基础准备就绪后,只需一条命令即可安装 NemoClaw:

curl -fsSL https://www.nvidia.com/nemoclaw.sh | bash

安装程序提供 Node.js 依赖项、OpenShell 运行时和 NemoClaw CLI,然后启动载入向导。向导将提示您选择以下配置选项:

  1. 沙盒名称: 指定带连字符的小写字母和数字名称 (例如 my-assistant) 。所有后续命令均使用此名称。
  2. 推理提供程序:选择Local Ollama (本地 Ollama) (选项 7) ,将推理路由到本地 Ollama 实例。
  3. 模型: 选择 nemotron-3-super:120b (选项 1)。
  4. 策略预设:如果您接受默认策略,请按 Y。这些预设可配置沙盒的文件系统和网络限制。
  5. Telegram 集成:您可以选择在入门向导的第 5 步中配置 Telegram 机器人。

入职流程结束后,安装程序会以 http://127.0.0.1:18789/#token=<long-token-here> 的格式显示标记化的 Web UI URL。记录此 URL,因为它是将来访问 Web 控制面板所必需的,并且不会再次显示。

如果安装后 nemoclaw 命令无法识别,请重新加载 shell 环境,以便在未来的所有会话中启用该命令:

source ~/.bashrc

验证设置

连接到沙盒并验证智能体能否到达推理后端:

nemoclaw my-assistant connect

此命令返回模型信息,确认沙盒环境可以与 Ollama 通信。接下来,通过智能体发送测试消息:

openclaw agent --agent main --local -m "hello" --session-id test

如果配置正确,NVIDIA Nemotron 3 Super 会生成响应。请注意,使用 120B 模型进行推理时,每个响应通常需要 30 – 90 秒,对于运行本地推理的这种规模的模型,预计需要 30 – 90 秒。

交互式终端 UI 提供更具对话性的测试体验:

openclaw tui

完成后,使用 Ctrl+C 退出终端 UI。

访问 Web UI

要在本地访问 Web 控制面板,请退出沙盒,然后打开载入过程中记录的标记化 URL:

exit

然后在浏览器中导航至 http://127.0.0.1:18789/#词元=** long-词元-here >。

从另一台机器进行远程访问。 如果您要通过网络而非直接访问 DGX Spark,则需要进行其他配置。首先,确定 Spark 的 IP 地址:

hostname -I | awk '{print $1}'

通过 Spark 的终端会话启动端口转发:

openshell forward start 18789 my-assistant --background

在远程机器中,创建通往 Spark 的 SSH 隧道:

ssh -L 18789:127.0.0.1:18789 <your-user>@<your-spark-ip>

激活隧道后,在远程机器的浏览器中打开 http://127.0.0.1:18789/#词元=** long-词元-here >。

注意:仅使用 127.0.0.1localhost 可能会导致“origin not allowed”错误。

连接到 Telegram

Telegram 集成将助手扩展到本地终端之外,使其可以通过具有 Telegram 客户端的任何设备进行访问。

创建 Telegram 机器人

打开 Telegram 并搜索 BotFather 以管理您的机器人。开始对话并使用 /newbot 命令。@BotFather 会指导您命名机器人,并在完成后提供 API 词元。保存此词元以执行以下配置步骤。

注意: 如果您在 NemoClaw 载入向导程序中配置了 Telegram,则 Telegram 已在沙盒中运行。

如果您在入门期间未配置 Telegram,请使用词元设置重新运行入门向导。这将使用烘焙的 Telegram 重建沙盒。机器人词元已在 OpenShell 网关中注册,不会直接进入沙盒。

export TELEGRAM_BOT_TOKEN=<your-bot-token>
nemoclaw onboard     

验证集成

打开 Telegram,找到机器人,然后发送消息。首次接触时,OpenClaw 需要配对。机器人将使用配对代码作出响应:

OpenClaw: access not configured.
Your Telegram user id: <your-id>
Pairing code: <CODE>

在沙盒内批准配对:

nemoclaw my-assistant connect 
openclaw pairing approve telegram <CODE>
exit

在 Telegram 中发送另一条消息。在推理延迟窗口后,机器人应返回由 NVIDIA Nemotron 3 Super 生成的响应。

此时,部署已完成。AI 助手完全在 NVIDIA DGX Spark 上运行,沙盒由 OpenShell 提供,由 120B 开放模型提供动力支持,并可通过 Telegram 远程访问。所有推理均在本地进行,数据不会离开设备,运行时也不存在外部服务依赖项。

可以引用哪些命令进行部署?

以下命令对于持续管理 NemoClaw 部署非常有用。

命令 说明
nemoclaw my-assistant connect 在沙盒中打开 shell 会话。
nemoclaw my-assistant status 显示沙盒状态。
nemoclaw my-assistant logs --follow 流式传输实时沙盒日志。
nemoclaw list 列出所有已配置的沙盒。
nemoclaw start / nemoclaw stop 启动或停止辅助服务 ( Telegram 桥接器等) 。) 。
openshell forward start 18789 my-assistant --background 为远程 Web UI 访问启用端口转发。
表 2. 用于编排、监控和访问 NemoClaw 智能体环境的命令

用于彻底卸载的命令

对于清理和卸载,NemoClaw 在 ~/.nemoclaw/source/uninstall.sh 提供了卸载程序。请参阅说明页面,了解有关清理标志和排除常见问题的详细信息。

通过策略审批扩展智能体访问权限

默认情况下,沙盒会将智能体限制为一组有限的网络端点。当您要求智能体执行需要外部服务的操作时。

例如,在获取网页或调用第三方 API 时,OpenShell 会阻止请求,智能体会报告网络访问不可用。

要查看此操作,请在主机上的一个终端中打开 OpenShell TUI:

openshell term

在第二个终端中,连接到沙盒并开始对话:

openclaw tui

要求智能体执行“use curl to fetch https://httpbin.org/get”等操作。

代理会尝试请求,OpenShell 会阻止该请求,TUI 会显示已阻止的与目标主机、端口和发起该请求的二进制文件的连接。

在 TUI 中,您可以批准当前会话的请求,也可以拒绝该请求以阻止端点。

如果要永久添加端点,请使用主机的策略预设:

nemoclaw my-assistant policy-add

此审批流程可让您实时查看和控制智能体可以访问的内容,而无需修改基本策略或重启沙盒。

开始使用

立即开始使用 NVIDIA NemoClaw 进行构建。

通过订阅NVIDIA 新闻并在LinkedInXDiscordYouTube上关注 NVIDIA AI,及时了解NVIDIA NemoClaw

请访问 NemoClaw 页面,获取入门资源。在 GitHub 上探索 NemoClaw,并在 Playbook 上找到 build.nvidia.com

标签