☰
从零打通 Hermes Agent:Windows + WSL2 + Clash 全链路安装、认证与首次实战
2026/10/2 2:28:28 网站建设 项目流程

一篇从“Ubuntu 无法访问外网”开始,最终完成 Hermes Agent 安装、Nous Portal OAuth 登录、免费模型选择、本地终端后端配置、Playwright 浏览器验证与首次中文对话的完整实战记录。

写在前面

很多安装教程只给出一条命令:

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

这条命令没有问题,它来自 Nous Research 官方仓库。但在真实的 Windows + WSL2 环境中,真正耗时的部分往往不是输入命令,而是解决下面这些问题:

  • WSL2 无法直接复用 Windows 的127.0.0.1代理;

  • Clash 已开启,但 Ubuntu 访问宿主机代理端口仍然超时;

  • astral.sh、GitHub 或files.pythonhosted.org出现 TLS 握手中断;

  • Playwright Chromium 下载完成,却因缺少 Linux 动态库无法启动;

  • Nous Portal 网页登录成功,但终端设备码已经过期;

  • GitHub OAuth 页面能打开,授权按钮却始终无法点击;

  • 安装完成后输入hermes,终端短时间内看起来没有反应。

本文不回避这些问题。它既给出官方标准路径,也记录一套经过完整验证的 Windows + WSL2 实战路径。

最终验证结果:

  • WSL2 Ubuntu 外网链路正常;

  • Clash Verge 代理可被 WSL2 稳定使用;

  • Hermes Agent CLI 安装成功;

  • Nous Portal OAuth 登录成功;

  • 免费模型配置成功;

  • Local 终端后端配置成功;

  • Playwright Chromium 实际启动成功;

  • Gateway 用户服务正常运行;

  • Hermes Agent 完成第一次中文对话。


1. 依据、范围与版本快照

1.1 官方依据

本文涉及 Hermes Agent 的安装命令、目录结构、CLI 命令和主要功能,依据以下 Nous Research 官方资源:

  • 官方仓库:GitHub - NousResearch/hermes-agent: The agent that grows with you · GitHub

  • 官方文档:Hermes Agent Documentation | Hermes Agent

  • 官方安装脚本:https://hermes-agent.nousresearch.com/install.sh

  • Nous Portal:https://portal.nousresearch.com

中文社区站点可用于辅助阅读,但不是 Nous Research 官方站点:

  • 社区中文指南:Hermes Agent 中文文档 — 安装、桌面版与多语言指南 | hermes-ai.net

1.2 实测环境

本文最后一次验证环境:

项目实测值
宿主系统Windows 11
Linux 环境Ubuntu on WSL2
WSL 网络NAT
代理软件Clash Verge
Clash mixed-port7897
Hermes Agentv0.21.4
仓库提交913c045
Hermes Python3.11.16
OpenAI SDK2.24.0
Hermes Node.jsv26.9.0
认证提供方nous
实测免费模型poolside/laguna-s-2.1:free
终端后端local

软件版本、模型目录、免费额度和模型价格会变化。读者应以安装时的官方页面和终端输出为准。

1.3 本文的证据边界

需要明确区分两类内容:

  1. Hermes 安装脚本、仓库、命令和 Nous Portal 登录流程来自官方。

  2. WSL NAT、Clash 局域网访问、防火墙规则、PyPI 镜像与 TLS 故障处理,是针对本次 Windows 环境完成的实测方案。

第二类方案具备实践参考价值,但不等于所有机器都必须使用相同配置。


2. Hermes Agent 是什么

Hermes Agent 是 Nous Research 开发的开源智能代理。它不只是一个聊天界面,而是把模型、终端、文件、浏览器、技能、记忆、定时任务和消息平台组织在同一套 Agent 运行环境中。

官方仓库强调的主要能力包括:

  • 终端 TUI 交互;

  • 文件读写与项目操作;

  • 浏览器自动化;

  • 技能系统与经验学习;

  • 持久记忆与会话搜索;

  • 定时任务;

  • 子 Agent 委派与并行任务;

  • Telegram、Discord、Slack、WhatsApp、Signal 等消息平台接入;

  • Local、Docker、SSH、Singularity、Modal、Daytona、Vercel Sandbox 等终端后端;

  • Nous Portal、OpenRouter、自定义 OpenAI 兼容端点等模型来源。

如果只想聊天,普通聊天产品更简单。如果希望 Agent 能在真实环境里读文件、执行命令、操作浏览器、维护技能和长期运行,Hermes Agent 才能体现价值。


3. 整体链路

本教程最终打通的链路如下:

Windows 11 -> Clash Verge -> Windows 宿主机代理端口 7897 -> WSL2 NAT 网络 -> Ubuntu -> Hermes Agent -> Nous Portal OAuth -> 免费模型 -> Local 终端后端 -> CLI 首次对话

推荐按这个顺序操作:

确认 WSL2 -> 修复 Ubuntu 网络 -> 验证代理出口 -> 验证 GitHub/PyPI -> 下载并检查安装脚本 -> 安装 Hermes -> 验证 CLI 和浏览器 -> 登录 Nous Portal -> 选择模型 -> 选择 Local 后端 -> 完成首次对话

不要在网络尚未稳定时反复执行安装脚本,否则很难区分安装错误与下载错误。


4. 安装前准备

4.1 检查 WSL

在 Windows PowerShell 中执行:

wsl --version wsl --status wsl -l -v

确认 Ubuntu 的VERSION为2。

如果尚未安装 Ubuntu:

wsl --install -d Ubuntu

安装完成后重启 Windows,并打开 Ubuntu 完成初始用户名和密码设置。

4.2 检查 Ubuntu 基础状态

在 Ubuntu 中执行:

whoami uname -a cat /etc/os-release ip -brief address ip route cat /etc/resolv.conf

健康的 WSL NAT 网络通常至少应看到:

  • lo回环接口;

  • eth0网络接口;

  • default via ... dev eth0默认路由;

  • /etc/resolv.conf中的nameserver。

如果只有lo,没有eth0和默认路由,先处理第 14.2 节,不要继续安装。


5. WSL2 与 Clash Verge 的正确关系

5.1 为什么会出现 localhost 代理警告

常见提示:

wsl: 检测到 localhost 代理配置,但未镜像到 WSL。 NAT 模式下的 WSL 不支持 localhost 代理。

原因是:

  • Windows 的系统代理监听127.0.0.1:7897;

  • WSL2 NAT 中的127.0.0.1指向 Ubuntu 自己;

  • 它不等于 Windows 的127.0.0.1。

所以在 NAT 模式下,Ubuntu 需要通过 Windows 宿主机在 WSL 网络中的地址访问代理。

5.2 本次实测采用的.wslconfig

文件路径:

C:\Users\<Windows用户名>\.wslconfig

内容:

[wsl2] networkingMode=nat dnsTunneling=true autoProxy=false firewall=true

应用配置:

wsl --shutdown

然后重新打开 Ubuntu。

为什么选择 NAT:本次机器尝试networkingMode=mirrored后,Ubuntu 只剩lo,默认路由和/etc/resolv.conf均消失。即使启用 Windows Hypervisor Platform 并完整重启,镜像网络仍未恢复,因此回退到稳定的 NAT。

这不代表镜像网络普遍不可用。如果你的镜像网络工作正常,可以继续使用,不必照搬 NAT。

5.3 Clash Verge 设置

在 Clash Verge 中启用:

  • 虚拟网卡模式;

  • 系统代理;

  • 局域网连接。

确认端口。本次环境为:

mixed-port: 7897

在 Windows PowerShell 检查监听:

Get-NetTCPConnection -LocalPort 7897 -State Listen

5.4 获取 Windows 宿主机地址

在 Ubuntu 中:

WIN_HOST=$(ip route | awk '/default/ {print $3}') echo "$WIN_HOST"

本次环境曾得到192.168.128.1,但这个地址可能在 WSL 重启或网络变化后改变,所以脚本中应动态获取,不要永久写死。

5.5 为当前终端设置代理

export HTTP_PROXY="http://${WIN_HOST}:7897" export HTTPS_PROXY="http://${WIN_HOST}:7897" export ALL_PROXY="http://${WIN_HOST}:7897"

检查:

env | grep -i proxy

这些环境变量只对当前 Shell 及其子进程有效。

5.6 只允许 WSL 子网访问 Clash

如果 Clash 已开启“局域网连接”,但 Ubuntu 访问${WIN_HOST}:7897仍超时,可在管理员 PowerShell 中创建规则:

New-NetFirewallRule ` -DisplayName "Clash-Wsl-7897" ` -Direction Inbound ` -Action Allow ` -Protocol TCP ` -LocalPort 7897 ` -RemoteAddress 192.168.128.0/20 ` -Profile Any

这里的192.168.128.0/20应按你的 WSL 实际子网调整。可在 Ubuntu 用下面的命令确认:

ip -4 addr show eth0 ip route

检查规则:

Get-NetFirewallRule -DisplayName "Clash-Wsl-7897"

这条规则限定了远端 WSL 子网,不应改成任意来源地址。


6. 在安装前证明网络真的可用

6.1 检查代理出口

curl -4 -x "http://${WIN_HOST}:7897" https://ipinfo.io

需要看到代理出口信息,而不是本地网络出口。

6.2 检查 Hermes 安装脚本

curl -4 -I --connect-timeout 10 --max-time 30 \ https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh

6.3 检查 GitHub

curl -4 -I --connect-timeout 10 --max-time 30 \ https://github.com/NousResearch/hermes-agent

6.4 检查 PyPI

curl -4 -I --connect-timeout 10 --max-time 30 \ https://pypi.org/simple/

6.5 检查 GitHub 静态资源

这一项很重要。GitHub OAuth 页面依赖github.githubassets.com的 CSS 与 JavaScript:

curl -4 -I --connect-timeout 10 --max-time 30 \ https://github.githubassets.com/favicons/favicon.svg

如果 GitHub 主站能打开,但这个域名 TLS 失败,GitHub 授权按钮可能永远保持禁用。

只有这些检查稳定通过后,才开始安装。


7. 官方标准安装路径

7.1 官方一行命令

Nous Research 官方 README 给出的 Linux、macOS、WSL2 安装方式:

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

安装完成后:

source ~/.bashrc hermes

7.2 更适合生产排障的三步安装

为了能审查脚本并保留安装文件,推荐:

curl -fsSLO \ https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh less install.sh bash -n install.sh bash install.sh

含义:

  1. 下载官方仓库中的安装脚本;

  2. 用less阅读脚本;

  3. 用bash -n做语法检查;

  4. 执行安装。

不要从来历不明的镜像站下载修改过的安装脚本。

7.3 带显式代理执行安装

WIN_HOST=$(ip route | awk '/default/ {print $3}') export HTTP_PROXY="http://${WIN_HOST}:7897" export HTTPS_PROXY="http://${WIN_HOST}:7897" export ALL_PROXY="http://${WIN_HOST}:7897" bash install.sh

安装器会处理或检查:

  • uv;

  • Python;

  • Git;

  • Node.js;

  • C++ 编译器;

  • Hermes Agent 仓库;

  • Python 虚拟环境和依赖;

  • Node.js 浏览器依赖;

  • Playwright Chromium;

  • Computer Use 驱动;

  • PATH;

  • 配置模板;

  • 内置技能。

7.4 可选系统包怎么选

安装器可能询问:

Install ripgrep for faster file search ffmpeg for TTS voice messages?

说明:

  • ripgrep:加快文本搜索,非核心依赖;

  • ffmpeg:用于音视频与部分语音能力,非核心对话依赖;

  • build-essential、python3-dev、libffi-dev:原生包编译工具。

有 sudo 权限时建议安装。没有 sudo 权限时可先跳过,遇到明确的编译错误后再处理。


8. 本次实际遇到的安装故障与恢复

正常网络环境通常不需要本节。只有安装器失败时才按错误类型处理。

8.1astral.sh下载 uv 超时

错误特征:

Failed to download uv installer from https://astral.sh/uv/install.sh

先显式设置代理,然后手工安装官方 uv:

WIN_HOST=$(ip route | awk '/default/ {print $3}') export HTTP_PROXY="http://${WIN_HOST}:7897" export HTTPS_PROXY="http://${WIN_HOST}:7897" export ALL_PROXY="http://${WIN_HOST}:7897" mkdir -p "$HOME/.hermes/bin" curl -4 -LsSf https://astral.sh/uv/install.sh -o /tmp/uv-install.sh UV_UNMANAGED_INSTALL="$HOME/.hermes/bin" sh /tmp/uv-install.sh "$HOME/.hermes/bin/uv" --version

然后重新运行bash install.sh,安装器会识别已安装的 uv。

8.2files.pythonhosted.orgTLS 握手失败

典型错误:

tls handshake eof SSL_ERROR_SYSCALL

先分别测试:

curl -4 -I -x "http://${WIN_HOST}:7897" \ https://pypi.org/simple/ curl -4 -I -x "http://${WIN_HOST}:7897" \ https://files.pythonhosted.org/

如果代理节点对 PyPI 文件域名不稳定,优先切换 Clash 节点。不要默认关闭 TLS 校验。

必要时可临时使用可信 PyPI 镜像:

export UV_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ export UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple/ export UV_HTTP_TIMEOUT=120

8.3 镜像缺少上传时间导致exclude-newer误判

Hermes 项目的 uv 配置可能限制最近发布的依赖。部分镜像缺少上传时间元数据,可能出现:

No solution found when resolving dependencies was filtered by exclude-newer

只对当前安装进程临时关闭:

export UV_EXCLUDE_NEWER=false

不要直接修改官方仓库的pyproject.toml或uv.lock。

8.4 保留锁文件版本与哈希的恢复方式

如果uv sync --locked因镜像元数据不兼容失败,可以从官方uv.lock导出固定版本和 SHA256 哈希:

cd "$HOME/.hermes/hermes-agent" "$HOME/.hermes/bin/uv" export \ --frozen \ --extra all \ --no-dev \ --no-emit-project \ --format requirements.txt \ --output-file /tmp/hermes-requirements.txt

随后按哈希从镜像安装:

"$HOME/.hermes/bin/uv" pip install \ --python "$HOME/.hermes/hermes-agent/venv/bin/python" \ --no-config \ --require-hashes \ --index-url https://mirrors.aliyun.com/pypi/simple/ \ -r /tmp/hermes-requirements.txt

这种方法保留了锁文件的固定版本和哈希校验,比无约束重新解析依赖更严谨。

8.5 本地 Hermes 包构建仍访问官方 PyPI

如果本地包构建因为setuptools或wheel下载失败:

"$HOME/.hermes/bin/uv" pip install \ --python "$HOME/.hermes/hermes-agent/venv/bin/python" \ --no-config \ --index-url https://mirrors.aliyun.com/pypi/simple/ \ setuptools wheel

再安装本地包:

cd "$HOME/.hermes/hermes-agent" "$HOME/.hermes/bin/uv" pip install \ --python venv/bin/python \ --no-config \ --no-build-isolation \ --no-deps \ -e .

验证:

venv/bin/hermes --version

9. Playwright Chromium 的完整验证

浏览器二进制下载成功,不代表浏览器一定能启动。Linux 还需要系统动态库。

9.1 常见缺库错误

error while loading shared libraries: libnspr4.so

9.2 安装 Playwright 系统依赖

cd "$HOME/.hermes/hermes-agent" export PATH="$HOME/.hermes/node/bin:$PATH" sudo npx playwright install-deps chromium

如果只能从 Windows 侧调用 WSL root:

wsl -d Ubuntu -u root -- bash -lc ` 'cd /home/<Linux用户名>/.hermes/hermes-agent && ` export PATH=/home/<Linux用户名>/.hermes/node/bin:/usr/local/bin:/usr/bin:/bin && ` npx playwright install-deps chromium'

9.3 实际启动测试

cd "$HOME/.hermes/hermes-agent" export PATH="$HOME/.hermes/node/bin:$PATH" export PLAYWRIGHT_BROWSERS_PATH="$HOME/.cache/ms-playwright" npx playwright screenshot about:blank /tmp/hermes-browser-test.png test -s /tmp/hermes-browser-test.png && echo browser_ok

只有看到browser_ok,才说明 Chromium 真正可运行。


10. 安装完成后的验收

重新加载 Shell:

source ~/.bashrc

10.1 检查 Hermes

command -v hermes hermes --version hermes --help

10.2 检查 Python 环境

~/.hermes/hermes-agent/venv/bin/python --version

10.3 检查配置文件

ls -l ~/.hermes/config.yaml ~/.hermes/.env

10.4 运行诊断

hermes doctor

hermes doctor可能检查多个 API 端点,需要等待。以下警告未必阻断基础对话:

  • 未配置图片生成密钥;

  • 未安装本地 Whisper;

  • 未设置 GitHub Token;

  • 未安装 ripgrep;

  • 未启用消息平台。

应重点关注:

  • Python 环境;

  • SSL 证书;

  • 必需包;

  • Hermes 命令;

  • 模型认证;

  • API 连通性。


11. Nous Portal 登录与设备码绑定

11.1 为什么使用 Nous Portal

官方提供的 Nous Portal 可以统一承载模型与部分工具能力,减少分别维护多个服务商 API Key 的负担。

登录命令:

hermes portal

或运行完整向导:

hermes setup

11.2 WSL 无法自动打开 Windows 浏览器

常见提示:

gio: Operation not supported

这不代表登录失败,只是 WSL 无法自动拉起 Windows Chrome。手动复制终端输出的链接到 Windows 浏览器即可。

11.3 设备码必须保持一致

终端会显示类似:

Open: https://portal.nousresearch.com/manage-subscription?user_code=XXXX-XXXX

正确流程:

  1. 保持终端中的hermes portal进程运行;

  2. 立即在浏览器打开终端给出的链接;

  3. 确认网页和终端显示同一个设备码;

  4. 登录 Nous Portal;

  5. 点击CONNECT;

  6. 等待终端显示Login successful!。

不要重复运行多个hermes portal。每次重跑都会生成新设备码,旧码可能失效。

11.4invalid_grant: Invalid device code

这表示:

  • 设备码已过期;或

  • 浏览器使用的是旧设备码;或

  • 终端轮询已结束。

重新执行:

hermes portal

使用新链接,并立刻完成连接。

11.5 GitHub OAuth 授权按钮不可点击

本次实测中,原因不是邮箱未验证,而是:

github.githubassets.com net::ERR_CONNECTION_CLOSED

GitHub OAuth 页面的 CSS 和 JavaScript 没有加载,页面只剩裸 HTML。授权按钮由服务端初始输出为禁用,GitHub 的 OAuth 脚本加载后才会启用。

验证静态资源:

curl.exe -I -x http://127.0.0.1:7897 ` --connect-timeout 10 --max-time 30 ` https://github.githubassets.com/favicons/favicon.svg

如果只有:

HTTP/1.1 200 Connection established

却没有后续HTTP/1.1 200 OK或HTTP/2 200,说明只建立了代理隧道,目标站 TLS 尚未成功。

处理方法:

  1. 切换 Clash 节点;

  2. 重新测试github.githubassets.com;

  3. 确认返回完整 HTTP 200;

  4. 在 OAuth 页面按Ctrl+Shift+R强制刷新。

不要通过开发者工具强行移除按钮的disabled属性。那是在绕过页面安全状态,而不是修复登录。

11.6 邮箱六位验证码在哪里

GitHub 登录 Nous Portal 后,Nous Portal 可能要求确认 GitHub 账号绑定的邮箱。

验证码在 GitHub 主邮箱的收件箱中,不在 GitHub 设置页面中。可在:

GitHub -> Settings -> Emails

确认主邮箱,然后登录对应邮箱查找 Nous Portal 邮件。检查:

  • 收件箱;

  • 垃圾邮件;

  • 订阅邮件;

  • 搜索关键词Nous、verification code。

验证码属于登录凭据,不要发给他人。

11.7 最终认证验收

hermes auth status nous

必须看到:

nous: logged in

浏览器显示已登录,不等于终端已经拿到认证。以该命令结果为准。


12. 选择模型、终端后端和消息平台

12.1 选择免费模型

如果 Nous Portal 余额为$0.00,应选择列表中标注:free的模型。

本次实测选择:

poolside/laguna-s-2.1:free

它偏向编程与代码任务。

免费模型目录随时可能变化,应以hermes model当时显示的列表为准。

切换模型:

hermes model

查看当前配置:

hermes config get model.provider hermes config get model.default

实测结果:

nous poolside/laguna-s-2.1:free

12.2 终端后端选择 Local

在本地 WSL2 使用时,选择:

Keep current (local)

或者选择:

Local - run directly on this machine

Local 表示 Agent 的 Shell 命令直接在当前 Ubuntu 环境运行。

其他后端适用于不同目标:

  • Docker/Podman:容器隔离;

  • SSH:远程机器;

  • Singularity/Apptainer:HPC 环境;

  • Modal、Daytona、Vercel Sandbox:云端或沙箱运行。

不要因为名称看起来高级就随意选择。后端决定命令执行、文件访问和隔离边界。

12.3 消息平台可以以后配置

首次安装可以选择:

Skip - set up later

本地 CLI 不依赖 Telegram 或 Discord。

以后配置:

hermes setup gateway

13. Gateway 服务

检查:

hermes gateway status

重启并刷新服务定义:

hermes gateway restart

如果没有配置消息平台,日志中出现:

No messaging platforms enabled

属于正常提示,不影响本地hermesCLI。

Gateway 使用 systemd 用户服务时,可以通过下面命令查看日志:

journalctl --user -u hermes-gateway -f

14. 启动 Hermes 与第一次对话

14.1 启动

source ~/.bashrc hermes

首次启动可能需要几秒初始化模型、工具、技能和安全扫描。短时间黑屏不一定是卡死。

可在另一个终端检查进程:

ps -ef | grep -E '[h]ermes($| .*chat|hermes_cli)'

14.2 如果 TUI 长时间不显示

先按一次Enter,或等待 10 至 30 秒。

仍无显示时,按Ctrl+C退出,使用传统 CLI 模式:

hermes --cli

也可显式启动聊天:

hermes chat --cli

查看终端变量:

echo "$TERM" stty size

如果终端尺寸异常,可先调整 Windows Terminal 窗口大小,再启动 Hermes。

14.3 第一次建议输入什么

先测试普通对话:

你好,请介绍一下你当前可用的模型、工具和技能。

然后测试只读项目分析:

请检查当前目录的项目结构,告诉我它是什么项目以及如何启动,但暂时不要修改任何文件。

再测试终端:

请运行 pwd 和 ls,解释当前目录中的主要文件,不要写入或删除任何内容。

不要一开始就让 Agent 执行大范围删除、系统升级或不可逆操作。


15. 常用命令速查

15.1 Shell 命令

hermes # 启动交互界面 hermes --cli # 使用传统 CLI 界面 hermes --version # 查看版本 hermes doctor # 环境诊断 hermes status # 查看组件状态 hermes model # 选择模型 hermes tools # 配置工具 hermes setup # 完整设置向导 hermes setup terminal # 配置终端后端 hermes setup gateway # 配置消息平台 hermes portal # Nous Portal 登录与模型配置 hermes portal info # 查看 Portal 路由状态 hermes auth status nous # 检查 Nous 登录 hermes gateway status # 检查 Gateway hermes gateway restart # 重启 Gateway hermes update # 更新 Hermes

15.2 对话内命令

/help /model /tools /skills /new /reset /retry /undo /compress /usage

具体可用命令以当前版本/help输出为准。


16. 配置与数据目录

默认目录:

~/.hermes/

常见文件:

~/.hermes/config.yaml CLI 和模型等配置 ~/.hermes/.env API Key 等环境变量 ~/.hermes/auth.json 认证状态 ~/.hermes/hermes-agent/ 代码与虚拟环境 ~/.hermes/skills/ 技能 ~/.hermes/sessions/ 会话 ~/.hermes/logs/ 日志 ~/.hermes/cron/ 定时任务 ~/.hermes/state.db 状态数据库

查看配置:

hermes config

编辑配置:

hermes config edit

不要把.env、auth.json或其他凭据文件提交到 Git。


17. 安全边界

17.1 Local 后端意味着什么

Local 后端下,Hermes 可以在当前 WSL Ubuntu 中:

  • 读取和修改文件;

  • 执行 Shell 命令;

  • 访问/mnt/c等 Windows 挂载目录;

  • 调用浏览器工具;

  • 安装依赖;

  • 运行项目。

因此应把它视为一个具有当前 Linux 用户权限的自动化程序。

17.2 推荐的操作习惯

  • 首次进入项目先要求只读检查;

  • 明确指定工作目录;

  • 修改前要求说明计划;

  • 删除前要求列出精确目标;

  • 外部消息、支付、发布、授权等动作必须人工确认;

  • 不把密码、邮箱验证码、API Key 发到对话中;

  • 重要项目使用 Git;

  • 高风险任务考虑 Docker 或其他隔离后端。

17.3 防火墙规则的清理

不再需要 WSL 访问 Clash 7897 时:

Remove-NetFirewallRule -DisplayName "Clash-Wsl-7897"

删除前确认不会影响 WSL 后续联网。


18. 常见问题索引

18.1 Ubuntu 域名无法解析

ip route cat /etc/resolv.conf getent hosts github.com

没有默认路由时先恢复 WSL 网络,不要只改 DNS。

18.2 Ubuntu 只有lo

将.wslconfig回退到 NAT:

[wsl2] networkingMode=nat dnsTunneling=true autoProxy=false firewall=true

然后:

wsl --shutdown

18.3 WSL 访问 7897 超时

依次检查:

  1. Clash 是否运行;

  2. 端口是否为 7897;

  3. 局域网连接是否打开;

  4. Windows 是否监听该端口;

  5. 防火墙规则是否允许 WSL 子网;

  6. Ubuntu 使用的是宿主机地址而不是127.0.0.1。

18.4 GitHub 页面裸奔、无样式

测试:

curl.exe -I -x http://127.0.0.1:7897 ` https://github.githubassets.com/favicons/favicon.svg

切换能完整返回 HTTP 200 的代理节点。

18.5 Nous Portal 浏览器已登录,但 Hermes 仍 logged out

hermes auth status nous

如果是logged out,重新运行:

hermes portal

浏览器登录与设备码绑定是两个步骤。

18.6hermes启动后暂时黑屏

等待初始化,或使用:

hermes --cli

18.7 免费模型是否永久免费

不能保证。:free代表选择时目录中的免费路由,是否持续免费、速率限制和可用性由服务端决定。

18.8 Gateway 没有消息平台

不影响本地 CLI。以后执行:

hermes setup gateway

19. 最终验收清单

逐项执行:

source ~/.bashrc hermes --version hermes auth status nous hermes config get model.provider hermes config get model.default hermes gateway status

本次实测得到:

Hermes Agent v0.21.4 nous: logged in nous poolside/laguna-s-2.1:free Gateway active (running)

浏览器验收:

cd "$HOME/.hermes/hermes-agent" export PATH="$HOME/.hermes/node/bin:$PATH" export PLAYWRIGHT_BROWSERS_PATH="$HOME/.cache/ms-playwright" npx playwright screenshot about:blank /tmp/hermes-browser-test.png test -s /tmp/hermes-browser-test.png && echo browser_ok

最后启动:

hermes

完成一次实际对话,才算完整链路真正打通。


20. 结语

这次实践的价值,不只是“把一个 CLI 装上了”。真正完成的是一条可复现、可验证、可排障的 Agent 运行链路:

WSL 网络 -> Clash 代理 -> 防火墙边界 -> 官方安装脚本 -> Python 与 Node 运行时 -> 浏览器引擎 -> Nous Portal OAuth -> 免费模型 -> Local 终端后端 -> Gateway -> 第一次真实对话

官方命令提供了入口,真实环境验证补齐了入口之后的工程细节。

只要读者遵守三个原则,这套流程就具备较强的可迁移性:

  1. 每一层都先验证,再进入下一层;

  2. 区分网络故障、依赖故障、认证故障和运行故障;

  3. 不通过关闭安全校验或强行绕过页面状态来“解决”问题。

当终端最终出现 Hermes Agent 的 TUI,并能使用已认证的模型完成第一次中文回复时,这条链路才真正闭环。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询