ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Hermes Agent CLI 命令参考大全:把 endpoint 改到 TaoToken 的完整配置清单

Hermes Agent CLI 命令参考大全:把 endpoint 改到 TaoToken 的完整配置清单

1. 为什么装了 Hermes Agent 还要折腾 endpoint

Hermes Agent 是 Nous Research 出的自进化智能体框架,CLI 是它的主入口。你装完之后默认会走官方或 OpenRouter 的通道,但很多开发者手里已经有别的模型通道,或者想统一管理多个 provider 的 Key,这时候就需要把 endpoint 改到自定义地址。我这次要讲的就是把 Hermes Agent 的 provider endpoint 指向 TaoToken,让 CLI 里所有命令都能走这条通道。

先说清楚 Hermes Agent CLI 是什么、能做什么、适合谁。它是一套终端命令集合,形态统一为hermes [全局选项] <命令> [子命令/选项]。核心命令分几类:hermes chat负责交互式对话和单次查询,hermes model是 provider 设置向导,hermes gateway管消息网关,hermes cron管定时任务,hermes skills管技能生命周期,hermes config管配置文件,hermes doctor和hermes dump负责诊断。适合已经装好 Hermes Agent、想快速切换模型通道的开发者。

为什么 endpoint 配置这么关键?因为 Hermes 的 provider 抽象层把「用哪个模型」和「走哪个地址」拆开了。你在hermes model向导里添加 provider 时,会依次填 Base URL、API Key、Model ID 三件套。Base URL 决定了请求发到哪里,API Key 决定鉴权,Model ID 决定调哪个模型。这三者只要有一个不对,CLI 就会在请求阶段报错,而且报错信息往往不直接指向根因。

我见过最常见的场景是:开发者在会话里敲/model,发现只能看到已经配好的 provider,想加新的却加不进去。原因是/model只是会话内的切换器,它不能新增 provider。要新增,必须先退出会话,从终端跑hermes model。这个区分是新手最容易踩的坑,后面排障章节会专门讲。

把 endpoint 改到 TaoToken 的收益很直接:一个 Base URL 加一个 Key,就能在 Hermes 里调用多个模型,不用为每个 provider 单独维护配置。而且 TaoToken 的 API 地址是标准的 OpenAI 兼容格式,Hermes 的 provider 抽象层能直接识别。下面从配置文件的路径开始,一步步给出可复制的片段。

2. TaoToken 前置准备:Key、Base URL 与 config.yaml 路径

在动 Hermes 的配置之前,先把 TaoToken 这边的三件套准备好。打开 https://taotoken.net/api 对应的控制台,在 API Keys 页面创建一个新 Key。创建时建议给 Key 起个能识别的名字,比如hermes-dev,方便以后在多个工具间区分。Key 只在创建时完整显示一次,复制下来存到安全的地方。

Base URL 用https://taotoken.net/api,注意这个地址不带任何查询参数。Model ID 按你实际要用的模型填,比如claude-sonnet-4.6或gpt-5.6-terra这类。具体有哪些模型可用,可以在模型对话页面里看当前支持的列表,或者直接查接入文档里的模型清单。

接下来找 Hermes 的配置文件。默认路径是~/.hermes/config.yaml。如果你用了--profile切换实例,那每个 profile 有自己独立的 config,路径在对应 profile 的主目录下。先确认当前用的是哪个 profile:

hermes profile list

输出会列出所有 profile 和当前激活的那个。假设你用的是默认 profile,配置文件就是~/.hermes/config.yaml。用编辑器打开它,或者直接用hermes config show看当前值:

hermes config show

这个命令会把 config.yaml 里的所有键值对打印出来,包括已有的 provider 配置。如果你之前配过 OpenRouter,会看到类似providers.openrouter.api_key这样的字段。我们要做的是新增一个 provider 条目,指向 TaoToken。

这里有个细节要注意:Hermes 的 config.yaml 里 provider 是一个字典,每个 provider 有自己的base_url、api_key、models等字段。你可以手动编辑 YAML,也可以用hermes model向导交互式添加。手动编辑的好处是能一次配好多个模型,向导的好处是不容易写错缩进。两种方式我都会给出来。

在开始改配置之前,建议先备份一份:

cp ~/.hermes/config.yaml ~/.hermes/config.yaml.bak

这样万一改坏了,直接还原就行。Hermes 本身也有hermes backup --quick --label "pre-endpoint-change"可以打快照,但手动 cp 更快。备份完就可以进入下一步,写配置片段了。

3. 可复制配置:config.yaml 里的 provider 片段与 CLI 命令

这一节给出可以直接粘贴的配置。先看 config.yaml 的结构。Hermes 的 provider 配置大致长这样:

providers: taotoken: base_url: "https://taotoken.net/api" api_key: "sk-你的TaoToken密钥" models: - id: "claude-sonnet-4.6" name: "Claude Sonnet 4.6" - id: "gpt-5.6-terra" name: "GPT-5.6 Terra" default_model: "claude-sonnet-4.6"

把这段加到providers:下面,注意缩进用两个空格,不要用 Tab。api_key那行填你刚才创建的 Key。models列表里可以放多个模型,default_model指定这个 provider 的默认模型。

如果你更习惯用向导,退出所有会话后跑:

hermes model

向导会依次问:provider 名称、Base URL、API Key、要添加的模型 ID。Base URL 填https://taotoken.net/api,Key 粘贴进去,模型 ID 填你要用的。向导跑完后会自动写进 config.yaml,不用手动改缩进。

配好之后,用hermes config show确认一下:

hermes config show | grep -A 10 taotoken

应该能看到刚才写的 base_url 和 models。如果没看到,说明 YAML 缩进有问题,或者 provider 名称拼错了。

接下来是 CLI 命令速查。日常最常用的几条:

# 交互式聊天,指定 provider 和模型 hermes chat --provider taotoken --model claude-sonnet-4.6 # 单次查询,非交互式 hermes chat -q "用一句话解释 WAL" --provider taotoken # 最纯粹的单次查询,只输出最终回复纯文本 hermes -z "summarize this" < /path/to/file.txt # 指定 toolset hermes chat --toolsets web,terminal,skills --provider taotoken # 在隔离的 git worktree 里启动 hermes chat --worktree --provider taotoken

hermes -z和hermes chat -q的区别值得单独说。-z是专门为脚本化设计的,stdout 上只有 agent 的最终回复纯文本,没有横幅、没有 spinner、没有工具预览、没有 Session 行。父脚本可以直接answer=$(hermes -z "...")干净捕获。chat -q会保留工具调用记录和完整会话上下文,输出里包含工具预览,适合需要追溯的场景。要管道友好用-z,要记录用chat -q。

全局选项里有两个开关在调试时特别有用:

# 忽略用户配置,回退到内置默认值 hermes --ignore-user-config -q "test" # 跳过 AGENTS.md、SOUL.md、memory 和预加载 skill 的自动注入 hermes --ignore-rules -q "test" # 两者组合,得到完全隔离的运行 hermes --ignore-user-config --ignore-rules -q "Repro without my personal setup"

这个组合在 CI 里复现 bug 或做第三方集成测试时非常实用,因为它排除了你个人配置的干扰。

如果你用的是 Claude Code 或 Cline 这类工具,配置逻辑类似,都是 Base URL + Key + Model ID 三件套。Hermes 的 provider 抽象层把这套逻辑统一了,所以你在 config.yaml 里配好一次,所有 CLI 命令都能复用。

4. 验证请求:一次完整的连通性测试与成功结果

配置写完之后,必须验证请求真的能通。最直接的方式是跑一次单次查询,看返回内容:

hermes -z "回复:连通性测试通过" --provider taotoken --model claude-sonnet-4.6

如果配置正确,终端会直接输出类似连通性测试通过的纯文本。注意-z模式下没有多余输出,所以如果看到任何非预期内容,说明请求可能没走对通道。

更详细的验证用hermes chat -q,它会显示工具预览和会话信息:

hermes chat -q "1+1等于几" --provider taotoken --model claude-sonnet-4.6

成功的话,你会看到 agent 的回复,以及它用了哪些工具(如果有)。如果模型返回了答案,说明 Base URL、Key、Model ID 三件套都对了。

想确认请求确实发到了 TaoToken,可以看日志:

hermes logs --level INFO --since 5m -f

这个命令会实时跟踪最近 5 分钟的 INFO 级别日志。发一次请求,观察日志里有没有指向taotoken.net的请求记录。如果有,说明 endpoint 切换成功。

另一个验证角度是看 WAL 式的「请求-响应」链路。Hermes 的 provider 层在发请求前会记录目标 URL,你可以用hermes dump输出当前设置摘要:

hermes dump --show-keys

--show-keys会显示脱敏的密钥前缀,你能确认用的是哪个 Key。输出是纯文本,没有 ANSI 颜色,方便直接贴到 issue 里。

如果一切正常,你应该能连续跑几条不同模型的请求:

hermes -z "用一句话说明什么是 LSN" --provider taotoken --model claude-sonnet-4.6 hermes -z "用一句话说明什么是 WAL" --provider taotoken --model gpt-5.6-terra

两条都返回合理答案,说明多模型切换也没问题。到这里,endpoint 切换就算完成了。接下来是排错环节,把常见的报错和对应解法列出来。

5. 常见报错排查:401、local proxy failed、reading choices、OAuth

这一节按真实报错来组织。每个报错给出触发场景、根因和修复命令。

401 Unauthorized。这是最常见的。触发场景:请求发出去了,但鉴权失败。根因通常是 Key 填错、Key 过期、或者 Base URL 和 Key 不匹配。先确认 config.yaml 里的api_key是不是完整的,有没有多余空格。然后确认 Base URL 是https://taotoken.net/api,没有多写路径。修复:

hermes config set providers.taotoken.api_key "sk-新的Key" hermes -z "test" --provider taotoken

如果还是 401,去控制台确认 Key 的状态,看是不是被禁用或额度用尽。

local proxy failed。触发场景:Hermes 尝试走本地代理但连不上。根因通常是环境变量里设了HTTP_PROXY或HTTPS_PROXY,但代理服务没跑。Hermes 会读取这些环境变量。检查:

env | grep -i proxy

如果有输出,临时清掉再试:

unset HTTP_PROXY HTTPS_PROXY hermes -z "test" --provider taotoken

注意这里说的是本地环境变量层面的代理设置,不是让你去配什么网络工具。清掉之后如果通了,说明是环境变量干扰。

reading choices 报错。触发场景:请求返回了非预期格式,Hermes 在解析响应时失败。根因通常是 Base URL 写成了不带/api的地址,或者多写了/v1之类的路径。TaoToken 的 Base URL 就是https://taotoken.net/api,不要自己加后缀。修复:

hermes config set providers.taotoken.base_url "https://taotoken.net/api"

然后重新验证。如果还报错,用hermes logs --level DEBUG --since 2m看详细请求 URL。

OAuth 相关报错。触发场景:你在hermes model向导里选了 OAuth 流程,但 OAuth 回调失败。根因通常是本地端口被占用,或者浏览器没正确跳转。Hermes 的 OAuth 流程需要一个本地回调端口。如果报错,先退出向导,检查端口占用:

lsof -i :8080

换个端口重跑向导,或者在向导里选择 API Key 方式而不是 OAuth。对于 TaoToken 这种标准 API 通道,直接用 API Key 更简单,不需要走 OAuth。

模型不存在报错。触发场景:Model ID 拼错,或者该模型在当前通道不可用。修复:去模型对话页面确认可用模型列表,然后:

hermes config set providers.taotoken.default_model "正确的模型ID"

配置不生效。触发场景:改了 config.yaml 但 CLI 还是走旧配置。根因通常是当前会话缓存了旧配置,或者你改的是另一个 profile 的 config。修复:退出所有会话,确认 profile:

hermes profile list hermes config show | grep taotoken

如果 profile 不对,用hermes --profile <name> config show看对应 profile 的配置。

把这几类报错对照着排查,基本能覆盖 90% 的接入问题。剩下的用hermes doctor --fix自动修复一部分,或者hermes dump输出摘要去求助。

6. 把通道固定下来:Coding Plan 与长期使用建议

endpoint 切换完成、验证通过之后,下一步是把它固定成日常默认。最省事的做法是在 config.yaml 里把 TaoToken 设为默认 provider:

default_provider: "taotoken"

这样以后跑hermes chat不用每次都加--provider taotoken。如果你有多个 profile,比如一个用于工作、一个用于实验,可以给每个 profile 配不同的默认 provider。

对于长期编码和 Agent 场景,建议看一下 Coding Plan 的额度方案。Hermes 的 agent 工作流会频繁调用模型,尤其是--toolsets开了多个工具集之后,单次会话的 token 消耗会比普通对话高不少。Coding Plan 按长期使用设计,比按次计费更适合这种场景。

日常使用中,我建议把常用的几条命令做成 alias:

alias hc='hermes chat --provider taotoken --model claude-sonnet-4.6' alias hz='hermes -z --provider taotoken'

这样敲hc就进交互式聊天,hz "问题"就做单次查询。配合hermes cron还能把定时任务也走这条通道:

hermes cron create --skill daily-summary --provider taotoken

技能系统那边,hermes skills install装的技能默认会继承当前 provider 配置,所以 endpoint 改一次,所有技能都跟着走新通道。如果某个技能需要特定模型,可以在技能定义里单独指定。

最后提醒一点:config.yaml 里存了 API Key,注意文件权限。建议:

chmod 600 ~/.hermes/config.yaml

这样只有你自己能读。如果要把配置分享给别人,用hermes dump而不是直接贴 config.yaml,因为 dump 会脱敏密钥。

整套流程走下来,核心就是三件事:Base URL 填https://taotoken.net/api,Key 填对,Model ID 填对。三件套齐了,Hermes 的所有 CLI 命令都能走这条通道。排错时优先看 401 和 reading choices,这两个覆盖了大部分配置错误。把默认 provider 固定下来之后,日常使用就不用再操心 endpoint 的事了。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进