在 DGX Spark 上安装 NemoClaw

在 DGX Spark 上安装 NemoClaw,并集成本地 Ollama 推理和 Telegram 机器人集成

基本思路

NVIDIA NemoClaw 是一个开源参考堆栈,可简化始终开启的 OpenClaw 助手的运行,提高安全性。它安装 NVIDIA OpenShell 运行时 (一种专为执行具有额外安全性的代理而设计的环境) 和 Qwen 等开源模型。只需一个安装程序命令即可处理 Node.js、OpenShell 和 NemoClaw CLI,然后引导您完成板载向导,使用 Ollama 和 Qwen 3.5 在 DGX Spark 上创建沙盒代理。

在本剧本的结尾部分,您将在 OpenShell 沙盒中拥有一个正在运行的 AI 智能体,可通过 Web 控制面板和 Telegram 机器人进行访问,推理将路由到 Spark 上的本地 Qwen 3.5 122B 模型,而无需向智能体公开您的主机文件系统或网络。

您将完成

  • 在 DGX Spark 上为 OpenShell 配置 Docker 和 NVIDIA 容器运行时

  • 安装 Ollama,拉取 Qwen 3.5 122B,并对其进行配置以访问沙盒

  • 使用单个命令 (处理 Node.js、OpenShell 和 CLI) 安装 NemoClaw

  • 运行板载向导以创建沙盒并配置本地推理

  • 通过 CLI、TUI 和 Web UI 与智能体交流

  • 设置 Telegram 机器人,将消息转发到您的沙盒智能体

通知和免责声明

以下各节将介绍运行此演示时的安全、风险和责任。

快速启动安全检查

仅使用干净的环境。在没有个人数据、机密信息或敏感凭据的新设备或 VM 上运行此演示。像沙盒一样保持隔离。

安装此演示版即表示您对所有第三方组件负责,包括审查其许可证、条款和安全状况。请先阅读并接受,然后再安装或使用。

您将获得

此体验“按原样”提供,仅用于演示目的,不作任何保证,也不作任何保证。这是一个演示,不是生产就绪型解决方案。您需要为自己的环境和用例实施适当的安全控制。

AI 智能体的主要风险

  • 数据泄露 -- 智能体访问的任何材料都可能被暴露、泄露或被盗。

  • 恶意代码执行 -- 智能体或其连接的工具可能会使您的系统面临恶意代码或网络攻击。

  • 意外操作 -- 智能体可能会在未经明确批准的情况下修改或删除文件、发送消息或访问服务。

  • 提示注入和操作 -- 外部输入或连接的内容可能会以意想不到的方式劫持智能体的行为。

参与者确认

参加此演示,即表示您确认对您的配置以及您连接的任何数据、帐户和工具全权负责。在法律允许的最大范围内,对于因您配置或使用 NemoClaw 演示材料 (包括 OpenClaw 或任何关联的工具或服务) 而导致的任何数据损失、设备损坏、安全事件或其他损害,NVIDIA 概不负责。

隔离层 (OpenShell)

Layer
What it protects
When it applies
Filesystem
Prevents reads/writes outside allowed paths.
Locked at sandbox creation.
Network
Blocks unauthorized outbound connections.
Hot-reloadable at runtime.
Process
Blocks privilege escalation and dangerous syscalls.
Locked at sandbox creation.
Inference
Reroutes model API calls to controlled backends.
Hot-reloadable at runtime.

前置知识

  • Linux 终端和 SSH 的基本用法

  • 熟悉 Docker (权限, docker run )

  • 熟悉 Ollama 本地对上述安全和风险部分的了解程度
    模型服务

预备知识

硬件和访问:

  • 配备键盘和显示器或 SSH 访问权限的 DGX Spark (GB10)

  • 来自以下来源的 NVIDIA API 密钥NVIDIA 官网( Telegram 桥接器需要)

  • Telegram 机器人令牌来自 @BotFather(使用创建一个/newbot )

软件:

  • 全新安装带有最新更新的 DGX 操作系统

开始之前,请先验证您的系统:

head -n 2 /etc/os-release
nvidia-smi
docker info --format '{{.ServerVersion}}'

预期配置:Ubuntu 24.04、NVIDIA GB10 GPU、Docker 28.x 以上。

准备就绪,然后再开始

Item
Where to get it
NVIDIA API key
Telegram bot token
@BotFather 在 Telegram 上创建 /newbot

预期配置:Ubuntu 24.04、NVIDIA GB10 GPU、Docker 28.x 以上。

辅助文件

所有必需素材均由 NemoClaw 安装程序处理。无需手动克隆。

时间和风险

  • 预计时间:20 - 30 分钟 ( Ollama 和模型已下载) 。首次下载模型会增加大约 15 - 30 分钟的时间,具体时间取决于网络速度。
  • 风险级别:中等 - 您在沙盒中运行 AI 智能体;风险通过隔离来降低,但不会消除。使用干净的环境,请勿连接敏感数据或生产帐户。
  • 上次更新时间:2026 年 3 月 31 日
    • 首次发布

第 1 阶段 – 预备知识

这些步骤为 NemoClaw 准备了全新的 DGX Spark。如果 Docker、NVIDIA 运行时和 Ollama 已配置,请跳至第 2 阶段。

第 1 步 – 配置 Docker 和 NVIDIA 容器运行时

OpenShell 的网关在 Docker 中运行 k3。在 DGX Spark ( Ubuntu 24.04、cgroup v2) 上,Docker 必须配置为 NVIDIA 运行时和主机 cgroup 命名空间模式。

为 Docker 配置 NVIDIA 容器运行时:

sudo nvidia-ctk runtime configure --runtime=docker

在 DGX Spark 上设置 OpenShell 所需的 cgroup 命名空间模式:

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)
"

重启 Docker:

sudo systemctl restart docker

验证 NVIDIA 运行时是否正常:

docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

如果您在以下位置收到“Permission Denified” (权限被拒绝) 错误消息 docker 将用户添加到 Docker 组,并在当前会话中激活新组:

sudo usermod -aG docker $USER
newgrp docker

这将立即应用组更改。或者,您可以注销并重新登录,而无需运行 newgrp docker 。

注意:

DGX Spark 使用 cgroup v2。OpenShell 的网关在 Docker 中嵌入 k3,并且需要访问主机 cgroup 命名空间。无 default-cgroupns-mode: host 网关可能会失败,并出现“Failed to start ContainerManager” (无法启动容器管理器) 错误。

第 2 步 – 安装 Ollama

安装 Ollama:

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

配置 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

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

curl http://0.0.0.0:11434

预期: Ollama is running 。如果没有,请从 sudo systemctl start ollama 。

重要信息:

始终通过 systemd 启动 Ollama ( sudo systemctl restart ollama ) - 请勿使用 ollama serve & 。手动启动的 Ollama 进程无法获取 OLLAMA_HOST=0.0.0.0 以上设置,NemoClaw 沙盒将无法访问推理服务器。

第 3 步 - 拉取 Qwen 3.5 模型

下载 Qwen 3.5 122B (~ 81 GB;可能需要 15 - 30 分钟,具体取决于网络速度) :

ollama pull qwen3.5:122b

简要运行,以将权重预加载到内存中 (类型为 /bye 退出操作) :

ollama run qwen3.5:122b

验证模型是否可用:

ollama list

您应该看到 Qwen 3.5: 122B 输出。

第 2 阶段  – 安装并运行 NemoClaw

第 4 步 - 安装 NemoClaw

此命令可处理一切:安装 Node.js (如果需要) 、安装 OpenShell、克隆最新的稳定 NemoClaw 版本、构建 CLI,以及运行板载向导以创建沙盒。

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

内置向导将引导您完成设置:

  1. 沙盒名称 -- 选择名称 (例如。 my-assistant ) 。名称必须为小写字母数字,且仅带有连字符。

  2. 推理提供程序 -- 选择“Local Ollama” (本地 Ollama) (选项 7) 。

  3. 模型 -- 选择 qwen3.5: 122b (选项 1) 。

  4. 策略预设 -- 在出现提示时接受建议的预设 (按 Y 键) 。

完成后,您将看到如下输出:

──────────────────────────────────────────────────
Dashboard    http://localhost:18789/
Sandbox      my-assistant (Landlock + seccomp + netns)
Model        qwen3.5:122b (Local Ollama)
──────────────────────────────────────────────────
Run:         nemoclaw my-assistant connect
Status:      nemoclaw my-assistant status
Logs:        nemoclaw my-assistant logs --follow
──────────────────────────────────────────────────

重要提示:

保存最后打印的标记化 Web UI URL,您将在第 8 步中需要它。看起来像: http://127.0.0.1:18789/#token=

注意:

如果 nemoclaw 安装后未找到,运行 source ~/.bashrc 重新加载 shell 路径。

第 5 步 - 连接到沙盒并验证推理

连接到沙盒:

nemoclaw my-assistant connect

您将看到 sandbox@my-assistant:~$ -- 您现在已进入沙盒环境。

验证推理路由是否有效:

curl -sf https://inference.local/v1/models

预期:JSON 列表 qwen3.5:122b。

第 6 步 - 与智能体 (CLI) 对话

仍在沙盒内,发送测试消息:

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

智能体将使用 Qwen 3.5进行响应。对于本地运行的 122B 参数模型,初始响应可能需要 30 到 90 秒。

第 7 步 - 交互式 TUI

启动交互式聊天会话的终端用户界面:

openclaw tui

按 Ctrl+ C 退出 TUI。

第 8 步 - 退出沙盒并访问 Web UI

退出沙盒以返回主机:

exit

如果直接在 Spark (已连接键盘和显示器) 上访问 Web UI,请打开浏览器并导航至第 4 步中的标记化 URL:

http://127.0.0.1:18789/#token=<long-token-here>

如果从远程机器访问 Web UI,则需要设置端口转发。

首先,找到 Spark 的 IP 地址。在 Spark 上运行:

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

这将打印主要 IP 地址 (例如。 192.168.1.42 ) 。您还可以在 Spark 桌面上的 “Settings” (设置) >“Wi-Fi”或“Settings” (设置) >“Network on the Spark” (网络) 中找到它,或查看路由器的已连接设备列表。

在 Spark 主机上启动端口转发:

openshell forward start 18789 my-assistant --background

然后,在您的远程机器中,创建通往 Spark 的 SSH 隧道 (替换 与上面的 IP 地址对应) :

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

现在,在远程机器的浏览器中打开标记化 URL:

http://127.0.0.1:18789/#token=<long-token-here>

重要信息:

使用 127.0.0.1 ,不是 localhost -- 网关原点检查需要完全匹配。

第 3 阶段 – Telegram 机器人

注意:

如果您已在 NemoClaw 载入向导程序 (步骤 5/ 8) 中配置 Telegram,则可以跳过此阶段。这些步骤包括在初始设置后添加 Telegram。

第 9 步 - 创建 Telegram 机器人

打开 Telegram,找到 @BotFather,send/newbot 然后按照提示进行操作。复制机器人令牌。

第 10 步 - 配置并启动 Telegram 桥接器

确保您位于主机上 (而非沙盒内) 。如果您在沙盒内部,请运行 exit 首先。

设置所需的环境变量。将占位符替换为您的实际值。 SANDBOX_NAME 必须与您在板载向导中选择的沙盒名称相匹配:

export TELEGRAM_BOT_TOKEN=<your-bot-token>
export SANDBOX_NAME=my-assistant
export NVIDIA_API_KEY=<your-nvidia-api-key>

将 Telegram 网络策略添加到沙盒中:

nemoclaw my-assistant policy-add

出现提示时,选择 telegram 单击“Y” ( Y) 进行确认。

启动 Telegram 桥接器。

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

Telegram 桥接器仅在 TELEGRAM_BOT_TOKEN 设置环境变量。验证服务是否正在运行:

nemoclaw status

打开 Telegram,找到您的机器人,然后向其发送消息。机器人将其转发给智能体并回复。

注意:

对于本地运行的 120B 参数模型,第一个响应可能需要 30--90 秒。

注意:

如果桥接器未显示在 nemoclaw status 、确保 TELEGRAM_BOT_TOKEN 在您运行的同一个 shell 会话中导出 nemoclaw start 。您还可以尝试停止并重启:

nemoclaw stop
export TELEGRAM_BOT_TOKEN=<your-bot-token>
nemoclaw start

注意:

有关限制哪些 Telegram 聊天可以与智能体交互的详细信息,请参阅 NemoClaw Telegram 桥接器文档

第 4 阶段 - 清理和卸载

第 11 步 - 停止服务

停止任何正在运行的辅助服务 ( Telegram 桥接器、Cloudflared 隧道) :

nemoclaw stop

停止端口向前:

openshell forward list          # find active forwards
openshell forward stop 18789    # stop the dashboard forward

第 12 步 - 卸载 NemoClaw

从克隆的源目录中运行卸载程序。它会删除所有沙盒、OpenShell 网关、Docker 容器/ 图像/ 卷、CLI 和所有状态文件。保留 Docker、Node.js、npm 和 Ollama。

cd ~/.nemoclaw/source
./uninstall.sh

卸载程序标志:

Flag
Effect
--yes
Skip the confirmation prompt
--keep-openshell
退出 openshell 二进制文件到位
--delete-models
同时删除由 NemoClaw 提取的 Ollama 模型

要删除包括 Ollama 模型在内的所有内容,请执行以下操作:

./uninstall.sh --yes --delete-models

卸载程序运行 6 个步骤:

  1. 停止 NemoClaw 辅助程序服务和端口转发进程

  2. 删除所有 OpenShell 沙盒、NemoClaw 网关和提供程序

  3. 删除全局 nemoclaw npm 包

  4. 删除 NemoClaw/ OpenShell Docker 容器、镜像和卷

  5. 删除 Ollama 模型 (仅使用 --delete-models )

  6. 删除 N删除状态目录 ( ~/.nemoclaw 、 ~/.config/openshell 、 ~/.config/nemoclaw ) 和 OpenShell 二进制文件
    emoClaw/ OpenShell Docker 容器、镜像和卷

注意:

源克隆地址为 ~/.nemoclaw/source 在步骤 6 的状态清理中删除。如果您想保留本地副本,请在运行卸载程序之前将其移动或备份。

第 12 步 - 有用的命令

Command
Description
nemoclaw my-assistant connect
Shell into the sandbox
nemoclaw my-assistant status
Show sandbox status and inference config
nemoclaw my-assistant logs --follow
Stream sandbox logs in real time
nemoclaw list
List all registered sandboxes
nemoclaw start
Start auxiliary services (Telegram bridge, cloudflared)
nemoclaw stop
Stop auxiliary services
openshell term
Open the monitoring TUI on the host
openshell forward list
List active port forwards
openshell forward start 18789 my-assistant --background
Restart port forwarding for Web UI
cd ~/.nemoclaw/source && ./uninstall.sh
Remove NemoClaw (preserves Docker, Node.js, Ollama)
cd ~/.nemoclaw/source && ./uninstall.sh --delete-models
删除 NemoClaw 和 Ollama 模型
错误
原因
修复
nemoclaw: command not found after install
Shell PATH 未更新
运行 source ~/.bashrc (或 source ~/.zshrc 或者打开一个新的终端窗口。
Installer fails with Node.js version error
低于 20 的 Node.js 版本
安装 Node.js 20%: curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs 然后重新运行安装程序。
npm install fails with EACCES permission error
npm 全局目录不可写
mkdir -p ~/.npm-global && npm config set prefix ~/.npm-global && export PATH=~/.npm-global/bin:$PATH 然后重新运行安装程序。添加 export 行至 ~/.bashrc 使其成为永久性的。
Docker permission denied
不在 docker 组中的用户
sudo usermod -aG docker $USER 然后注销并重新登录。
Gateway fails with cgroup / "Failed to start ContainerManager" errors

未在 DGX Spark 上为主机 cgroup 命名空间配置 Docker
运行 cgroup 修复: 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)" 然后 sudo systemctl restart docker 。或者,运行 sudo nemoclaw setup-spark 它会自动应用此修复。
nemoclaw: command not found after install
另一个 OpenShell 网关或容器使用端口 8080
停止冲突的容器: openshell gateway destroy -g 或 docker stop && docker rm 然后重试 nemoclaw onboard 。
Installer fails with Node.js version error
网关状态过时或 DNS 未传播
运行 openshell gateway destroy && openshell gateway start 然后重新运行安装程序或 nemoclaw onboard 。
Docker permission denied
DGX Spark GB10 以不同方式报告统一内存
预期在 DGX Spark 上运行。该向导仍然有效,并使用 Ollama 进行推理。
Gateway fails with "port 8080 is held by container..."
Ollama 无法运行或无法访问
请检查 Ollama: curl http://localhost:11434 。如果未运行: ollama serve & 。如果正在运行,但从沙盒无法访问,请确保将 Ollama 配置为 0.0.0.0 (请参阅说明中的步骤 2) 。
Agent gives no response or is very slow
本地运行的 120B 模型的正常情况
Qwen 3.5 122B 每次响应可能需要 30 到 90 秒。验证推理路由: nemoclaw my-assistant status 。
Port 18789 already in use
另一个进程与端口绑定
lsof -i :18789 然后 kill 。如果需要, kill -9 强制终止。
Web UI port forward dies or dashboard unreachable
端口转发未激活
openshell forward stop 18789 my-assistant 然后 openshell forward start 18789 my-assistant --background 。
Web UI shows origin not allowed
通过 localhost 而不是 127.0.0.1
使用 http://127.0.0.1:18789/#token=... 在浏览器中打开。网关原点检查需要 127.0.0.1 确切地说。
Telegram bridge does not start
缺少环境变量
确保 TELEGRAM_BOT_TOKEN 以及 SANDBOX_NAME 在主机上进行设置。 SANDBOX_NAME 必须与载入时的沙盒名称相匹配。
Telegram bridge needs restart but nemoclaw stop does not work
中的已知错误 nemoclaw stop
从 nemoclaw start 输出、强制击杀 kill -9 ,然后运行 nemoclaw start 同样。
Telegram bot receives messages but does not reply
未添加到沙盒中的 Telegram 策略
运行 nemoclaw my-assistant policy-add 类型 telegram ,单击 Y。然后,使用以下命令重新启动桥接器: nemoclaw start 。

注意:

DGX Spark 使用统一内存架构 (UMA),支持 GPU 和 CPU 之间的动态内存共享。由于许多应用程序仍在更新以利用 UMA,即使在 DGX Spark 的内存容量范围内,您也可能会遇到内存问题。如果发生这种情况,请手动刷新缓冲区缓存:

sudo sh -c 'sync; echo 3 > /proc/sys/vm/drop_caches'

有关最新已知问题,请查看 DGX Spark 用户指南


资源

NemoClaw

NemoClaw  文档

OpenClaw 文档

DGX Spark 文档

DGX Spark 论坛