命令行入门——像程序员一样使用 Hermes
Hermes Agent 官方教程第五篇:CLI 命令行接口。常用命令一网打尽。
命令行入门——像程序员一样使用 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”、原因以及“runhermes 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.ZGitHub 发布版本及其确切提交;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会重试。
命令行就像一把瑞士军刀,刚开始可能觉得笨重,用熟了就会发现它无所不能。下一期咱们聊聊更高级的玩法,敬请期待!
官方界面截图
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › reference/cli-commands