上一篇 Hermes-Agent 安装教程 讲的是怎么装、怎么接 Telegram。这篇讲真正每天要用的部分:Hermes 到底怎么操控、常用命令有哪些、以及怎么让 Hermes 和 Codex 用同一把 key、同一个模型。
本文基于本机实测的 Hermes Agent v0.19.1(源码 ~/.hermes/hermes-agent/,git 安装方式),命令和文件路径都跟这个版本对齐;后续版本升级后可能会变。
1. 先搞清楚三个文件
| 路径 | 作用 |
|---|---|
~/.hermes/config.yaml | 主配置:模型、agent 行为、终端、显示、toolset、skills 审批 |
~/.hermes/.env | 密钥与环境变量(API key、代理、Telegram token 等) |
~/.hermes/hermes-agent/ | Agent 源码本体 |
~/.hermes/logs/ | agent.log / errors.log / gateway.log,排错全靠它 |
~/.hermes/skills/ | 你自己的 skill(每个一个 SKILL.md) |
版本和自检:
hermes --version
hermes status # 环境、API key、provider、网关、渠道总览
hermes doctor # 体检:Python / SSL / 配置 / 鉴权
2. 四种操控姿势
| 姿势 | 命令 | 场景 |
|---|---|---|
| 交互式 TUI | hermes 或 hermes chat | 日常对话,边聊边 /命令 |
| 一次性提问 | hermes -z "问题" | shell 里快速问一句(--oneshot) |
| 脚本 / CI | hermes chat -q "问题" -Q | -Q 静默,只输出最终回复和 session id |
| 接着上次聊 | hermes --continue / hermes -c [会话名] | 恢复最近或指定名字的会话 |
几个高频 flag(hermes chat --help 全量):
| flag | 作用 |
|---|---|
-m, --model | 本次用哪个模型 |
--provider | 走哪个 provider(内置名,或 config.yaml 里 providers: 自定义名) |
-t, --toolsets | 逗号分隔启用哪些工具集 |
-s, --skills | 预载 skill(可重复) |
--max-turns N | 单轮最多几次工具调用 |
-w, --worktree | 在独立 git worktree 里跑,适合并行 agent |
--checkpoints | 破坏性文件操作前打快照,出事可 /rollback |
--yolo | 跳过危险命令确认(自担风险) |
--pass-session-id | 把 session id 注入 system prompt,方便脚本串联 |
3. CLI 常用命令
会话
hermes sessions # 浏览/恢复历史会话
hermes sessions list # 列表形式
hermes profile # 当前 profile 与 home 目录
hermes project # 多目录工作区
模型与配置
hermes model # 交互式选 provider + 模型(纯 TUI 选择器)
hermes model --refresh # 清缓存,重新拉各 provider 的在线 /v1/models
hermes config show # 看当前配置
hermes config get model.default # 读某个配置项
hermes config set model.default MiniMax-M3.1-Flash-Preview # 改配置(推荐)
hermes config unset <key> # 删配置项
hermes config path # 配置文件路径
hermes config check # 检查缺失/过期配置
勘误:上一篇写的
hermes model set <provider>/<model>和hermes model chat "..."在 v0.19.1 里都不存在了。hermes model现在只是个交互式选择器,命令行改模型请用hermes config set。
扩展能力
hermes skills # 搜索 / 安装 / 审计 skill
hermes tools # 管理内置工具(list/disable/enable)
hermes mcp # MCP server 管理
hermes plugins # 插件列表与状态
hermes memory # 外部记忆插件(mem0 / hindsight 等),内置 MEMORY.md 始终在
hermes computer-use # 电脑操作能力
自动化与消息
hermes cron list # 定时任务
hermes cron add ... # 加定时任务
hermes send "..." # 往 Telegram/Slack 等已配置平台发消息
hermes gateway status # 网关(IM 渠道)状态
hermes pairing # 配对授权
hermes acp # 以 ACP 服务形式跑,给编辑器当后端
维护
hermes update # 升级
hermes backup # 打包 ~/.hermes 成 zip
hermes import <zip> # 从备份恢复
hermes checkpoints # 检查/清理文件快照
hermes logs # 日志
hermes debug # 上传调试报告
hermes security # 依赖/MCP 的供应链审计(OSV.dev)
hermes dump # 导出一份配置摘要,贴 issue 用
4. 会话内 slash 命令
进入 hermes 之后直接打 /,最常用的:
| 命令 | 作用 |
|---|---|
/model [模型] [--provider x] [--global\|--session] | 切模型,--global 才会写回配置 |
/status | 当前会话、模型、token、上下文占用 |
/context(/ctx) | 上下文窗口详情 + 分类占用 + 压缩统计 |
/usage | token 用量与限流 |
/new /clear /history /resume /sessions | 会话生命周期 |
/compress(/compact) | 压缩上下文,/compress here 5 只保留最近 5 轮 |
/rollback | 列出/恢复文件快照(配合 --checkpoints) |
/branch /undo /retry | 会话分叉、回退、重发 |
/tools /toolsets /skills /memory | 工具与 skill 管理 |
/init | 扫描仓库生成/更新 AGENTS.md |
/learn | 把一段经验沉淀成可复用 skill |
/reasoning [档位] | 思考强度 none/low/medium/high/xhigh/max… |
/personality /skin /focus /verbose | 显示与人格 |
/yolo /approvals | 危险命令审批模式 |
/queue /steer /stop /busy | 打断、排队、插话控制 |
/reload /reload-mcp /reload-skills | 热加载配置 / MCP / skill |
/goal /cron /kanban | 长期目标、定时任务、多 profile 看板 |
/help | 全部命令列表 |
5. 让 Hermes 和 Codex 用同一个模型
5.1 我两边的实际配置
Codex(~/.codex/config.toml):
model = "MiniMax-M3.1-Flash-Preview"
model_reasoning_effort = "medium"
model_provider = "minimax"
[model_providers.minimax]
base_url = "https://api.minimax.cn/v1"
experimental_bearer_token = "sk-cp-xxxx"
wire_api = "responses"
Hermes(~/.hermes/config.yaml + ~/.hermes/.env):
model:
default: MiniMax-M3.1-Flash-Preview
provider: minimax-cn
# ~/.hermes/.env
MINIMAX_CN_API_KEY=sk-cp-xxxx # 和 codex 用的是同一把
MINIMAX_CN_BASE_URL=https://api.minimaxi.com/v1
5.2 永久切换(推荐)
hermes config set model.default MiniMax-M3.1-Flash-Preview
hermes config get model.default # 确认写入成功
hermes status # Model 那行应该显示新模型
改完直接跑一条验证,别光看配置:
hermes chat -q '只回复 ok' -Q
5.3 临时切换 / 会话内切换
# 只影响这一次调用
hermes chat -q '只回复 ok' -Q -m MiniMax-M3.1-Flash-Preview --provider minimax-cn
会话里 /model MiniMax-M3.1-Flash-Preview --provider minimax-cn 只改当前会话;加 --global 才落盘。
5.4 模型 id 有个小坑
平台 /v1/models 返回的正式 id 是 MiniMax-M3.1-Flash,而 Codex 用的 MiniMax-M3.1-Flash-Preview 是别名。两者都能调通,不用纠结,但要知道区别:
curl -s https://api.minimax.cn/v1/models -H "Authorization: Bearer $MINIMAX_CN_API_KEY"
Hermes 这边不校验模型白名单,-m 写什么就发什么,所以列表里没有也能直接用。
5.5 端点:同一个平台,两个域名
https://api.minimax.cn/v1 和 https://api.minimaxi.com/v1 用同一把 key 实测都能通、模型列表完全一致,Hermes 默认走后者(MINIMAX_CN_BASE_URL)。想和 Codex 字面完全一致,改 .env 即可:
MINIMAX_CN_BASE_URL=https://api.minimax.cn/v1
但要注意同模型不同协议:Codex 走 Responses API,Hermes 走 OpenAI 兼容的 /chat/completions。模型是同一个,工具调用格式、推理摘要(Hermes 侧是 reasoning_content)的表现会有细微差别。
5.6 思考强度也得分开调
| 配置项 | 当前值 | |
|---|---|---|
| Codex | model_reasoning_effort(~/.codex/config.toml) | medium |
| Hermes | agent.reasoning_effort(~/.hermes/config.yaml)或会话内 /reasoning | medium |
5.7 想接任意 OpenAI 兼容端点
Hermes 的 config.yaml 支持 providers: 段,可读性强于手搓 LiteLLM 配置:
providers:
my-gateway:
name: my-gateway
base_url: https://api.example.com/v1
key_env: MY_GATEWAY_API_KEY
api_mode: chat_completions # chat_completions | anthropic_messages | codex_responses
model: some-model-id
discover_models: true
之后 --provider my-gateway -m some-model-id 即可。常用字段:base_url / api_key 或 key_env / api_mode / model / models / extra_body / extra_headers / ssl_ca_cert 等。
6. 排错速查
| 现象 | 排查 |
|---|---|
| 401 / 403 | key 没 export,或 base URL 少了 /v1 前缀 |
| 改了 config 没生效 | hermes config check、hermes doctor;注意 model.base_url 里可能残留着别的 provider 的旧地址 |
| 模型选不到 | hermes model --refresh 重新拉在线列表;或直接 -m 手写 id |
| 想知道请求实际打到哪个 host | grep 'https://api' ~/.hermes/logs/agent.log \| tail |
| 网关(IM 渠道)不通 | hermes gateway status、tail -f ~/.hermes/logs/gateway.log |
| 升级后行为异常 | 清 __pycache__ 再重启:find ~/.hermes/hermes-agent -name __pycache__ -type d -exec rm -rf {} + |
7. 一句话总结
Hermes 的 CLI 命令很多,但真正每天用的就三条:hermes 进 TUI、hermes -z "问题" 快速问、hermes config set model.default <模型> 换模型;会话内的 /model /compress /init /reasoning 是四个高频 slash。模型这块,Hermes 和 Codex 共用同一把 MiniMax key 完全可行,唯一的坑是模型 id 的 -Preview 后缀和两边走的协议不同。