在 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
内置向导将引导您完成设置:
沙盒名称 -- 选择名称 (例如。 my-assistant ) 。名称必须为小写字母数字,且仅带有连字符。
推理提供程序 -- 选择“Local Ollama” (本地 Ollama) (选项 7) 。
模型 -- 选择 qwen3.5: 122b (选项 1) 。
策略预设 -- 在出现提示时接受建议的预设 (按 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 个步骤:
停止 NemoClaw 辅助程序服务和端口转发进程
删除所有 OpenShell 沙盒、NemoClaw 网关和提供程序
删除全局 nemoclaw npm 包
删除 NemoClaw/ OpenShell Docker 容器、镜像和卷
删除 Ollama 模型 (仅使用 --delete-models )
删除 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 | 使用 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 start 输出、强制击杀 kill -9 ,然后运行 nemoclaw start 同样。 | |
Telegram bot receives messages but does not reply | 运行 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 用户指南。