🤖HermesBlog
Hermes 官方教程 · 第5篇2026/8/9· Easy Understand Hermes Agent

命令行入门——像程序员一样使用 Hermes

Hermes Agent 官方教程第五篇:CLI 命令行接口。常用命令一网打尽。

CLI 命令行:遥控器指挥 AI

命令行入门——像程序员一样使用 Hermes

嘿,朋友们!上一篇我们聊了聊天框里的斜杠命令,今天咱们换个战场——真正的终端。别怕,跟着我一步步来,你会发现命令行其实没那么可怕,反而有种“黑客帝国”的酷感。

一切从 hermes 开始

打开你的终端,输入 hermes,后面跟上你想干的事。基本格式长这样:

hermes [全局选项] <命令> [子命令/选项]

就这么简单!比如你想看看版本号,就敲 hermes --version 或 hermes -V。

几个超实用的全局选项

这些选项放在 hermes 后面、具体命令前面,用来调整整体行为:

  • -p <名字> 或 --profile <名字>:切换你的 Hermes 配置文件。比如 hermes -p work chat 就用 work 配置启动聊天。
  • -r <会话> 或 --resume <会话>:接着之前的对话继续聊。hermes -r latest chat 直接恢复最近一次会话。
  • -c 或 --continue:也是恢复会话,但更“智能”——直接回到最近的那个。想按标题找?-c 我的项目 就行。
  • --in <目录>:先进入某个目录再启动,适合在项目文件夹里直接干活。
  • --yolo:跳过所有危险命令的确认提示。⚠️ 新手慎用,老手也悠着点!
  • --tui:启动图形化的终端界面,比纯命令行好看不少。
  • --base-url <url> / --api-key <key>:配合 --provider custom 指定 OpenAI 兼容端点和仅本次启动使用的密钥;密钥只留在运行中 gateway 的内存里,不会写到磁盘。

顺带认识一下 hermes-agent

安装包里还附带了一个叫 hermes-agent 的小工具,它是个极简的“一问就走”运行器:hermes-agent --query "summarize README.md"(也可以直接 hermes-agent "summarize README.md")。hermes-agent --help 会列出它的选项(--model、--base-url、--max-turns、--enabled-toolsets、--disabled-toolsets、--list-tools、--save-trajectories 等),hermes-agent --version 打印版本号——这两个都不会真正启动代理。它是遗留(legacy)的一次性查询运行器。不带查询直接运行,它也只是打印帮助然后退出。除了这种一次性场景,其他都请用 hermes(脚本化的一次性调用是 hermes -z <prompt>)。

常用命令一览

Hermes 的命令很多,咱们挑几个高频的:

命令 干啥用
hermes chat 进入交互式聊天,最常用的入口
hermes model 交互式选择默认模型和提供商
hermes auth 管理登录凭证(登录/登出/状态)
hermes status 查看代理、认证和平台状态
hermes usage 不开会话也能看账号的限流窗口,加 --json 方便脚本用
hermes doctor 诊断配置和依赖问题,出问题先跑它
hermes logs 查看日志,排查问题必备
hermes backup 把整个 Hermes 配置打包备份
hermes import 从备份文件恢复
hermes send 给 Telegram、Discord 等平台发一条消息,适合脚本里用
hermes config 查看和修改配置文件
hermes connectors 列出、连接、重命名和断开托管连接器账号
hermes mcp 管理 MCP 服务器配置;把 Hermes 本身当 MCP 服务器跑已挪到 mcp-serve 插件(hermes plugins install mcp-serve,然后 hermes mcp-serve;hermes mcp serve 会打印这个新写法)
hermes webapp 用普通浏览器打开桌面端工作区(由 gateway 提供):bundle 过期会先构建,gateway 没跑会先起来,然后打开一张 60 秒内有效、只能用一次的登录链接
hermes pause / hermes resume 全局急停 / 恢复:暂停后不再触发新 cron、kanban 派发或 gateway 回合,已在跑的回合会跑完
hermes sessions refresh-prompts 让正在进行的会话在下一轮重建系统提示词(吃上新的 SOUL.md、技能、AGENTS.md),保留对话历史和会话 ID;--session ID 只刷一个
hermes import-agent / hermes claw 导入 OpenClaw、Claude Code、Codex CLI 或 Cursor 的配置,来自官方 agent-importers 插件(先 hermes plugins install agent-importers)
hermes update 更新到最新稳定版(或所选频道)并重装依赖。--check 只预览不安装;--backup 会在拉取前给 HERMES_HOME 拍个快照

把 hermes status 用明白

hermes status 是排障第一步,默认会打印一屏摘要:当前模型、正在用的提供商、所有配好凭证的提供商(就是 /model 选择器里那份名单)、gateway 状态、gateway 会启动哪些消息平台,以及定时任务。放心,不会打印任何密钥的值。

想看得更细,加两个开关:

选项 说明
--full 打印所有板块(API key 打码、认证提供商、终端后端、会话等)。--all 是它的别名。
--safe-mode 排障模式:禁用所有自定义项(用户配置、规则/记忆注入、插件、shell 钩子、MCP 服务器),并隐含 --ignore-user-config 和 --ignore-rules。gateway 会把代码默认值和你的显式选项冻结进会话,在隔离的 worker 进程里跑这一轮,不读 profile,所以坏掉的 config.yaml 也拦不住它。必须显式给 --model(没有 profile 默认值可继承);配合 --provider custom --base-url <url> --api-key <key> 可完全显式指定端点。
--base-url <url> / --api-key <key> 配合 --provider custom 指定 OpenAI 兼容端点和仅本次启动使用的密钥;密钥只留在运行中 gateway 的内存里,不会写到磁盘。
--deep 跑更深入的检查,可能比较慢。会自动包含 --full。

报告里还会列出与默认值不同的配置项(Config overrides),其中的凭证会打码:比如 fallback_providers 条目里的 api_key,以及它 base_url 里带的凭证(userinfo、key/token 查询参数、签名 URL 的签名)。

举个例子

假设你想用另一个配置、恢复上次的对话,还要跳过确认:

hermes -p work -r latest --yolo chat

是不是有种“老司机”的感觉了?

小贴士

  • 记不住命令?敲 hermes 回车,它会列出所有可用命令。
  • 出问题了先跑 hermes doctor,它能帮你发现大部分配置问题。顺便说一句,hermes doctor 现在有了明确的退出码:报告里没有未解决问题时返回 0,只要还剩至少一个问题(包括 --fix 修不好的)就返回 1,所以可以直接拿它当健康检查或 CI 步骤用。
  • 想备份配置?hermes backup 一键搞定,换电脑时用 hermes import 恢复。
  • 用 hermes config set 写配置时注意:点号路径(如 agent.max_turns)写进 config.yaml,而所有 UPPER_SNAKE 形式的名字(如 OPENROUTER_API_KEY、DISCORD_HOME_CHANNEL)一律写进 .env,--force 也不会把这类名字塞进 config.yaml。值会按 schema 做类型检查,像 custom_providers 这种要求列表或映射的键,别写成带引号的字符串。
  • 看日志时,hermes logs 的 log_name 可以选 agent(默认)、errors、gateway、gui、desktop、update、handoff,或者用 list 列出所有可用文件及大小。其中 mcp 对应 mcp-stderr.log(每个 stdio MCP 服务器的 stderr),update 对应 update.log(hermes update 的完整输出,排查更新/依赖失败就看它),handoff 对应 desktop-update-handoff.log(桌面端驱动的更新交接过程)。另外,没有自己时间戳的行(比如 traceback 的某一行、多行消息的后续行)会跟着它上面那条带时间戳的行一起显示或隐藏。
  • 用 hermes logs --upload 之类的方式上报日志时,默认会做打码处理,密钥不会被带出去——系统信息、配置值(包括 fallback_providers 条目及其 URL 里的凭证)、日志本身,以及 gateway 的 /debug 报告都在打码范围内。报告内容包含系统信息(操作系统、Python 版本、Hermes 版本)、最近的 agent/gateway/GUI 面板/桌面日志(每个文件上限 512 KB),以及更新和桌面更新交接日志(如果有的话)。

顺带一提:几个新玩法

官方文档最近加了几样东西,简单提一句,用到时再细看:

  • hermes connectors 管理托管连接器账号:用来管理通过 Nous 工具网关访问的托管应用账号(比如 Gmail),需要先登录 Nous Portal。一个应用可以有多个具名账号。子命令有 list(列出连接器及连接状态)、accounts [app] [--all](列出账号,--all 包含已退役的)、connect <app> [--alias NAME] [--reconnect [--force]](打印连接链接并等待完成,Ctrl-C 停止等待;--alias 给账号命名,新名字就是新增一个账号;--reconnect 修复指定账号且不删任何东西,已连接的账号会提示并需要 --force 才动)、rename <app> <name-or-label> --to <new>(重命名,未命名账号用应用标签匹配,需要 Nous Portal 版本支持,否则会提示暂不支持)、disconnect <app> [--alias NAME] [--yes](移除账号,不加 --yes 会先确认)。
  • hermes peer 支持异步长任务:除了 hermes peer dm,现在还多了 hermes peer run(异步发起一轮对话,返回 run_id)、hermes peer status(轮询结果)和 hermes peer stop(精确停止某次运行)。重试同一个请求时记得复用 --idempotency-key。
  • hermes auth add 支持 OAuth 和优先级:比如 hermes auth add openrouter --type oauth 走浏览器登录自动签发密钥;hermes auth add openai-codex --type oauth --priority 0 可以添加账号并让它优先使用;hermes auth priority 用来调整已有凭证的顺序。顺带一提,Spotify 登录已经挪到 spotify 目录插件的 hermes spotify login 了。
  • hermes import-agent 与 hermes claw 挪进插件:导入 OpenClaw(~/.openclaw)、Claude Code(~/.claude)、Codex CLI(~/.codex)或 Cursor(~/.cursor)的配置,现在由官方 agent-importers 插件提供,先 hermes plugins install agent-importers,再 hermes import-agent [openclaw|claude-code|codex|cursor] [选项]。hermes claw(OpenClaw 迁移)也在这个插件里,拼写保留;hermes claw migrate 等同于 hermes import-agent openclaw。没装插件时这两个命令会打印安装提示。全新安装时,hermes setup 如果发现上述任一 agent 的配置,会主动问“Import your setup from …?”(默认是),并帮你装插件、跑导入(先预览再改)。
  • hermes migrate 命令:把每个 profile 独立的 gateway 迁移到一个多路复用的默认 gateway(--multiplex,也是唯一模式,hermes update 会自动跑,除非遇到真正的边界阻挡)。重复运行可以让迁移到一半的主机收敛;磁盘上的 manifest 是断点续做的记录,不是回滚点(没有 --standalone)。迁移前会做预检(重复的 bot token、没有 /p/<profile>/ 入口的次级端口绑定),有问题就不动任何东西。支持 --dry-run 和 -y/--yes。
  • hermes pause / hermes resume 全局急停:暂停后不会再触发新的 cron、kanban 派发或 gateway 回合。交互式 CLI、TUI 和桌面端的回合都属于 gateway 回合,所以也会被一起拦住,各界面会显示“Hermes is paused”、原因以及“run hermes resume”。已经在跑的回合会跑完,正在跑的任务不受影响;恢复用 hermes resume。
  • hermes codex-runtime migrate:非交互式地重新生成 ~/.codex/config.toml 里由 Hermes 托管的那段配置,支持 --dry-run 和 --json,适合写进脚本。
  • hermes chat 新增 --format stream-json:配合 -q 使用,每行输出一个 JSON 事件(system/text/tool_use/tool_result/result),方便程序直接消费进度,不用去解析终端画面。result 事件里除了 session_id、exit_code、text、tokens、duration_ms,回合失败时还有 error;如果这次运行落后于 gateway 的流并重新接上,会带 replay_gap: true,表示 text 事件提前停了(这里的 text 仍是完整回复)。另外 --source <tag> 可以给会话打来源标签,第三方集成用 tool 就不会出现在用户的会话列表里。
  • hermes memory 管理外部记忆插件:用来配置和管理外部记忆提供商插件。内置的有 retaindb、byterover;honcho、hindsight、supermemory、mem0、openviking、holographic 属于插件目录,需要先 hermes plugins install <名字>(如果 memory.provider 里已经写了某个提供商,hermes update 会自动帮你装)。同一时间只能启用一个外部提供商,内置记忆(MEMORY.md/USER.md)则始终生效。
  • hermes plugins update 批量更新:不带名字时,会列出所有有更新可打的已装插件(目录重新钉版本或 Git 拉取)以及被跳过的插件和原因,然后问 Update all N? [Y/n],逐个走单插件更新路径(每个插件自己的同意提示仍然生效)。一个失败不会中断其余,有失败则退出码为 1。没有终端时除非传 --yes 否则什么都不更新;--yes 下同意仍然 fail-closed(新能力不会自动授权)。
  • hermes gateway 的 -y/--yes 与 --detach:stop/restart 时如果 gateway 正在跑聊天回合、cron 任务或后台委派,会先列出来并问 y/N 再打断,--yes 跳过询问(--interrupt 是别名);没有终端可问(脚本、cron)时除非传 --yes 否则拒绝执行。restart 时若没装 gateway 服务,--detach 会在后台启动替代进程(和 hermes gateway ensure 一样),而不是占用当前终端;桌面端和更新器的恢复重启会传它。
  • hermes update 的频道选项:--set-channel CHANNEL 可以只持久化更新频道而不实际执行更新(源码安装可选 stable(已发布的版本)或 main(每个提交);打包应用频道固定,会拒绝改频道);--channel CHANNEL 则只对本次调用生效,同样接受 stable 或 main。官方仓库的源码检出默认走 stable,也就是最新的 vX.Y.Z GitHub 发布版本及其确切提交;fork 和镜像默认走 main。想跟着 main 上的每个提交走,就 hermes update --set-channel main,切回来用 hermes update --set-channel stable。在 main 频道上,如果检出在别的分支,更新前可能会先切到更新分支——想保留分支上的工作,更新前先提交。
  • hermes update 的恢复与回执:如果进程内重启阶段在导入刚拉下来的代码树时中断,受监管的 gateway profile 会通过一个干净的 Python 进程重试。只有 systemd(systemctl --user is-active)独立确认过的重启才算“已验证”;只是退出码为 0 的重启会被记为 relaunch_attempted,重启仍然算欠着(会留下一个 gateway_restart 后续项,更新本身仍然退出 0,因为代码已经就位)。手动启动的 gateway 和 serve/dashboard 运行时,没有重启授权就绝不会被强杀,会被记为带原因的跳过,并留在未完成更新报告里,附上确切的重启命令。每次运行还会在根 Hermes home 的 ~/.hermes/logs/update_receipts/ 写一份机器可读的回执(即使从 sticky profile 运行也一样):更新前的 fleet 计划、步骤、带原因的跳过、重启结果、后续项;latest.json 指向最新那份,更新进行中会显示 running。重启阶段之后,更新器会核对每个在线 gateway 实际运行的代码和更新后的检出是否一致,并打印一份按 profile 的版本矩阵。新代码就位后,某个 gateway 还跑着旧代码不会让更新失败:更新会打印一行带 ⚠ 的提示和确切的重启命令,退出 0,记一个 gateway_restart 后续项,并让重启保持欠着状态——之后每次 CLI 启动都会警告,下一次 hermes update 会重试。

命令行就像一把瑞士军刀,刚开始可能觉得笨重,用熟了就会发现它无所不能。下一期咱们聊聊更高级的玩法,敬请期待!

官方界面截图

官方 CLI 布局示意图

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › reference/cli-commands