Hermes + Qwen3.6:本地 Agent 的一套低成本部署方案

整理 Hermes Agent + Qwen3.6 GGUF 的本地部署方案:用 WSL2、CUDA、llama.cpp 启动本地模型服务,再把 Hermes Agent 接到 OpenAI-compatible endpoint。

llama.cpp 在 WSL2 中运行 Qwen3.6 GGUF 模型,再把 Hermes Agent 接到本地 OpenAI-compatible API。这样可以在自己的电脑上获得一个可长期在线的本地 AI 助手,不再按在线服务的 Token 额度计费。

这套方案适合想体验本地 AI Agent、又希望保留数据隐私和长期可控性的用户。它可以用于日常问答、写作、代码辅助、资料整理和简单自动化任务。需要注意的是,模型规模越大,对显存要求越高;原文示例使用的是 Qwen3.6-27B,显存 24GB 更稳。如果显存较小,应选择更小尺寸或更低量化的模型。

方案结构

整体链路很简单:

  1. Windows 上安装 WSL2 和 Ubuntu 24.04。
  2. 在 WSL2 中安装 CUDA Toolkit、编译 llama.cpp
  3. 下载 Qwen3.6 GGUF 模型。
  4. llama-server 启动本地模型服务。
  5. 安装 Hermes Agent,并把它配置到 http://localhost:8080/v1
  6. 可选:写启动脚本,让 WSL2 打开时自动启动模型服务。

Hermes 负责 Agent 能力,Qwen3.6 负责本地大模型能力。两者组合后,可以把电脑变成一个本地私有 AI 助理。

安装 WSL2 和 Ubuntu

在 Windows PowerShell 管理员窗口中执行:

1
2
wsl --install
wsl --set-default-version 2

重启后安装 Ubuntu 24.04:

1
wsl --install -d Ubuntu-24.04

安装完成后,Ubuntu 会提示设置用户名和密码。进入 Ubuntu 后,先检查 NVIDIA GPU 是否能在 WSL2 中正常识别:

1
nvidia-smi

如果无法识别 GPU,通常需要先更新 Windows 端的 NVIDIA 显卡驱动。WSL2 会继承 Windows 驱动,但 CUDA Toolkit 仍需要在 WSL2 内单独安装。

安装 Python 和基础工具

1
sudo apt update && sudo apt install -y python3-pip python3-venv

后续还需要编译工具、Git 和 CMake:

1
sudo apt install -y cmake build-essential git

编译 llama.cpp

先拉取源码:

1
2
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

如果 WSL2 中已经有可用 CUDA 环境,可以直接编译:

1
2
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=89
cmake --build build -j$(nproc)

CMAKE_CUDA_ARCHITECTURES=89 适合 Ada 架构显卡,例如 RTX 40 系列。其他显卡应按实际架构调整。

如果编译时报 CUDA Toolkit 缺失,先在 WSL2 中安装 CUDA Toolkit:

1
2
3
4
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install -y cuda-toolkit-12-8

安装完成后配置环境变量:

1
2
3
4
export PATH=/usr/local/cuda-12.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH
echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

然后重新编译:

1
2
3
4
cd ~/llama.cpp
rm -rf build
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=89
cmake --build build -j$(nproc)

下载 Qwen3.6 GGUF 模型

原文示例使用 unsloth/Qwen3.6-27B-GGUF 中的 Qwen3.6-27B-UD-Q4_K_XL.gguf

1
2
3
hf download unsloth/Qwen3.6-27B-GGUF \
Qwen3.6-27B-UD-Q4_K_XL.gguf \
--local-dir ~/models/

这个文件约 17GB。如果 Hugging Face 下载慢,可以换 ModelScope 等国内镜像。显存不足时不要硬上 27B,可以换更小模型或更低量化版本。

启动本地模型服务

根据自己的模型文件名启动 llama-server

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
~/llama.cpp/build/bin/llama-server \
--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
--n-gpu-layers 99 \
--ctx-size 32768 \
--flash-attn on \
--temp 1.0 \
--top-p 0.95 \
--top-k 20 \
--presence-penalty 1.5 \
--port 8080

启动成功后,在 Windows 浏览器访问:

1
http://localhost:8080

如果要让 Hermes Agent 或其他 OpenAI-compatible 客户端调用,API 地址通常是:

1
http://localhost:8080/v1

Thinking 模式取舍

Qwen3.6 默认可能启用 Thinking 模式。它适合复杂推理、复杂代码问题、多步骤分析,但速度会慢一些。

如果想关闭 Thinking 模式,可以停止服务后增加 --chat-template-kwargs 参数:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
~/llama.cpp/build/bin/llama-server \
--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
--n-gpu-layers 99 \
--ctx-size 32768 \
--flash-attn on \
--temp 1.0 \
--top-p 0.95 \
--top-k 20 \
--presence-penalty 1.5 \
--chat-template-kwargs '{"enable_thinking":false}' \
--port 8080

关闭 Thinking 后,简单问答、写作、代码补全和解释代码会更快;但复杂算法设计、疑难 Debug 和架构分析仍建议开启 Thinking。

安装 Hermes Agent

保持 llama-server 运行,再新开一个 WSL2 终端安装 Hermes Agent:

1
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

安装脚本会处理 Python、Node.js、ripgrep、ffmpeg 等依赖。配置模型端点时选择自定义 endpoint:

1
2
3
URL: http://localhost:8080/v1
API Key: 12345678
Model: 自动识别

API Key 对本地 llama-server 来说可以随便填一个占位值。配置完成后,可以继续接 Telegram、微信、QQ、Discord 等聊天工具,让 Hermes Agent 通过这些入口调用本地模型并执行任务。

自动启动模型服务

可以写一个启动脚本,让 WSL2 终端打开时自动启动模型服务。

创建脚本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
cat > ~/start-llm.sh << 'EOF'
#!/bin/bash
echo "Starting Qwen3.6-27B llama-server..."
~/llama.cpp/build/bin/llama-server \
--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
--n-gpu-layers 99 \
--ctx-size 65536 \
--flash-attn on \
--temp 1.0 \
--top-p 0.95 \
--top-k 20 \
--presence-penalty 1.5 \
--port 8080 \
--host 0.0.0.0 &
echo "llama-server started, PID: $!"
echo "API: http://localhost:8080/v1"
echo "Chat UI: http://localhost:8080"
EOF
chmod +x ~/start-llm.sh

写入 .bashrc

1
2
3
4
echo '# Auto-start llama-server' >> ~/.bashrc
echo 'if ! pgrep -f "llama-server" > /dev/null 2>&1; then' >> ~/.bashrc
echo '    ~/start-llm.sh' >> ~/.bashrc
echo 'fi' >> ~/.bashrc

这样每次打开 WSL2 终端时,如果 llama-server 没有运行,就会自动启动;如果已经在运行,就会跳过,避免重复启动。

注意事项

  1. 27B 模型对显存要求较高,24GB 显存体验更稳;显存较小时应换小模型。
  2. --ctx-size 65536 会显著增加显存和内存压力,不稳定时先降到 32768 或更低。
  3. WSL2 中 CUDA Toolkit 和 Windows 显卡驱动都要正常,缺一边都可能导致 CUDA 编译或运行失败。
  4. Hermes Agent 接本地服务时,本质上是调用 OpenAI-compatible API,关键是 http://localhost:8080/v1 能正常响应。
  5. 如果要从手机或其他设备访问,需要额外处理 Windows 防火墙、局域网地址和安全隔离,不要把本地模型服务直接暴露到公网。

相关链接

记录并分享
使用 Hugo 构建
主题 StackJimmy 设计