1. [主页](/)
2. [查看所有手册](/build-spark)

# 在 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 官网](https://build.nvidia.com/settings/api-keys)( Telegram 桥接器需要)

- 

**Telegram 机器人令牌** 来自 [@BotFather](https://t.me/BotFather)(使用创建一个/newbot )

**软件：**

- 

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

开始之前，请先验证您的系统：

    head -n 2 /etc/os-release nvidia-smi docker info --format &#39;{{.ServerVersion}}&#39;

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

## 准备就绪，然后再开始  

| Item | Where to get it |
| --- | --- |
| NVIDIA API key | [build.nvidia.com/settings/api-keys](https://build.nvidia.com/settings/api-keys) |
| Telegram bot token | [@BotFather](https://t.me/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 &quot; import json, os path = &#39;/etc/docker/daemon.json&#39; d = json.load(open(path)) if os.path.exists(path) else {} d[&#39;default-cgroupns-mode&#39;] = &#39;host&#39; json.dump(d, open(path, &#39;w&#39;), indent=2) &quot;

重启 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 &#39;[Service]\nEnvironment=&quot;OLLAMA\_HOST=0.0.0.0&quot;\n&#39; | 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 &amp; 。手动启动的 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 &quot;hello&quot; --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=\&lt;long-token-here\&gt;

**如果从远程机器访问 Web UI** ，则需要设置端口转发。  
  
首先，找到 Spark 的 IP 地址。在 Spark 上运行：

    hostname -I | awk &#39;{print $1}&#39;

这将打印主要 IP 地址 (例如。 192.168.1.42 ) 。您还可以在 Spark 桌面上的 **“Settings” (设置) \&gt;“Wi-Fi”或“Settings” (设置) \&gt;“Network on the Spark” (网络)** 中找到它，或查看路由器的已连接设备列表。  
  
在 Spark 主机上启动端口转发：

    openshell forward start 18789 my-assistant --background

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

    ssh -L 18789:127.0.0.1:18789 \&lt;your-user\&gt;@\&lt;your-spark-ip\&gt;

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

    http://127.0.0.1:18789/#token=\&lt;long-token-here\&gt;

**重要信息：**

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

## 第 3 阶段 – Telegram 机器人  

**注意：**

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

## 第 9 步 - 创建 Telegram 机器人  

打开 Telegram，找到 [@BotFather](https://t.me/BotFather)，send/newbot 然后按照提示进行操作。复制机器人令牌。

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

确保您位于主机上 (而非沙盒内) 。如果您在沙盒内部，请运行 exit 首先。  
  
设置所需的环境变量。将占位符替换为您的实际值。 SANDBOX\_NAME 必须与您在板载向导中选择的沙盒名称相匹配：

    export TELEGRAM\_BOT\_TOKEN=\&lt;your-bot-token\&gt; export SANDBOX\_NAME=my-assistant export NVIDIA\_API\_KEY=\&lt;your-nvidia-api-key\&gt;

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

    nemoclaw my-assistant policy-add

出现提示时，选择 telegram 单击“Y” ( Y) 进行确认。  
  
启动 Telegram 桥接器。

    export TELEGRAM\_BOT\_TOKEN=\&lt;your-bot-token\&gt; 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=\&lt;your-bot-token\&gt; nemoclaw start

**注意：**

有关限制哪些 Telegram 聊天可以与智能体交互的详细信息，请参阅 [NemoClaw Telegram 桥接器文档](https://docs.nvidia.com/nemoclaw/latest/deployment/set-up-telegram-bridge.html)。

## 第 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 &amp;&amp; ./uninstall.sh | Remove NemoClaw (preserves Docker, Node.js, Ollama) |
| cd ~/.nemoclaw/source &amp;&amp; ./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 - &amp;&amp; sudo apt-get install -y nodejs 然后重新运行安装程序。 |
| npm install fails with EACCES permission error | npm 全局目录不可写 | mkdir -p ~/.npm-global &amp;&amp; npm config set prefix ~/.npm-global &amp;&amp; export PATH=~/.npm-global/bin:$PATH 然后重新运行安装程序。添加 export 行至 ~/.bashrc 使其成为永久性的。 |
| Docker permission denied | 不在 docker 组中的用户 | sudo usermod -aG docker $USER 然后注销并重新登录。 |
| Gateway fails with cgroup / &quot;Failed to start ContainerManager&quot; errors | 未在 DGX Spark 上为主机 cgroup 命名空间配置 Docker | 运行 cgroup 修复： sudo python3 -c &quot;import json, os; path=&#39;/etc/docker/daemon.json&#39;; d=json.load(open(path)) if os.path.exists(path) else {}; d[&#39;default-cgroupns-mode&#39;]=&#39;host&#39;; json.dump(d, open(path,&#39;w&#39;), indent=2)&quot; 然后 sudo systemctl restart docker 。或者，运行 sudo nemoclaw setup-spark 它会自动应用此修复。 |
| nemoclaw: command not found after install | 另一个 OpenShell 网关或容器使用端口 8080 | 停止冲突的容器： openshell gateway destroy -g 或 docker stop &amp;&amp; docker rm 然后重试 nemoclaw onboard 。 |
| Installer fails with Node.js version error | 网关状态过时或 DNS 未传播 | 运行 openshell gateway destroy &amp;&amp; openshell gateway start 然后重新运行安装程序或 nemoclaw onboard 。 |
| Docker permission denied | DGX Spark GB10 以不同方式报告统一内存 | 预期在 DGX Spark 上运行。该向导仍然有效，并使用 Ollama 进行推理。 |
| Gateway fails with &quot;port 8080 is held by container...&quot; | Ollama 无法运行或无法访问 | 请检查 Ollama： curl http://localhost:11434 。如果未运行： ollama serve &amp; 。如果正在运行，但从沙盒无法访问，请确保将 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 &#39;sync; echo 3 \&gt; /proc/sys/vm/drop\_caches&#39;

有关最新已知问题，请查看 [DGX Spark 用户指南](https://docs.nvidia.com/dgx/dgx-spark/known-issues.html)。

* * *

## 资源

 ![](https://developer.download.nvidia.com/icons/m48-document.svg)

### NemoClaw  

 ![](https://developer.download.nvidia.com/icons/m48-misc-question-faq.svg)

### NemoClaw  文档

 ![](https://developer.download.nvidia.com/icons/m48-document.svg)

### OpenClaw 文档  

 ![](https://developer.download.nvidia.com/icons/m48-document.svg)

### DGX Spark 文档

 ![](https://developer.download.nvidia.com/icons/m48-misc-question-faq.svg)

### DGX Spark 论坛


