开篇废话

最近圈里被一个叫Hermes Agent的东西刷屏了——Nous Research出品,号称开源界的Claude Code,甚至能跟OpenClaw掰手腕。作为手痒的AI民工,不折腾一下对不起自己的显卡。

但这玩意儿对Windows用户极度不友好:官方明说不支持原生Windows,必须走WSL2。下面这份教程是我边装边炸、炸完再装的血泪记录。Mac用户直接右上角,你们一行命令搞定的事我们不配。

1. 系统要求

项目 最低要求 推荐配置
操作系统 Windows 10 64位(2004+) Windows 11
WSL2 必须
内存 8 GB RAM 16 GB RAM+
显卡显存(GPU推理) 8 GB VRAM(7B模型) 16 GB+ VRAM
磁盘空间 20 GB 可用 50 GB+
网络 安装时需联网

2. 整体流程(红线是容易炸的地方)

Windows环境
 ├─ 安装WSL2 → 搬到非C盘
 ├─ WSL2内运行官方安装脚本
 ├─ Windows端装Ollama + 拉模型
 ├─ 【大坑1】让Ollama监听0.0.0.0
 ├─ 【大坑2】防火墙干掉ollama.exe的Block规则
 ├─ WSL2内配置Hermes指向Windows Ollama
 ├─ 【大坑3】强行把模型上下文从32K改到65K
 └─ hermes chat 起飞


3. Step 1:WSL2安装 + 迁移到非C盘

3.1 装WSL2

管理员PowerShell:

powershell

wsl --install

默认装Ubuntu,重启后设用户名/密码。

3.2 把WSL2虚拟磁盘挪出C盘(强烈建议)

C盘是系统盘,模型一拉就满。我们搬到G盘为例:

powershell

# 查看当前状态
wsl --list --verbose

# 建目标文件夹
New-Item -ItemType Directory -Path "G:\WSL\Ubuntu" -Force

# 导出当前系统
wsl --export Ubuntu G:\WSL\ubuntu-backup.tar

# 注销原系统
wsl --unregister Ubuntu

# 重新导入到G盘
wsl --import Ubuntu G:\WSL\Ubuntu G:\WSL\ubuntu-backup.tar --version 2

如果导出报错“系统找不到指定文件”:你的ext4.vhdx炸了,直接重建:

powershell

wsl --unregister Ubuntu
# 下载官方rootfs
Invoke-WebRequest -Uri "https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz" -OutFile "G:\WSL\ubuntu.tar.gz"
wsl --import Ubuntu G:\WSL\Ubuntu G:\WSL\ubuntu.tar.gz --version 2

3.3 恢复普通用户(默认导入后是root)

bash

wsl -d Ubuntu
useradd -m -s /bin/bash 你的用户名
passwd 你的用户名
usermod -aG sudo 你的用户名
echo -e '[user]\ndefault=你的用户名' > /etc/wsl.conf
exit

powershell

wsl --terminate Ubuntu
wsl -d Ubuntu   # 现在应该以普通用户登录

4. Step 2:WSL2里安装Hermes Agent

4.1 装依赖

bash

sudo apt update && sudo apt install -y ripgrep ffmpeg

4.2 调教Git(防止克隆失败)

bash

git config --global http.postBuffer 524288000
# 有代理的先清掉
git config --global http.proxy ""
git config --global https.proxy ""

4.3 跑官方安装脚本(容易翻车,备用手动方案)

bash

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

如果脚本里git clone死了,手动来:

bash

rm -rf ~/.hermes/hermes-agent
git clone --depth=1 https://github.com/NousResearch/hermes-agent.git ~/.hermes/hermes-agent

4.4 装Python依赖(加长超时时间)

bash

cd ~/.hermes/hermes-agent
export PATH="$HOME/.local/bin:$PATH"
uv venv venv --python 3.11
export VIRTUAL_ENV="$(pwd)/venv"
UV_HTTP_TIMEOUT=300 uv pip install -e ".[messaging,cron,cli,mcp,pty]"

不加超时,某些大包(比如elevenlabs)会下载到一半断掉。

4.5 创建全局命令

bash

ln -sf ~/.hermes/hermes-agent/hermes ~/.local/bin/hermes
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
hermes version   # 应该显示 v0.8.0 之类

5. Step 3:Windows端Ollama安装与拉模型

  • 官网 ollama.com 下载Windows版,正常安装,托盘会有小羊驼图标。

  • 打开PowerShell拉模型(显存不够就换7B):

powershell

# 根据自己的显存选
ollama pull qwen3.5:35b        # 24GB+显存
ollama pull deepseek-r1:32b    # 20GB+显存
ollama pull qwen3:32b          # 20GB+显存
ollama pull qwen2.5:7b         # 6GB+显存(入门)
# 查看已有模型
ollama list

顺便做个32K上下文的模型(默认只有2K-8K,Hermes需要大上下文):

powershell

"FROM qwen3.5:35b`nPARAMETER num_ctx 32768" | Out-File -FilePath "Modelfile" -Encoding utf8
ollama create qwen3.5-35b-32k -f "Modelfile"

6. Step 4:打通WSL2 → Windows Ollama(地狱级难度)

原理:WSL2是个独立的虚拟机,它的localhost ≠ Windows的localhost。
我们需要让Windows的Ollama监听所有网卡,并放行防火墙。

6.1 让Ollama监听0.0.0.0

PowerShell(管理员或当前用户都可,但执行后要重启Ollama):

powershell

[System.Environment]::SetEnvironmentVariable("OLLAMA_HOST", "0.0.0.0", "User")

然后右键系统托盘Ollama图标 → Quit,再重新打开Ollama。

验证:

powershell

netstat -an | findstr 11434
# 必须看到 0.0.0.0:11434 LISTENING

6.2 加防火墙允许规则(管理员PowerShell)

powershell

New-NetFirewallRule -DisplayName "Ollama WSL" -Direction Inbound -Protocol TCP -LocalPort 11434 -Action Allow

6.3 关键一步:删除可能存在的Block规则

Windows有时候会自说自话给ollama.exe加一条阻止入站的规则,优先级高于Allow规则。检查并干掉它:

powershell

Get-NetFirewallRule -DisplayName "*Ollama*" | Format-Table DisplayName, Enabled, Direction, Action
# 如果看到某一行的Action是Block,就删掉
Get-NetFirewallRule -DisplayName "ollama.exe" | Where-Object {$_.Action -eq "Block"} | Remove-NetFirewallRule

6.4 从WSL2内测试连接

bash

# 获取Windows宿主IP
HOST_IP=$(ip route | grep default | awk '{print $3}')
echo $HOST_IP

# 测试Ollama API
curl http://$HOST_IP:11434/api/tags
  • 看到模型列表 → 成功

  • Connection refused → Ollama没监听0.0.0.0,回去重做6.1

  • Connection timed out → 防火墙拦截,回去检查6.3的Block规则


7. Step 5:配置Hermes连接本地模型

交互式配置

bash

hermes model

选择 More providers... → Custom endpoint (enter URL manually)

  • API base URL: http://你上面得到的HOST_IP:11434/v1(例如http://172.27.112.1:11434/v1

  • API key: 留空

  • Model name: qwen3.5-35b-32k:latest

  • Context length: 32768(后面会改)

或者直接修改配置文件

bash

HOST_IP=$(ip route | grep default | awk '{print $3}')
sed -i "s|http://[^/]*:11434|http://$HOST_IP:11434|g" ~/.hermes/config.yaml

8. Step 6:修复上下文窗口限制(必做,否则没法用)

Hermes Agent要求最低64K上下文,而你的模型只有32K。直接跑会报错:

text

Model has a context window of 32,768 tokens, which is below the minimum 64,000 required.

欺上瞒下大法:改配置文件的context_length,绕过检查。

bash

sed -i 's/context_length: 32768/context_length: 65536/' ~/.hermes/config.yaml
grep context_length ~/.hermes/config.yaml   # 输出应为 65536

注意:这是骗过前端检查,实际模型还是32K。对话过长时模型会忘记开头。如果你显存够大,可以用num_ctx 65536重新创建一个真正的64K版本模型。


9. Step 7:启动!启动!启动!

bash

hermes chat

如果看到这样的界面(ASCII艺术缩略版):

text

██╗  ██╗███████╗██████╗ ...
╭── Hermes Agent v0.8.0 ──────────────────────────────╮
│  Available Tools: browser, file, code_execution...  │
│  qwen3.5-35b-32k:latest · 16.7K/65.5K [███░░] 26%  │
╰─────────────────────────────────────────────────────╯
Welcome! Type your message.

恭喜,成了。随便输句话试试。

常用玩法:

bash

hermes chat                     # 交互模式
hermes "帮我写个Python脚本下载B站视频"   # 单次任务
hermes doctor                   # 健康检查
hermes model                    # 交互式切换模型

状态栏解析:

示例 含义
qwen3.5-35b-32k:latest 当前模型
16.7K/65.5K 已用token / 总上下文token
26% 上下文占用
5m 当前会话时长

10. 常用命令速查(存一下)

命令 作用
hermes chat 打开对话
hermes "query" 直接执行单次任务
hermes model 更换模型/提供商
hermes doctor 诊断环境问题
/help 在聊天中看内置帮助
Ctrl+C 退出聊天

11. FAQ – 全是实战踩过的坑

Q1:git clone老是报GnuTLS recv errorHTTP/2 stream error

原因:WSL2下网络不稳 + 代理干扰。
解决

bash

git config --global http.proxy ""
git config --global https.proxy ""
git config --global http.postBuffer 524288000
git clone --depth=1 https://github.com/NousResearch/hermes-agent.git ~/.hermes/hermes-agent

Q2:WSL2里curl Ollama返回Connection timed out

原因:防火墙有ollama.exe的Block规则。
解决:管理员PowerShell执行:

powershell

Get-NetFirewallRule -DisplayName "ollama.exe" | Where-Object {$_.Action -eq "Block"} | Remove-NetFirewallRule

Q3:返回Connection refused

原因:Ollama没有监听0.0.0.0。
解决:检查环境变量OLLAMA_HOST=0.0.0.0彻底重启Ollama(托盘Quit+重新打开)。

Q4:hermes: command not found

解决

bash

ln -sf ~/.hermes/hermes-agent/hermes ~/.local/bin/hermes
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Q5:Python依赖安装卡住或超时

解决:加长超时:

bash

UV_HTTP_TIMEOUT=300 uv pip install -e ".[messaging,cron,cli,mcp,pty]"

Q6:context window below minimum错误

解决:改配置文件,见第8步。

Q7:WSL导出时ext4.vhdx损坏怎么办

解决:注销重建,反正还没什么数据:

powershell

wsl --unregister Ubuntu
Invoke-WebRequest -Uri "https://cloud-images.ubuntu.com/wsl/jammy/current/ubuntu-jammy-wsl-amd64-ubuntu22.04lts.rootfs.tar.gz" -OutFile "G:\WSL\ubuntu.tar.gz"
wsl --import Ubuntu G:\WSL\Ubuntu G:\WSL\ubuntu.tar.gz --version 2

12. 模型推荐(按显存选)

模型 显存需求 中文 代码 推理 拉取命令
qwen2.5:7b 6GB ★★★ ★★ ★★ ollama pull qwen2.5:7b
qwen3:32b 20GB ★★★★ ★★★ ★★★★ ollama pull qwen3:32b
deepseek-r1:32b 20GB ★★★ ★★★ ★★★★★ ollama pull deepseek-r1:32b
qwen3.5:35b 24GB ★★★★★ ★★★★ ★★★★ ollama pull qwen3.5:35b
qwen3-coder:30b 20GB ★★★ ★★★★★ ★★★ ollama pull qwen3-coder:30b

最后说句实话:本地35B模型跑Agent,跟Claude Sonnet/Opus这种云端巨兽还是有差距。Agent框架的效果严重依赖底层模型的智力。想体验完全体,建议申请OpenRouter的API Key,把Hermes接到GPT-4o或Claude 3.5上。


折腾完这一套,你就拥有了:

  • ✅ 完全本地的AI Agent(数据不出门)

  • ✅ 永久免费(不用充值AI币)

  • ✅ 断网可用(适合宿舍/机房)

  • ✅ 74个技能 + 28个工具(能看文件、写代码、开浏览器、发邮件……)

说白了,Hermes Agent就是你终端里的AI打工人——你动嘴,它动手。至于干得好不好,取决于你喂它什么脑子。

有空再写实战篇:怎么用Hermes自动写周报、爬数据、部署服务。现在,去hermes chat里调戏它吧!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐