1. Windows 上用 WSL Ubuntu 跑 Hermes,为什么值得折腾
Hermes 是一个可以接消息网关的 Agent 框架,能让你在飞书里直接和模型对话、触发任务。它原生跑在 Linux 环境下,Windows 用户想用得舒服,最省事的路径就是 WSL2 里的 Ubuntu。这套组合的好处是:Windows 负责日常办公,Ubuntu 负责跑服务,飞书负责当入口,三者互不干扰。
真正让人头疼的不是安装本身,而是 Key 管理。Hermes 要接模型,飞书要接凭证,如果你还同时用着别的工具,每个地方都塞一份 API Key,改一次要翻好几个配置文件,出错概率直线上升。我这次的做法是:模型侧统一走 TaoToken 的 API 通道,一个 Key 覆盖多个模型;飞书侧只配 App ID 和 Secret;Hermes 的 config.toml 和 settings.json 各司其职。这样后面换模型、加工具,只动一个地方。
这篇适合谁:手上是 Windows 10/11、想用 WSL 跑 Hermes、并且希望把飞书通知打通的人。跟着做,你能拿到一个能启动、能对话、能在飞书里收到回复的 Hermes 实例。全程命令可直接复制,配置骨架也给你留好了。
2. 前置准备:WSL2、Ubuntu 与 TaoToken 统一 Key
2.1 确认虚拟化和 WSL2
先在任务管理器「性能」标签页看虚拟化是否已启用。没启用就去 BIOS/UEFI 打开 Intel VT-x 或 AMD-V。然后以管理员身份打开 PowerShell:
wsl --install -d Ubuntu-24.04装完重启,Ubuntu 窗口会自动弹出,让你创建 UNIX 用户名和密码。密码输入时不显示是正常的。进去之后先更新一下:
sudo apt update && sudo apt upgrade -y sudo apt install -y git curl nano2.2 为什么用 TaoToken 统一 Key
Hermes 支持多家模型提供商,但每换一家就要改一次 endpoint 和 Key。TaoToken 提供的是 OpenAI 兼容的 API 通道,你只需要一个 Key,就能在 Hermes 里切换不同模型。对 Hermes 来说,它看到的就是一个标准的 OpenAI 接口,配置成本最低。
你需要准备的东西:
- 一个 TaoToken 的 API Key(在控制台的 API Keys 页面创建)
- 飞书开放平台创建的应用,拿到 App ID 和 App Secret
- WSL Ubuntu 环境(上面已经装好)
TaoToken 的 API 地址是https://taotoken.net/api,这个地址在 Hermes 的 config.toml 里会用到。Key 的创建入口在控制台,具体路径是 API Keys 页面,创建后复制保存,后面填进配置文件。
3. 安装 Hermes 并接入 TaoToken 通道
3.1 一键安装脚本
在 Ubuntu 终端里执行官方安装脚本:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash装完重新加载 Shell 配置:
source ~/.bashrc如果你用的是 zsh,就换成source ~/.zshrc。然后验证:
hermes --version能看到版本号就说明命令已经全局可用。
3.2 依赖卡住时的备选方案
如果安装脚本在依赖阶段卡住,或者你发现目录里是venv而不是.venv,手动修一下。Hermes 的安装目录在~/.hermes/hermes-agent:
cd ~/.hermes/hermes-agent mv venv .venv source .venv/bin/activate uv sync如果提示uv: command not found,就用 pip 兜底:
pip install -e .激活成功后命令行前面会出现(.venv)标志,这时候再跑hermes --version确认。
3.3 config.toml 骨架:把模型指向 TaoToken
Hermes 的模型配置写在~/.hermes/config.toml。核心是把 provider 的 base_url 指向 TaoToken 的 API 地址,api_key 填你创建的那个 Key。下面是一个可直接改的骨架:
[model] provider = "openai" model = "gpt-4o-mini" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" [model.params] temperature = 0.7 max_tokens = 2048这里provider保持openai是因为 TaoToken 走的是 OpenAI 兼容协议,Hermes 不需要额外适配。model字段填你想用的模型名,换成别的模型只改这一行,Key 和地址都不用动。这就是统一 Key 的价值:模型切换是配置层的事,不是凭证层的事。
3.4 settings.json 示例:网关与飞书开关
除了 config.toml,Hermes 还有一个~/.hermes/settings.json用来控制网关行为。飞书相关的开关和连接模式放这里:
{ "gateway": { "enabled": true, "connection_mode": "websocket", "feishu": { "enabled": true, "domain": "feishu" } }, "logging": { "level": "info" } }connection_mode用websocket的好处是不需要公网回调地址,WSL 里的服务能主动连出去,省掉内网穿透的麻烦。飞书的 App ID 和 Secret 属于敏感信息,不放这里,放.env。
3.5 飞书凭证写入 .env
编辑~/.hermes/.env:
nano ~/.hermes/.env填入:
FEISHU_APP_ID=cli_你的AppID FEISHU_APP_SECRET=你的AppSecret FEISHU_DOMAIN=feishu FEISHU_CONNECTION_MODE=websocket保存退出。注意 App Secret 不要有多余空格,复制的时候容易带上换行。
4. 验证请求:从模型连通到飞书回消息
4.1 先验证模型通道
配置写完后,直接启动 Hermes 对话模式:
hermes发一条hello,如果模型正常返回,说明 TaoToken 的 Key、base_url、模型名三者匹配。如果报 401,先检查 Key 有没有多余空格,再确认 base_url 是不是https://taotoken.net/api,不要多写或少写路径。
4.2 启动网关并连飞书
模型通了之后,启动网关:
hermes gateway看到网关启动成功的提示后,去飞书里找到你配置的机器人,发一条消息。Hermes 会接收消息、调用模型、把回复发回飞书。整个链路是:飞书 → Hermes 网关 → TaoToken 通道 → 模型 → 原路返回。
如果你想把网关装成系统服务,让它在后台常驻,可以用:
sudo .venv/bin/hermes gateway install --system --run-as-user 你的用户名这里直接指定.venv/bin/hermes的路径,是因为 sudo 会重置环境变量,找不到虚拟环境里的命令。用绝对路径绕过路径查找,是这类问题最稳的解法。
4.3 成功结果长什么样
网关启动后终端会打印连接状态,飞书那边你发消息能收到回复,就说明三件事都对了:TaoToken Key 有效、飞书凭证有效、网关连接模式正确。这时候你可以试着在飞书里发一个稍微复杂点的指令,比如让它总结一段文字,确认模型调用和消息回传都正常。
5. 本篇常见错排查
5.1 Command 'hermes' not found
环境变量没生效。先source ~/.bashrc,再重开终端。如果还不行,说明安装脚本没把路径写进去,手动激活虚拟环境:
cd ~/.hermes/hermes-agent source .venv/bin/activate激活后hermes就能用了。想一劳永逸,把.venv/bin加到 PATH 里。
5.2 HTTP 401: Incorrect API key provided
三种可能:Key 填错、Key 和地址不匹配、Key 有空格。检查~/.hermes/config.toml里的api_key和base_url,确认 base_url 是https://taotoken.net/api。如果你之前用的是别的提供商地址,记得换过来。Key 本身在 TaoToken 控制台的 API Keys 页面可以重新生成。
5.3 app_id or app_secret is invalid
飞书凭证问题。去飞书开放平台重新复制 App ID 和 App Secret,注意别复制到多余字符。确认.env里的变量名是FEISHU_APP_ID和FEISHU_APP_SECRET,大小写要对。改完.env后需要重启网关才会生效。
5.4 sudo: hermes: command not found
sudo 重置了环境变量,看不到虚拟环境里的命令。解决办法是直接用绝对路径:
sudo .venv/bin/hermes gateway install --system --run-as-user 你的用户名原理是绕过 sudo 的路径查找,直接调用虚拟环境里的可执行文件,同时用 sudo 赋予安装系统服务所需的权限。
5.5 网关启动但飞书没反应
先看终端有没有报连接错误。如果 connection_mode 是 websocket,确认飞书应用开启了长连接模式。再检查 settings.json 里feishu.enabled是不是 true。最后确认.env里的FEISHU_CONNECTION_MODE和 settings.json 里的一致,两处不一致会导致网关不知道该用哪种方式连。
6. 把 Key 收口到一处,后面才省心
这套流程跑下来,最值得保留的习惯是:模型凭证只放 TaoToken 一处,Hermes 的 config.toml 只引用地址和 Key,飞书凭证只放 .env。这样你以后加新工具、换新模型,改的都是配置而不是凭证,出错面小很多。
如果你后面要长期跑编码类或 Agent 类任务,可以考虑用 Coding Plan 把额度固定下来,避免临时 Key 到处散落。想先验证模型效果,可以直接在模型对话页面试;要管理 Key 就去 API Keys 页面;接入细节查接入文档。把这几步走完,你的 Hermes 在 Windows + WSL 下就算真正落地了。