#Ollama #RTX5080 #CUDA #Windows #OpenClaw #开发环境

新 9800X3D + RTX 5080 主机组装完成,v2rayA 代理已配置。本文记录完整的环境搭建流程:CUDA 推理栈、开发环境、Docker、SSH,以及接入现有 AI 推理生态(Ollama + OpenClaw)。


一、整机信息与网络架构

项目
CPU AMD Ryzen 9 9800X3D
GPU NVIDIA RTX 5080 (Blackwell GB203)
系统 Windows 11
局域网 IP 192.168.2.10(WLAN,需设为 Private 网络配置文件)
SSH 别名 milin_desktop
代理 v2rayA ✅ 已完成
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MacBook Air M1 (192.168.2.13)
└── ssh milin_desktop → 192.168.2.10

N100 (192.168.2.14)
└── Docker: openclaw → OPENCLAW_LLM_API_URL=http://192.168.2.10:11434
OPENCLAW_LLM_MODEL=qwen3.5-35b-a3b:latest

5080 主机 / milin_desktop (192.168.2.10) ← 本文主角
├── v2rayA ✅
├── NVIDIA Driver 610.74 + CUDA 12.8 + cuDNN 9.x ✅
├── Ollama(NSSM 服务,RTX 5080 GPU 推理)✅
├── Python / Miniconda / PyTorch 2.11+cu128 ✅
├── VS Code + 开发工具链
├── Docker Desktop
└── OpenSSH Server ✅

旧 Win11 推理机 / milin_win11 (192.168.2.12, i9 + 2070S) ← 模型来源 / 备用

二、磁盘空间预估(先看再装)

建议在开始安装前规划好 C/D 盘分工,避免 C 盘不足影响游戏空间。

各组件占用

组件 C 盘占用 说明
Windows 11(含更新) ~30 GB 不可移动
虚拟内存(pagefile) ~16 GB 系统自动管理,可迁移到 D
NVIDIA Game Ready Driver ~1.5 GB 不可移动
CUDA Toolkit 12.8 ~3.5 GB 可选择安装路径(建议 C)
cuDNN 9.x ~0.8 GB 手动解压,可放 D
Ollama 应用 ~0.5 GB %LOCALAPPDATA%,不可移动
Ollama 模型(默认 C) ~28 GB 强烈建议迁移到 D 盘
Python / Miniconda ~5 GB(base) 建议安装到 D
PyTorch + CUDA 包 ~8 GB 随 conda 环境走
VS Code ~0.5 GB 不可移动
Git ~0.5 GB 不可移动
MSVC Build Tools ~8 GB 可选 D 盘
Docker Desktop(WSL2 VHD) ~15-30 GB 强烈建议迁移到 D 盘
v2rayA + 其他工具 ~0.5 GB
系统临时文件 / 缓冲 ~10 GB

C 盘评估

C 盘大小 可用游戏空间(按推荐方案) 结论
256 GB ~256 - 80 = 176 GB 够用,需将模型和 Docker 迁移到 D
500 GB ~500 - 80 = 420 GB 充裕,一般无需迁移
1 TB ~1024 - 80 = 944 GB 完全自由

推荐方案(C 盘最小占用 ~80 GB)

  • Ollama 模型 → D 盘(节省 28 GB)

  • Docker Desktop VHD → D 盘(节省 15-30 GB)

  • Python/Miniconda → D 盘(节省 13 GB)

  • 游戏安装到 D 盘

⚠️ 如果 C 盘 < 256 GB,先执行迁移步骤再安装大型软件。


三、NVIDIA 驱动 + CUDA + cuDNN

3.1 确认驱动版本

RTX 5080 (Blackwell SM 12.0) 需要驱动 575.x 或更高(CUDA 12.8 最低驱动要求)。

1
2
3
4
# 查看当前驱动版本
nvidia-smi
# 第一行应包含 Driver Version: 575.xx 或更高
# CUDA Version: 12.8

若版本过低,前往 NVIDIA 官网下载 Game Ready Driver(gaming 场景)或 Studio Driver(推理/开发场景)。

3.2 安装 CUDA Toolkit 12.8

前往 developer.nvidia.com/cuda-downloads,选择:

  • OS: Windows → Architecture: x86_64 → Version: 11 → Installer Type: exe (local)

安装时选择自定义安装,取消勾选"NVIDIA GeForce Experience"和"PhysX"(节省空间)。

1
2
3
4
5
6
7
# 安装完成后验证
nvcc --version
# nvcc: NVIDIA (R) Cuda compiler driver ... release 12.8

# 检查环境变量(应已自动添加)
$env:CUDA_PATH
# C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8

3.3 安装 cuDNN 9.x

前往 developer.nvidia.com/cudnn(需 NVIDIA 账号),下载 cuDNN 9.x for CUDA 12.x(Windows zip 包,约 800 MB)。

GUI 操作:浏览器登录 NVIDIA Developer,下载 cudnn-windows-x86_64-9.x.x.x_cuda12-archive.zip

解压后将三个目录合并复制到 CUDA 安装目录:

1
2
3
4
5
6
7
# 假设 cuDNN 解压到 D:\cudnn-9.x
$cuda = "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8"
$cudnn = "D:\cudnn-9.x"

Copy-Item "$cudnn\bin\*" "$cuda\bin\" -Recurse -Force
Copy-Item "$cudnn\include\*" "$cuda\include\" -Recurse -Force
Copy-Item "$cudnn\lib\x64\*" "$cuda\lib\x64\" -Recurse -Force

验证:

1
2
3
# cuDNN 头文件存在即安装成功
Test-Path "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\include\cudnn.h"
# True

四、Ollama 安装与 GPU 推理

4.1 安装

前往 ollama.com 下载 Windows 安装包(exe),一路默认安装。安装完成后 Ollama 以系统托盘 App 形式运行。

注意:Ollama Windows 托盘 App 会将 OLLAMA_HOST 强制设为 http://127.0.0.1:11434,忽略系统环境变量,无法直接监听局域网(见下节 portproxy 解决方案)。

4.2 迁移模型目录到 D 盘(推荐)

默认模型存放在 C:\Users\<用户名>\.ollama\models约 28 GB),建议迁移到 D 盘:

GUI 操作Win + S → “编辑系统环境变量” → “环境变量” → “系统变量” → 新建:

1
2
变量名: OLLAMA_MODELS
变量值: D:\ollama-models

设置后重启 Ollama 托盘 App(右键托盘图标 → Quit → 重新打开)。

4.3 获取模型

方案 A:直接从 Ollama 仓库拉取

1
2
3
4
5
6
# 需走代理(推荐 v2rayA 已配置好),下载 22 GB 约 9 分钟(100 Mbps)
ollama pull qwen3.5-35b-a3b:latest

# 轻量备用
ollama pull qwen3:8b
ollama pull nomic-embed-text

方案 B:从局域网同机迁移(推荐,零流量)

若同一局域网内已有其他 Ollama 实例持有模型,可直接传输 blob 文件,无需从互联网下载。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 1. 在源机查找 blob 路径(源机 SSH 上执行)
ls ~/.ollama/models/blobs/
# → sha256-4d5921fb6409...(GGUF 主体,22 GB)
# → sha256-f960271ec8f8...(config,348 B)
# → sha256-f1a59cb852df...(params,31 B)

# 2. 传输小 blob(通过 SSH pipe,秒完成)
ssh 源机 "cat ~/.ollama/models/blobs/sha256-f960271..." | \
ssh milin_desktop "cat > D:\\ollama-models\\blobs\\sha256-f960271..."

# 3. 传输 22 GB GGUF(源机开 HTTP server,目标机 curl 下载)
# 源机(schtasks 后台运行,脱离 SSH 会话)
ssh 源机 "schtasks /Create /F /SC ONCE /ST 00:00 /TN ModelSrv \
/TR 'python -m http.server 8080 --directory ~/.ollama/models/blobs' \
/RU SYSTEM"
schtasks /Run /TN ModelSrv

# 目标机(curl 流式写磁盘,约 38 MB/s on LAN)
curl -o D:\ollama-models\blobs\sha256-4d5921... \
http://192.168.2.12:8080/sha256-4d5921...

# 4. 写入 manifest(Ollama 凭此识别模型)
$dir = "D:\ollama-models\manifests\registry.ollama.ai\library\qwen3.5-35b-a3b"
New-Item -ItemType Directory -Path $dir -Force
Set-Content "$dir\latest" '{"schemaVersion":2,...}' # 从源机获取完整 JSON

:写完 manifest 后无需重启 Ollama 服务,ollama list 立即可见模型。传输前先在目标机执行 Add-MpPreference -ExclusionPath 'D:\ollama-models' 排除 Defender 扫描,否则写速度从 38 MB/s 降至 1 MB/s。

4.4 验证 GPU 推理

1
2
3
4
5
# 启动模型(首次加载较慢,之后有缓存)
ollama run qwen3:8b "你好,简单回复"

# 同时打开任务管理器 → 性能 → GPU
# 确认 GPU 3D 占用率 > 0%(而非 Copy/Compute 为 0)

五、Ollama 直接绑定局域网(NSSM 服务方案)

本文采用 NSSM 服务替代 Ollama Windows 托盘 App,可以完整控制环境变量,不需要 portproxy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装 NSSM(若未安装)
winget install NSSM.NSSM

# 创建 Ollama 服务
nssm install ollama "C:\Users\milin\AppData\Local\Programs\Ollama\ollama.exe"
nssm set ollama AppParameters serve
nssm set ollama AppEnvironmentExtra OLLAMA_HOST=0.0.0.0:11434
nssm set ollama AppEnvironmentExtra+ OLLAMA_MODELS=D:\ollama-models

# 启动
nssm start ollama

# 验证监听地址(应为 0.0.0.0:11434,而非 127.0.0.1:11434)
netstat -ano | findstr 11434

托盘 App 会强制覆盖 OLLAMA_HOST(即使设了系统环境变量),NSSM 服务不受此影响。


六、Windows 防火墙入站规则

管理员身份运行 PowerShell:

1
2
3
4
5
6
7
8
9
10
11
# Ollama(注意:Profile 设为 Any 以覆盖 Public 网络情况)
New-NetFirewallRule `
-DisplayName 'Ollama LAN' `
-Direction Inbound -Protocol TCP -LocalPort 11434 `
-Action Allow -Profile Any

# SSH
New-NetFirewallRule `
-DisplayName 'OpenSSH LAN' `
-Direction Inbound -Protocol TCP -LocalPort 22 `
-Action Allow -Profile Any

关键坑:Windows 新连接 WiFi 时默认设为 Public 网络配置文件,而 Private/Domain Profile 规则对 Public 网络无效。需手动改为 Private,或将规则 Profile 设为 Any:

1
2
# 推荐:将局域网 WiFi 改为 Private(更安全)
Set-NetConnectionProfile -Name "你的WiFi名" -NetworkCategory Private

从 Mac 验证 Ollama 可达(绕过代理):

1
curl --noproxy '*' -s http://192.168.2.10:11434/api/tags | python3 -m json.tool

Windows Defender 排除项:大文件写入时 Defender 实时扫描会将传输速度从 38 MB/s 降至 1 MB/s。需将模型目录加入排除:

1
Add-MpPreference -ExclusionPath 'D:\ollama-models'

七、OpenSSH Server

1
2
3
4
5
6
7
8
9
10
# 安装
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# 启动并设为自启(默认为手动,重启后不自动启动)
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

# 验证
Get-Service sshd
# Status: Running

7.1 各设备免密 SSH 互信矩阵

方向 源机器 目标机器 场景
Mac M1 (lin) milin_desktop (milin) 日常 SSH / VS Code Remote
Mac M1 (lin) N100 (milin) 服务器管理(可能已配置)
milin_desktop (milin) Mac M1 (lin) 文件推送、OpenClaw SSH 工具
milin_desktop (milin) N100 (milin) 跨机开发、脚本部署
N100/OpenClaw (root) milin_desktop (milin) Agent 远程执行任务

Windows 授权密钥路径说明

  • 普通用户:C:\Users\milin\.ssh\authorized_keys
  • 管理员组成员(本机 milin 为管理员)C:\ProgramData\ssh\administrators_authorized_keys
  • 两个文件都存在时,sshd 优先读管理员文件

① Mac → milin_desktop(Windows)

Windows 端跨平台 ssh-copy-id 实现详见 《Windows ssh-copy-id:跨平台公钥一键安装脚本》

1
2
# Mac 上执行(先尝试 ssh-copy-id)
ssh-copy-id -i ~/.ssh/id_rsa.pub milin@192.168.2.10

若报错(Windows 路径问题),改为手动:

1
2
# Mac 上获取公钥内容
cat ~/.ssh/id_rsa.pub
1
2
3
4
5
6
7
8
9
# Windows PowerShell(管理员)粘贴执行
$key = "ssh-rsa AAAA...(完整公钥内容)"
$dir = "C:\ProgramData\ssh"
If (!(Test-Path $dir)) { New-Item -Force -Path $dir -ItemType Directory }
Add-Content "$dir\administrators_authorized_keys" $key

# 修正权限(Windows sshd 要求严格)
icacls "$dir\administrators_authorized_keys" `
/inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
1
2
# Mac 验证(应无需密码)
ssh milin_desktop "hostname"

② Mac → N100(Linux)

1
2
3
4
5
# Mac 上执行(标准流程)
ssh-copy-id -i ~/.ssh/id_rsa.pub milin@192.168.2.14

# 验证
ssh MyUbuntuLocal "echo ok"

③ milin_desktop → Mac(Windows 发起)

1
2
3
4
5
# 在 Windows PowerShell 生成密钥对(若 C:\Users\milin\.ssh\id_rsa 不存在)
ssh-keygen -t rsa -b 4096 -C "milin_desktop" -f "$env:USERPROFILE\.ssh\id_rsa" -N '""'

# 查看公钥
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
1
2
3
4
5
6
7
# 在 Mac 上将上面输出的公钥追加到 authorized_keys
echo "ssh-rsa AAAA...(Windows 公钥内容)" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# 从 Windows 验证
# (在 Windows PowerShell 中)
ssh lin@192.168.2.13

④ milin_desktop → N100(Windows 发起)

1
2
# Windows 公钥(与上面 ③ 相同,一个密钥对用于多台机器)
Get-Content "$env:USERPROFILE\.ssh\id_rsa.pub"
1
2
3
4
5
6
# 在 N100 上追加
echo "ssh-rsa AAAA...(Windows 公钥内容)" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# 从 Windows 验证
ssh milin@192.168.2.14

⑤ N100/OpenClaw → milin_desktop(Linux 发起)

OpenClaw 容器已有专用 SSH key(/root/.openclaw/.ssh/openclaw_id),将其公钥添加到 Windows。

1
2
# 在 N100 上获取 OpenClaw 容器的公钥
ssh MyUbuntuLocal "docker exec openclaw cat /root/.openclaw/.ssh/openclaw_id.pub"
1
2
3
4
5
6
7
# 在 Windows PowerShell(管理员)追加
$key = "ssh-rsa AAAA...(OpenClaw 公钥内容)"
Add-Content "C:\ProgramData\ssh\administrators_authorized_keys" $key

# 重新修正权限
icacls "C:\ProgramData\ssh\administrators_authorized_keys" `
/inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

在 OpenClaw 的 openclaw.json 中配置新的 SSH 连接目标:

1
2
// 示例:添加 milin_desktop 为可操作节点
// 具体字段视 OpenClaw SSH 工具版本而定
1
2
3
# 从 N100 验证(模拟 OpenClaw 容器)
ssh MyUbuntuLocal "docker exec openclaw ssh -i /root/.openclaw/.ssh/openclaw_id \
-o StrictHostKeyChecking=no milin@192.168.2.10 hostname"

八、更新 Mac SSH config

编辑 ~/.ssh/config,追加:

1
2
3
4
5
6
7
8
9
10
11
12
Host milin_desktop
HostName 192.168.2.10
User milin
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 30
ServerAliveCountMax 5

Host milin_win11
HostName 192.168.2.12
User milin_win11
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 30

验证:

1
ssh milin_desktop "hostname && echo OK"

九、开发环境

9.1 Git

前往 git-scm.com 下载安装包,安装时选择:

  • Default editor: VS Code(后面安装)

  • Line endings: Checkout as-is, commit as-is(跨平台项目按需选择)

1
2
3
4
5
6
# 验证
git --version

# 配置身份
git config --global user.name "Milin-Chen"
git config --global user.email "your@email.com"

9.2 Python / Miniconda(推荐安装到 D 盘)

前往 docs.anaconda.com/miniconda 下载 Windows 安装包。

GUI 安装:运行安装包 → 选择 “Just Me” → 安装路径改为 D:\miniconda3(节省 C 盘)→ 不勾选"Add to PATH"(用 conda prompt 或 VS Code 集成)

1
2
3
# 用 conda prompt 验证
conda --version
python --version

9.3 PyTorch + CUDA 12.8(AI 推理环境)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建专用环境(推荐 Python 3.12)
conda create -n torch python=3.12 -y
conda activate torch

# 安装 PyTorch 2.7+(CUDA 12.8 / Blackwell 支持)
# 前往 https://pytorch.org/get-started/locally/ 确认最新命令
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

# 验证 GPU 可用
python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
# True
# NVIDIA GeForce RTX 5080

# 已安装版本:torch-2.11.0+cu128(2026-07-18)

离线/代理环境可用 schtasks 后台运行:

1
2
D:\miniconda3\python.exe -m pip install torch --index-url https://download.pytorch.org/whl/cu128 `
--proxy http://127.0.0.1:20171 --progress-bar off >> C:\Temp\pytorch_install.log 2>&1

注意:RTX 5080 (Blackwell SM 12.0) 需要 PyTorch 2.7+ 才有原生 Blackwell 内核优化。早期版本可运行但性能不完整。

9.4 C++ 开发环境

方案 A:MSVC Build Tools(轻量,推荐)

前往 visualstudio.microsoft.com/visual-cpp-build-tools 下载安装包(~8 GB)。

GUI 安装:运行安装包 → 勾选"使用 C++ 的桌面开发"→ 右侧组件保留默认 → 安装

1
2
3
# 验证(用 Developer Command Prompt for VS 2022)
cl
# Microsoft (R) C/C++ Optimizing Compiler Version 19.xx

方案 B:MSYS2 / MinGW-w64(Linux 风格 GCC,可并行安装)

1
2
3
4
5
# 用 winget 安装
winget install MSYS2.MSYS2

# 在 MSYS2 终端中安装工具链
pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-cmake make

C:\msys64\ucrt64\bin 添加到系统 PATH。

1
2
3
# 验证
g++ --version
cmake --version

9.5 VS Code

前往 code.visualstudio.com 下载安装包。

GUI 安装:安装时勾选"添加到右键菜单"两个选项,方便从资源管理器直接打开

推荐安装扩展(Ctrl+Shift+X):

扩展 用途
Python (Microsoft) Python 语言支持
C/C++ (Microsoft) C++ 语言支持
Remote - SSH (Microsoft) SSH 远程开发
Jupyter (Microsoft) Notebook 支持
GitLens Git 增强
Pylance Python 类型检查
1
2
# 在 Mac 上通过 SSH 远程开发(安装 Remote-SSH 扩展后)
# VS Code → F1 → Remote-SSH: Connect to Host → milin_desktop

9.6 Claude Code

方式 A:CLI(推荐,基于 Node.js)

先安装 Node.js LTS:

1
2
3
4
5
winget install OpenJS.NodeJS.LTS
# 安装完后重开 PowerShell 使 PATH 生效

node --version # v22.x 或更高
npm --version

安装 Claude Code CLI:

1
2
3
4
npm install -g @anthropic-ai/claude-code

# 验证
claude --version

首次使用需在浏览器完成账号授权:

1
2
claude
# 自动打开浏览器 → 用 Anthropic 账号登录 → 授权完成后返回终端

在项目目录中启动:

1
2
cd D:\your-project
claude

方式 B:VS Code 扩展(GUI 操作)

Ctrl+Shift+X → 搜索 “Claude Code” → 安装 → 登录

扩展与 CLI 共享同一账号认证,二者可并存。

WSL2 中使用(推荐用于 Linux 项目)

1
2
3
# 在 WSL2 Ubuntu 终端中
npm install -g @anthropic-ai/claude-code
claude

WSL2 中的 Claude Code 可直接访问 Windows 文件(/mnt/d/...),推荐用于跨平台开发。


十、Docker Desktop

10.1 安装前提:WSL2

1
2
3
# 管理员 PowerShell
wsl --install
# 安装 WSL2 + Ubuntu(需重启)

重启后继续设置 Ubuntu 用户名密码。

10.2 安装 Docker Desktop

前往 docker.com/products/docker-desktop 下载安装包。

GUI 安装:推荐选择 WSL2 backend(默认)

10.3 迁移 Docker 数据到 D 盘

Docker Desktop WSL2 VHD 默认在 C:\Users\<用户名>\AppData\Local\Docker,可占用 15-30 GB,建议迁移:

GUI 操作:Docker Desktop → Settings → Resources → Advanced → Disk image location,改为 D:\Docker

或用 WSL2 方式迁移(更彻底):

1
2
3
4
5
6
7
8
9
10
11
12
# 关闭 Docker Desktop
# 导出 docker-desktop WSL
wsl --export docker-desktop D:\wsl-docker-desktop.tar
wsl --export docker-desktop-data D:\wsl-docker-desktop-data.tar

# 注销原有
wsl --unregister docker-desktop
wsl --unregister docker-desktop-data

# 导入到 D 盘
wsl --import docker-desktop D:\Docker\desktop D:\wsl-docker-desktop.tar
wsl --import docker-desktop-data D:\Docker\data D:\wsl-docker-desktop-data.tar

10.4 验证

1
2
3
docker run hello-world
docker run --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi
# 应输出 GPU 信息,确认 CUDA 容器访问正常

十一、将 OpenClaw 切换到新主机

编辑 N100 上的 /home/milin/dockerfile/openclaw/.env

1
2
3
4
5
6
7
ssh MyUbuntu "sed -i 's|OPENCLAW_LLM_API_URL=.*|OPENCLAW_LLM_API_URL=http://192.168.2.10:11434|' \
/home/milin/dockerfile/openclaw/.env"
ssh MyUbuntu "sed -i 's|OPENCLAW_LLM_MODEL=.*|OPENCLAW_LLM_MODEL=qwen3.5-35b-a3b:latest|' \
/home/milin/dockerfile/openclaw/.env"

# 验证
ssh MyUbuntu "grep OPENCLAW_LLM /home/milin/dockerfile/openclaw/.env"

重启容器使配置生效(.env 变更需 restart,不会热重载):

1
ssh MyUbuntu "cd /home/milin/dockerfile/openclaw && docker compose down && docker compose up -d"

已在 OpenClaw 配置的主力 LLM:

配置项
OPENCLAW_LLM_PROVIDER ollama
OPENCLAW_LLM_API_URL http://192.168.2.10:11434
OPENCLAW_LLM_MODEL qwen3.5-35b-a3b:latest
OPENCLAW_LLM_FALLBACK_PROVIDER anthropic
OPENCLAW_LLM_FALLBACK_MODEL claude-sonnet-4-6

十二、验证完整链路

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 1. Ollama API 可达(Mac 上执行)
curl --noproxy '*' -s http://192.168.2.10:11434/api/tags | python3 -c "
import json,sys
for m in json.load(sys.stdin)['models']:
print(m['name'])
"
# → qwen3.5-35b-a3b:latest

# 2. N100 → milin_desktop Ollama 可达
ssh MyUbuntu "curl -s --max-time 10 http://192.168.2.10:11434/api/tags | python3 -c \
'import json,sys; [print(m[\"name\"]) for m in json.load(sys.stdin)[\"models\"]]'"

# 3. SSH 直连 GPU 状态
ssh milin_desktop "nvidia-smi"

# 4. OpenClaw 推理验证(从 N100 调用 milin_desktop Ollama)
ssh MyUbuntu "curl -s --max-time 60 http://192.168.2.10:11434/api/generate \
-d '{\"model\":\"qwen3.5-35b-a3b:latest\",\"prompt\":\"say hi\",\"stream\":false,\"options\":{\"num_predict\":10}}' \
| python3 -c 'import sys,json; print(json.load(sys.stdin)[\"response\"])'"

十三、完整配置检查清单

基础网络与系统

# 步骤 操作 状态
1 v2rayA 代理
2 OpenSSH Server Add-WindowsCapability OpenSSH.Server + Automatic
3 防火墙规则 22 New-NetFirewallRule -LocalPort 22 -Profile Any
4 Mac SSH config 追加 Host milin_desktop + Host milin_win11
5 ① Mac → milin_desktop 免密 ssh-copy-id 或手动写 authorized_keys
5b ② Mac → N100 免密 ssh-copy-id milin@192.168.2.14
5c ③④ milin_desktop → Mac/N100 免密 生成 Windows 密钥对,推公钥到两端
5d ⑤ N100/OpenClaw → milin_desktop 免密 openclaw_id.pub → Windows authorized_keys

CUDA 推理栈

# 步骤 操作 状态
6 NVIDIA Driver ≥ 575.x nvidia-smi 确认 ✅ 610.74
7 CUDA Toolkit 12.8 官网下载安装 ✅ nvcc 12.8
8 cuDNN 9.x zip 解压复制到 CUDA 目录
9 Ollama 安装 + NSSM 服务 nssm install ollama + OLLAMA_HOST=0.0.0.0:11434
10 模型目录迁移至 D 盘 + Defender 排除 OLLAMA_MODELS=D:\ollama-modelsAdd-MpPreference -ExclusionPath 'D:\ollama-models'
11 模型获取 从 milin_win11(192.168.2.12)局域网传输 qwen3.5-35b-a3b Q4_K_M(22 GB,~9 min)
12 portproxy 设置 不需要,Ollama NSSM 服务直接绑定 0.0.0.0:11434
13 防火墙规则 11434 + 网络 Private “Ollama LAN” 规则 -Profile Any;WiFi 改为 Private

开发环境

# 步骤 操作 状态
14 Git git-scm.com 安装 + 配置用户名
15 Miniconda (D 盘) D:\miniconda3,已 conda init powershell
16 PyTorch CUDA 12.8 torch-2.11.0+cu128,2026-07-18 安装完成
17 MSVC Build Tools C++ 桌面开发工作负载
18 MSYS2/MinGW (可选) winget install MSYS2.MSYS2
19 VS Code code.visualstudio.com
20 VS Code 扩展 Python / C++ / Remote-SSH
21 Node.js LTS winget install OpenJS.NodeJS.LTS
22 Claude Code CLI + 登录 npm install -g @anthropic-ai/claude-code;需本机浏览器 OAuth

Docker(milin_desktop)

# 步骤 操作 状态
23 WSL2 wsl --install + 重启
24 Docker Desktop docker.com 安装
25 迁移 Docker 数据到 D Settings → Disk image location
26 CUDA 容器验证 docker run --gpus all nvidia/cuda...

⚠️ WSL2 使用 networkingMode=mirrored(不要用 bridged)。bridged 模式会将物理 WiFi 网卡加入 Hyper-V 软件网桥,导致所有 Windows 流量经过软件桥,LAN 传输速度从 40 MB/s 降至 100 KB/s。

OpenClaw 接入

# 步骤 操作 状态
27 更新 .env LLM 配置 OPENCLAW_LLM_API_URL=http://192.168.2.10:11434OPENCLAW_LLM_MODEL=qwen3.5-35b-a3b:latest
28 重启 OpenClaw 容器 docker compose down && docker compose up -d
29 端到端推理验证 N100 → milin_desktop Ollama 推理,首次加载 ~9s,后续正常

十四、旧 2070S 主机处置

旧 Win11 机器(192.168.2.12, i9 + RTX 2070 Super)可保留为备用:

1
2
3
4
5
// openclaw.json fallback 链(可选)
"fallbacks": [
"ollama/qwen3.5-35b-a3b:latest",
"anthropic/claude-sonnet-4-6"
]

旧机现有 NSSM Ollama 服务和防火墙规则无需改动,随时可切回(修改 .envOPENCLAW_LLM_API_URL 并重启 OpenClaw)。


十五、llama.cpp 推理性能测试(2026-07-19)

Ollama 底层虽然也是 llama.cpp,但直接使用 llama.cpp 的 llama-server 在 prompt 处理速度上有显著优势。

15.1 测试环境

  • 模型:qwen3.5-35b-a3b Q4_K_M(20.49 GiB,34.66B 参数,MoE 架构)

  • GPU:RTX 5080 16GB VRAM

  • llama.cpp 版本:b10067(CUDA 12.4 build)

  • 安装路径:D:\llamacpp\,模型硬链接至 D:\llamacpp\qwen3.5-35b-a3b-q4km.gguf

15.2 Benchmark 结果

配置 pp128 (tok/s) pp512 (tok/s) pp2048 (tok/s) tg128 (tok/s)
A ngl=99, mmap=1(默认) 128.81 155.35 11.13
B ngl=99, mmap=0(推荐) 132.90 164.26 11.54
C ngl=99, mmap=0, KV=q8_0 120.25 139.55 132.95 9.80
D ngl=99, mmap=0, KV=q4_0 111.53 133.48 121.45 10.90
E ngl=76, mmap=0(18层CPU) 128.76 158.69 11.12
Ollama 对比 39.9 10.96

15.3 结论

维度 结论
pp 速度 llama.cpp 比 Ollama 快 3-4 倍(164 vs 39.9 tok/s),长 prompt 体验显著改善
tg 速度 与 Ollama 持平(~11 tok/s);社区 53+ tok/s 需模型完整装入 VRAM
tg 瓶颈原因 模型 20.49 GiB > VRAM 16.3 GiB,约 4 GiB 权重在 CPU RAM,每 token 经 PCIe 读取(32 GB/s vs GDDR7 960 GB/s)
mmap=0 微小提升(+3-6%),推荐开启
KV 量化 小 context 下降速明显;大 context(64K+)时 q8_0 是必要取舍
CPU 层分配 18 层 CPU 与全 GPU 速度相同——瓶颈不在层数分配,在 VRAM 容量

若要突破 tg 速度:换 Q3_K_M 量化(~15 GiB,完整装入 VRAM),tg 预计 25-40 tok/s,但精度下降。

15.4 llama-server 启动方案

下载github.com/ggerganov/llama.cpp/releases/latest
下载 llama-bXXXXX-bin-win-cuda-12.4-x64.zip + cudart-llama-bin-win-cuda-12.4-x64.zip,解压到同一目录。

模型硬链接(避免复制 20 GB):

1
2
mklink /H D:\llamacpp\qwen3.5-35b-a3b-q4km.gguf ^
D:\ollama-models\blobs\sha256-4d5921fb64097a8d58d999183329c0132b8eebed73107cc4b4e35484394bcd32

标准启动(≤32K context,最佳质量)

1
2
3
llama-server.exe -m D:\llamacpp\qwen3.5-35b-a3b-q4km.gguf ^
-ngl 99 -mmp 0 -c 32768 -fa auto ^
--host 0.0.0.0 --port 11435

大 context 启动(32K-128K,KV 量化节省 VRAM)

1
2
3
llama-server.exe -m D:\llamacpp\qwen3.5-35b-a3b-q4km.gguf ^
-ngl 99 -mmp 0 -c 65536 -ctk q8_0 -ctv q8_0 -fa auto ^
--host 0.0.0.0 --port 11435

llama-server 提供 OpenAI 兼容 API(/v1/chat/completions),与 Ollama API(/api/generate)不同,接入 OpenClaw 需将 provider 改为 openai


十六、注意事项

  1. cuDNN 下载需 NVIDIA 账号:需在 developer.nvidia.com 注册后才能下载(免费)

  2. PyTorch 选 cu128:RTX 5080 Blackwell 需 PyTorch 2.7+,选错 CUDA 版本 GPU 无法识别

  3. NSSM 服务替代托盘 App:Ollama 托盘 App 会强制覆盖 OLLAMA_HOST127.0.0.1,改用 NSSM 服务才能绑定 0.0.0.0

  4. WiFi 网络必须为 Private:新连接的 WiFi 默认为 Public,防火墙 Private/Domain 规则不生效,导致端口看似开放实则被拦截

  5. WSL2 用 mirrored 而非 bridgedbridged 模式把物理 WiFi 网卡变成软件桥成员,所有 Windows 流量(不止 WSL2)都经过软件桥,WiFi 吞吐从 40 MB/s 降至 100 KB/s

  6. Defender 实时扫描影响大文件写入:传输 22 GB 模型前先 Add-MpPreference -ExclusionPath 'D:\ollama-models',否则速度从 38 MB/s 降至 1 MB/s

  7. OpenSSH 必须 Set-Service Automatic:默认安装后为手动模式,重启后 sshd 不启动

  8. Docker WSL2 VHD 迁移需完全关闭 Docker Desktop:迁移前右键托盘 → Quit Engine

  9. .env 变更需重启容器:OpenClaw .env 文件的变更不会热重载(openclaw.json 内的字段才会热重载)


延伸阅读