1. 为什么 hermes 装完还跑不起来:环境变量与 API 通道才是收尾关键
很多人以为hermes --version能打印版本号就算装好了,结果一执行hermes chat就卡在模型请求上。我见过最多的两种情况:一是 PowerShell 里hermes命令时有时无,换个终端窗口就报command not found;二是命令能跑,但一发消息就提示鉴权失败或者连接超时。这两个问题其实都不在安装脚本本身,而在安装之后的收尾环节——环境变量有没有真正落到用户级 PATH,以及大模型 API 通道有没有配对。
hermes 是 NousResearch 出的一个本地 AI Agent 运行时,它本身不绑定某一家模型,而是通过统一的 provider 配置去调用外部大模型接口。这意味着它能不能跑通,取决于两件事:Python 虚拟环境和命令行入口是否被系统正确识别,以及 API Key、Base URL、Model ID 这三样是否指向一个可用的通道。Windows 原生环境下,PowerShell 的变量作用域和用户级环境变量跟 Linux 的.bashrc逻辑不一样,所以第三步的配置动作必须单独讲清楚。
这篇是 hermes 安装系列的第三篇,专门处理收尾阶段。适合已经在 Windows 10/11 上用 PowerShell 跑完一键安装、但还没成功发出第一条对话请求的开发者。下面会给出可直接复制的 PowerShell 命令、TaoToken 统一 Key 与 API 通道的接入示例,以及启动自检和常见报错的排查动作。你不需要重装,只需要把环境变量和通道配置这两步补齐。
2. TaoToken 前置准备:统一 Key 与 API 通道是什么
在配置 hermes 的模型通道之前,先说明一下为什么要用 TaoToken 这类统一接入方式。hermes 支持 OpenAI、DeepSeek、Kimi、Anthropic、OpenRouter 等多个 provider,每个 provider 的 Base URL、鉴权头、模型命名规则都不一样。如果你只用一个模型,直接填官方 Key 也行;但如果你想让 hermes 在不同任务里切换模型,或者想用一个 Key 管理多个模型通道,统一接入层会省掉大量重复配置。
TaoToken 提供的就是这样一个统一 API 通道:你拿到一个 Key,配一个 Base URL,然后用 Model ID 指定具体要调用的模型。hermes 的 provider 配置里,只要把 Base URL 指向这个通道,把 Key 填进去,再把 Model ID 写成通道支持的模型名,就能跑通。官网入口是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,API 基础地址是 https://taotoken.net/api,注意 API 地址后面不加 UTM 参数。
你需要提前准备的东西只有三样:一个可用的 TaoToken Key、确认你要用的 Model ID、以及 hermes 已经安装完成并且hermes --version能打印版本号。Key 的获取在控制台里完成,登录后进 API Keys 页面创建一个即可。Model ID 建议先在模型对话页面确认一下当前通道支持哪些模型名,避免配置里写了一个不存在的名字导致请求返回 404 或 model not found。
这里要强调一个容易踩的坑:hermes 的配置文件里,Base URL 和 Key 是分开存放的。Base URL 写在config.yaml的 provider 段,Key 写在.env文件里。如果你只改了其中一个,另一个还是旧值,就会出现「Key 是对的但地址指向了别处」或者「地址对了但 Key 是空的」这类问题。所以下面配置步骤里,我会把两个文件都覆盖到。
另外,TaoToken 的 API 通道兼容 OpenAI 风格的请求格式,这意味着 hermes 里选择openai作为 provider 类型,然后把 Base URL 替换成 TaoToken 的地址,是最省事的做法。不需要额外装适配器,也不需要改 hermes 的源码。你只需要确保config.yaml里的base_url字段和.env里的OPENAI_API_KEY字段同时正确。
3. 可复制配置:PowerShell 环境变量与 hermes 通道设置
这一节是全文操作最密集的部分,每一步都可以直接复制到 PowerShell 里执行。建议用普通用户权限打开 Windows Terminal 或 PowerShell,不要用管理员权限,因为 hermes 的安装目录在%LOCALAPPDATA%下,管理员权限反而可能导致路径解析异常。
3.1 确认并修复用户级 PATH
先检查 hermes 的虚拟环境 Scripts 目录是否已经在用户级 PATH 里。执行:
$venv = "$env:LOCALAPPDATA\hermes\hermes-agent\venv\Scripts" $userPath = [Environment]::GetEnvironmentVariable("Path", "User") if ($userPath -notlike "*$venv*") { [Environment]::SetEnvironmentVariable("Path", "$venv;$userPath", "User") Write-Host "已添加 hermes venv 到用户 PATH,请重开终端" } else { Write-Host "PATH 已包含 hermes venv" }这段逻辑跟安装脚本做的事一样,但如果你之前手动改过 PATH 或者安装脚本因为权限问题没写进去,这里可以补上。执行完必须关闭当前 PowerShell 窗口重新打开,因为用户级环境变量的变更不会在当前会话里生效。重开后验证:
hermes --version hermes doctorhermes doctor会逐项检查 Python、Node、ripgrep、ffmpeg、Git 和配置文件状态,全绿才算环境就绪。如果有红项,先按提示补装对应依赖,不要急着配 API。
3.2 写入 hermes 的 config.yaml
hermes 的配置文件在%USERPROFILE%\.hermes\config.yaml。如果这个文件不存在,先创建目录:
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.hermes"然后用以下内容覆盖或新建config.yaml。注意 YAML 对缩进敏感,建议直接整段复制:
provider: openai model: gpt-4o base_url: https://taotoken.net/api temperature: 0.7 max_tokens: 4096这里provider写openai是因为 TaoToken 的通道兼容 OpenAI 请求格式;base_url指向 TaoToken 的 API 地址;model填你在模型对话页面确认过的 Model ID。如果你要用别的模型,只改model这一行即可,不用动 provider 和 base_url。
3.3 写入 .env 存放 API Key
Key 不要写在config.yaml里,hermes 会从.env读取。在同一个.hermes目录下创建或编辑.env:
$envFile = "$env:USERPROFILE\.hermes\.env" "OPENAI_API_KEY=你的TaoTokenKey" | Out-File -FilePath $envFile -Encoding utf8把你的TaoTokenKey替换成实际 Key。如果你之前已经有一个.env文件,不要直接覆盖,先追加:
Add-Content -Path "$env:USERPROFILE\.hermes\.env" -Value "OPENAI_API_KEY=你的TaoTokenKey"写入后检查一下文件内容,确认没有多余空格或引号:
Get-Content "$env:USERPROFILE\.hermes\.env"3.4 用 hermes config set 做二次确认
除了直接改文件,也可以用 hermes 自带的命令写入,这样它会帮你做格式校验:
hermes config set provider openai hermes config set model gpt-4o hermes config set base_url https://taotoken.net/api执行完后再用hermes config get逐项读回来确认。如果config set和手动改文件同时做了,以最后一次写入为准。建议只用一种方式,避免两边不一致。
3.5 三件套对照表
| 配置项 | 存放位置 | 示例值 | 作用 |
|---|---|---|---|
| Base URL | config.yaml 的 base_url | https://taotoken.net/api | 指定请求发往哪个通道 |
| API Key | .env 的 OPENAI_API_KEY | 你的 TaoToken Key | 鉴权凭证 |
| Model ID | config.yaml 的 model | gpt-4o | 指定调用哪个模型 |
这三样必须同时正确,缺一个都会导致请求失败。Base URL 和 Model ID 在config.yaml,Key 在.env,这是 hermes 的固定约定,不要随意改存放位置。
4. 验证请求:hermes 启动自检与成功结果
配置写完后,不要直接进交互式 TUI,先用单次提问命令做最小验证。这样即使报错,输出也更干净,方便定位。
hermes chat -q "用一句话说明什么是环境变量"如果通道配置正确,你会看到 hermes 先打印一行模型信息,然后返回一句中文回答。返回内容的具体措辞不重要,重要的是没有报错、没有卡住、没有超时。第一次请求可能会慢几秒,因为要建立连接和加载配置,后续会快很多。
如果单次提问通过,再启动交互式 TUI:
hermes进入 TUI 后随便发一条消息,确认多轮对话正常。然后可以试一下hermes model list,看它是否能列出当前通道下可用的模型。这个命令会直接请求 Base URL 的模型列表接口,如果返回空或者报错,说明通道地址或 Key 有问题。
再做一个更完整的自检:
hermes doctor这次 doctor 除了检查本地依赖,还会检查配置文件是否可读、API Key 是否存在、Base URL 是否可达。如果前面几步都对了,这里应该全绿。如果 doctor 报 API 相关错误,优先看它提示的是 Key 缺失还是连接失败,两者排查方向不同。
成功的结果长这样:hermes chat -q返回正常文本,hermes model list能列出模型,hermes doctor全绿。三个都通过,说明环境变量和 API 通道都配好了,可以正常使用 hermes 做本地 AI 应用开发。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
这一节按真实报错来对照,每条都给出原因和修复动作。你遇到哪个就查哪个,不用全看。
5.1 401 Unauthorized
报错原文通常是401 Unauthorized或invalid api key。原因基本是.env里的 Key 没被读到,或者 Key 本身无效。先确认文件路径和内容:
Get-Content "$env:USERPROFILE\.hermes\.env"如果文件里 Key 是空的、带了引号、或者变量名写成了API_KEY而不是OPENAI_API_KEY,都会导致 401。修正后重开终端再试。如果文件内容没问题,去 TaoToken 控制台的 API Keys 页面确认这个 Key 是否还在有效状态,有没有被删除或过期。
5.2 local proxy failed
报错原文类似local proxy failed或connection refused。这通常不是 hermes 本身的问题,而是本机网络层有东西拦截了请求。检查一下系统里有没有设置全局 HTTP 代理,PowerShell 里执行:
netsh winhttp show proxy如果显示有代理服务器,而你的 TaoToken 通道不需要走这个代理,就会连接失败。用以下命令重置:
netsh winhttp reset proxy然后重开终端再试。另外检查环境变量里有没有HTTP_PROXY或HTTPS_PROXY:
Get-ChildItem Env: | Where-Object { $_.Name -match "PROXY" }如果有,用Remove-Item Env:HTTP_PROXY临时清掉,或者去系统环境变量里永久删除。
5.3 reading choices 相关报错
报错原文可能是error reading choices或unexpected response format。这说明请求发出去了,但返回的 JSON 结构跟 hermes 预期的不一致。最常见的原因是base_url写错了,比如漏了/api或者多加了/v1。TaoToken 的 API 地址是https://taotoken.net/api,不要自己拼/v1/chat/completions,hermes 会自己补路径。检查config.yaml里的base_url是否跟这个完全一致。
另一个可能是model字段填了一个通道不支持的模型名,导致返回了错误结构。去模型对话页面确认可用的 Model ID,改成正确的名字。
5.4 OAuth 相关报错
如果你在 hermes 里选了 Anthropic 或某些需要 OAuth 的 provider,可能会遇到OAuth token expired或authentication failed。这类报错跟 API Key 模式不同,它走的是另一套鉴权流程。最简单的做法是切回 API Key 模式:把provider改成openai,base_url指向 TaoToken,用 Key 鉴权。这样就不依赖 OAuth 了。如果你确实需要用 OAuth provider,按 hermes 提示重新走一遍授权流程,注意浏览器回调地址要跟配置里一致。
5.5 命令找不到或配置不生效
如果hermes命令在重开终端后仍然找不到,手动确认 PATH:
$env:Path -split ";" | Select-String "hermes"如果没有输出,说明 PATH 没写进去。回到 3.1 节重新执行添加命令,注意要用User作用域,不要用Machine。如果 PATH 里有但命令还是找不到,检查%LOCALAPPDATA%\hermes\hermes-agent\venv\Scripts目录下是否有hermes.exe,没有的话说明安装不完整,需要重跑安装脚本。
配置改了但不生效,最常见的原因是改了文件但没重开终端,或者config.yaml和.env两边不一致。用hermes config get读一遍当前生效值,跟文件内容对照。
6. 配好之后怎么用:TaoToken 通道下的 hermes 日常操作
环境变量和 API 通道配好之后,hermes 的日常使用就顺了。这里给几个常用命令和对应场景,方便你直接上手。
单次提问适合快速验证和脚本调用:
hermes chat -q "把这段 PowerShell 脚本改成带错误处理的版本"交互式 TUI 适合多轮调试和探索:
hermesWeb 配置面板适合可视化查看和调整配置:
hermes dashboard启动后浏览器打开提示的本地地址,可以在面板里看到当前 provider、model、base_url 和 Key 状态。如果面板里显示 Key 为空,说明.env没被读到,回到第 3 节检查。
工具配置用:
hermes tools这里可以启用或禁用浏览器、文件读写、Shell 执行等能力。建议初次使用时只开文件读写,确认稳定后再开 Shell 和浏览器。
如果你打算长期用 hermes 做编码或 Agent 任务,可以考虑 Coding Plan 这类长期方案,把通道和额度固定下来,避免每次临时配 Key。模型对话页面可以用来确认当前通道支持哪些模型,接入文档里有完整的 Base URL 和鉴权说明。API Keys 页面管理你的 Key,控制台看用量。
最后提醒一个实操细节:hermes 的会话和记忆存在%USERPROFILE%\.hermes\sessions\和MEMORY.md,如果你换了 Base URL 或 Model ID,旧会话里的上下文可能跟新模型不兼容,建议新建会话再试。配置改完后,用hermes doctor做一次全量自检,比直接发消息更快定位问题。