hermes(対話 CLI)とhermes --tui(TUI)という 2 つの画面の違いと切り替え方-q・--query-file・--model・--continue・--resume・-s・-wなど起動オプションの使い分け- ステータスバーとキーバインドの読み方
- スラッシュコマンドと、LLM を呼ばない
/bg・Quick Commands の使い分け hermes doctor/hermes prompt-sizeで自分のセットアップを診断する方法
これは何か
前章でセットアップを終えたら、日常的に触るのはほぼ全て CLI からになる。入り口はシンプルで、ターミナルで hermes と打つだけで対話セッションが始まる。この裏側では hermes_cli/subcommands/ ディレクトリに 44 個のサブコマンドファイルが存在し(2026-09 時点、v0.21.0 のリポジトリ実測)、プロファイル管理からゲートウェイ運用まで幅広い操作をカバーしている。とはいえ全部を覚える必要はなく、日常的に使うのはごく一部だ。README の「Getting Started」節が挙げる代表的な 10 個をまず早見表として押さえておく。
| コマンド | 何をするか |
|---|---|
hermes | 対話セッションを開始する(既定の入り口。内部的には hermes chat と同じ) |
hermes model | 既定のプロバイダとモデルを選び直す |
hermes tools | 有効にするツール(ツールセット)をプラットフォームごとに設定する |
hermes config set / hermes config get | 設定値を 1 項目ずつ書き込む・読み出す |
hermes gateway | Telegram・Discord などのメッセージングゲートウェイを起動する(第 7 章で扱う) |
hermes setup | 全設定を一度に済ませるセットアップウィザード(第 3 章で扱った) |
hermes claw migrate | OpenClaw から設定・メモリ・スキルなどを移行する(OpenClaw 利用者向け) |
hermes update | 最新版に更新する |
hermes doctor | 設定・依存関係・サービスの健全性を診断する |
この章では、この早見表の中でも hermes(対話 CLI と TUI)そのものの使い方、つまり日々の対話・セッション管理・LLM を呼ばない小技に絞って掘り下げる。
いつ使うのか
Hermes を起動する方法は 1 つではない。代表的な状況は次の 4 つだ。
- ふだんの開発作業(コードを書きながら質問したり、ツールを呼ばせたりする)には対話モードか TUI を使う。
- シェルスクリプトや cron ジョブから 1 回だけ聞いて結果のテキストだけ欲しいときは
-q/--query-file/hermes -zのいずれかを使う。 - 大きめの調査やログ解析を、今の会話を止めずに並行してやらせたいときは
/bgを使う。 - 同じリポジトリで複数のエージェントを同時に走らせたいときは
-wの隔離ワークツリーを使う。
迷いやすいのは「一回だけ聞きたい」系の使い分けだ。同じように見えて、セッションが対話状態のまま残るか・即座に終了するかが異なる。
| 状況 | 使うもの |
|---|---|
| ふつうに会話しながら作業したい | hermes(対話モード)または hermes --tui |
| スクリプト・cron から実行し、標準出力に応答テキストだけ欲しい | hermes -z "..."(バナーなし・応答テキストのみ) |
| 質問を投げつつ、その後も対話を続けたい | hermes chat -q "..." |
| 質問を投げて、答えが出たらそこで終了してほしい | hermes chat --oneshot -q "..." |
| 今の会話を中断せず、別の調査も並行させたい | セッション内で /bg <prompt> |
| 別ブランチ・別ディレクトリで並列にエージェントを走らせたい | hermes -w(隔離 git worktree) |
2 つの画面: 対話 CLI と TUI
Hermes には端末インターフェースが 2 つある。従来からある prompt_toolkit ベースの CLI と、モーダルオーバーレイやマウス選択に対応した新しい TUI(Terminal User Interface、テキストベースの操作画面)だ。どちらも同じ Python ランタイムの上で動き、セッション・スラッシュコマンド・Quick Commands・パーソナリティ設定を完全に共有する。CLI で作った習慣はそのまま TUI でも通用する。
切り替え方法は 3 通りある。hermes --tui でその回だけ TUI を起動し、逆に既定が TUI になっていても hermes --cli で従来の CLI に戻せる。環境変数 HERMES_TUI=1 を立てておけば hermes だけで TUI が起動するようになり、~/.hermes/config.yaml に display.interface: tui を書けば恒久的な既定にできる(明示的なフラグは常にこの既定より優先される)。
TUI を使うには Node.js 20 以上と TTY(対話端末)が必要で、これは hermes doctor が確認してくれる。初回起動時だけ TUI 用の Node 依存関係を ui-tui/node_modules に一度インストールするため数秒待たされるが、以降の起動は速い。TUI 固有の追加機能としては、モーダル型のモデルピッカー・セッションピッカー、Ctrl+X によるライブセッション切り替え、マウスドラッグでの範囲選択がある。日々どちらを使うかは好み次第だが、公式ドキュメントは TUI を「推奨される対話手段」と位置づけている。
起動オプションを使い分ける
コマンドラインから渡すオプションで、セッションの始め方・続け方が変わる。よく使うものをまとめる。
hermes # 対話セッションを開始(既定)
hermes chat -q "Hello" # プロンプトを最初のターンとして送りつつ対話を継続
hermes chat --oneshot -q "Hello" # 応答が出たら終了する一発回答モード
hermes chat --query-file prompt.txt # ファイル/stdin からプロンプトを読む(シェル解釈なし)
hermes chat --model "anthropic/claude-sonnet-4"
hermes -s hermes-agent-dev,github-auth # 起動時にスキルをプリロード
hermes --continue # 直近セッションを再開(短縮形 -c)
hermes --resume <session_id> # 特定セッションを ID で再開(短縮形 -r)
hermes --resume latest # 直近セッションを再開(--continue と同義)
hermes -w # 隔離 git worktree で対話モード(並列エージェント実行用)
hermes -w -z "Fix issue #123" # 隔離 worktree 内で一発回答
--query-file はファイルまたは標準入力(-)からプロンプトを読み、内容を一切シェル解釈しない。引用符やバッククォートを含む長文・機械生成のプロンプトを渡すときはこちらを使う。-s(--skills)は起動時に使いたいスキルを先読みしておく指定で、対話モードでも一発回答モードでも同じ書式が効く。
セッションの続け方は 2 系統ある。--continue(-c)は直近セッションをそのまま再開し、--resume(-r)は ID かタイトルを指定して特定のセッションに戻る。どちらで再開しても、バナーと入力欄の間に「Previous Conversation」パネルが表示され、直近の会話の要約が読める状態から続きを打てる。セッションの一覧・全文検索・学習タイムライン(/journey)といった掘り下げは 第 5 章(メモリ)で扱う。
-w(--worktree)は、git worktree(同じリポジトリの内容を、ブランチごとに別ディレクトリとしてチェックアウトできる git 標準機能)を使って現在の作業ディレクトリを汚さずに複数のエージェントを並列で走らせるための機能で、<repo>/.worktrees/ 配下に使い捨てのワークツリーを作る。放置すると増え続けるため、hermes worktree list で棚卸しし、hermes worktree prune [--dry-run] で未コミット変更や未 push のコミットを壊さずに回収できる。同じ仕組みは、複数のサブエージェントを同時に走らせる場面にも使われており、その詳細は 第 9 章(サブエージェントと委譲)で扱う。
ステータスバーとキーバインドを読む
対話中は入力欄の上に常設のステータスバーが表示され、リアルタイムに更新される。モデル名 │ トークン数/上限 │ コンテキストバー │ コスト │ 経過時間 の 4 項目はセッション中つねに表示され、条件が揃うと追加のバッジが差し込まれる。圧縮回数バッジ(一度でも自動圧縮が走ると出現)、実行中のバックグラウンドタスク数バッジ(/bg のタスクが 1 つでも走っていると出現)、YOLO 警告バッジ(--yolo 起動時や /yolo トグル時に危険コマンドの承認を自動通過している警告)がその代表だ。
コンテキストバーは色分けでしきい値を示す。数値と意味のセットで押さえておくと、いつ /compress(会話を要約してトークンを圧縮するコマンド)を打つべきか判断しやすい。
| 色としきい値 | 意味 |
|---|---|
| 緑(使用率 50% 未満) | 余裕がある |
| 黄(50〜80%) | 埋まってきている |
| 橙(80〜95%) | 上限に近づいている |
| 赤(95% 以上) | オーバーフロー間近。/compress を検討する |
キーバインドは対話 CLI と TUI で共通している。代表的なものを挙げる。
- Enter — メッセージを送信する
- Alt+Enter / Ctrl+J / Shift+Enter — 改行してマルチライン入力を続ける
- Ctrl+G — 入力中のバッファを
$EDITORで開く。長文プロンプトの編集に向く - Ctrl+S — 入力中の下書きを退避する(スタック方式。空の入力欄で再度押すと復元)
- Ctrl+C — エージェントを中断する(2 秒以内に 2 回押すと強制終了)
- Ctrl+D — セッションを終了する
- Ctrl+Z — バックグラウンドへサスペンドする(Unix のみ。シェルで
fgと打てば復帰) - Tab — オートサジェストの受け入れ、またはスラッシュコマンドの補完
スラッシュコマンドと、LLM を呼ばない操作
/ を打つと補完候補が出る。スラッシュコマンドには CLI 組み込みのもの、インストール済みスキルが自動登録するもの(第 6 章で扱う)、そして自分で定義する Quick Commands の 3 種類が混在する。代表的な組み込みコマンドを挙げる。
/help— コマンド一覧を表示する/model— 現在のモデルを表示・変更する/tools— 現在有効なツールを一覧する/skills browse— Skills Hub と公式オプションスキルを閲覧する/bg <prompt>— 別のバックグラウンドセッションでプロンプトを実行する/title "..."— 現在のセッションに名前を付ける/status— モデル・プロファイル・トークン数・経過時間とセッション概況をローカル計算だけで表示する(LLM 呼び出しなし)/context [all]— コンテキスト使用量の内訳をカテゴリ別に表示する/sessions— セッションピッカーを開く。一覧・検索の掘り下げは第 5 章で扱う
ここで押さえておきたいのは、入力の種類によって LLM が呼ばれるかどうかが分かれるという点だ。ふつうのメッセージやスキル呼び出しはモデルを 1 ターン消費するが、行頭を ! にするシェルモードと、自分で定義する Quick Commands はモデルを一切呼ばずに即座に結果を返す。
! シェルモード(例: !git status)は会話履歴に一切残らず、プロンプトキャッシュ(同じ内容の入力を使い回すことで API 呼び出しのコストと待ち時間を下げる仕組み)にも影響しない。ただし承認の仕組みまでは省略されないので、rm -rf のような危険コマンドはエージェントの terminal ツールと同じ承認プロンプトを通る。あくまで API 呼び出しとレイテンシを省くショートカットであり、セキュリティのバイパスではない。CLI 専用の機能で、ゲートウェイや cron からの実行では無視される。
Quick Commands は ~/.hermes/config.yaml に自分で定義する、モデルを呼ばずに即座に実行されるコマンドだ。
# ~/.hermes/config.yaml
quick_commands:
status:
type: exec
command: systemctl status hermes-agent
gpu:
type: exec
command: nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader
restart:
type: alias
target: /gateway restart
定義すれば CLI でもメッセージングプラットフォーム(Telegram・Discord など)でも /status・/gpu・/restart のようにそのまま呼べる。type: exec はシェルコマンドをホスト上でそのまま実行して出力を返し、type: alias は別のスラッシュコマンドへ書き換える。実行には 30 秒のタイムアウトがあり、名前が衝突した場合はスキルコマンドより Quick Commands が優先して解決される。
困ったときの入口: hermes doctor / hermes prompt-size
hermes doctor は設定・依存関係・サービスの健全性をまとめて診断するコマンドで、TUI に必要な Node.js のバージョン確認から、ブラウザ自動化用の Chromium の未インストール検出まで幅広くカバーする。問題が見つかったら hermes doctor --fix で自動修復を試みられる。トラブルに遭ったら、まずこれを実行するのが定石だ。
hermes prompt-size は、毎回の API 呼び出しで送られる固定プロンプト予算(システムプロンプト本体・スキル一覧・メモリ・ツールスキーマ)をブロックごとに可視化するオフラインコマンドだ。API 呼び出しも認証情報も不要で、有効なスキルやツールが多いほどこの固定コストが膨らむ様子を数値で確認できる。プロンプトが重いと感じたら、hermes tools で不要なツールセットを外す、または hermes skills で使わないスキルを無効化することで下げられる。
ハンズオン 4-1 初回の対話とツール実行を観察する
- ターミナルで
hermesを実行し、対話セッションを開始する。 - 起動直後のバナーで、モデル名・ターミナルバックエンド・作業ディレクトリ・利用可能なツール・インストール済みスキルが一覧表示されることを確認する。
- 何か短い指示(例えば「このディレクトリのファイル一覧を教えて」)を送り、応答が返ってくる間にステータスバーのトークン数とコストが増えていく様子を見る。
- 続けて
!git statusのように行頭に!を付けて実行し、シェルモードとの違いを比較する。
hermes
> このディレクトリのファイル一覧を教えて
> !git status
通常のメッセージではステータスバーのトークン数・コストが増えるが、!git status は会話に入らず即座に結果だけが表示され、コスト・トークンともに変化しない。
ハンズオン 4-2 --continue と --resume でセッションに戻る
- ハンズオン 4-1 のセッションを Ctrl+D で終了する。
- ターミナルで次のコマンドを実行し、直近セッションを再開する。
hermes --continue
バナーと入力欄の間に「Previous Conversation」パネルが表示され、直前の会話の要約を確認した状態から続きを打てるようになれば成功。
- 特定のセッションに戻したいときは ID かタイトルを指定する。
hermes --resume <session_id>
hermes --resume latest
latest を指定すると --continue と同じく最新セッションを再開する。会話は SQLite(~/.hermes/state.db)に保存されており、ツール呼び出しや応答も含めて丸ごと復元される。
ハンズオン 4-3 /bg でバックグラウンド化する
バックグラウンドタスクも独立したエージェントセッションとして LLM を呼び出すため、フォアグラウンドの会話と同じように API コストが発生する。複数同時に走らせれば、その分だけコストも重なる。
- 対話セッション中に、時間のかかりそうな調査を
/bgに投げる。 - Hermes は即座に確認メッセージとタスク ID を返し、フォアグラウンドの入力はすぐに使える状態へ戻る。
- その間、フォアグラウンドで別の作業や会話を続けられる。ステータスバーの
▶ Nバッジで実行中のバックグラウンドタスク数を確認できる。 - バックグラウンドタスクが完了すると、結果がパネルとしてターミナルに表示される。
> /bg Analyze the logs in /var/log and summarize any errors from today
🔄 Background task #1 started: "Analyze the logs in /var/log and summarize..."
Task ID: bg_143022_a1b2c3
この結果は今の会話履歴には追加されない。独自のタスク ID を持つ、完全に独立したセッションとして扱われる点に注意する。
つまずきポイント
-q はもう「聞いて終わり」ではない。 以前の Hermes では hermes chat -q "..." は一発回答して終了する動作だったが、現在はプロンプトを最初のターンとして送りつつ対話セッションを開いたままにする。TTY を使わない実行や --oneshot を明示した場合だけ、旧来どおり応答後に終了する。スクリプトから確実に一発回答だけを得たいなら --oneshot か hermes -z を使う。
! シェルモードは承認をバイパスしない。 モデルを呼ばずに即座に実行されるからといって安全確認まで省略されるわけではない。危険なコマンドはエージェントの terminal ツールと同じ承認プロンプトが挟まる。あくまでコストとレイテンシのショートカットだと理解しておく。
/bg の結果は会話履歴に残らない。 バックグラウンドセッションは現在の会話とは切り離された独立したセッションとして走る。完了パネルを見逃したり閉じたりすると、あとから同じ会話をスクロールして見返すことはできない。タスク ID を控えておくか、結果はその場で確認する。
-w で作ったワークツリーは放置すると溜まる。 起動時に保守的な自動整理は走るが、保持されたワークツリーやマージ済みのローカルブランチは busy なマシンでは蓄積し続ける。.worktrees/ が 10 個または 5GB を超えると起動時に通知が出るので、そうなったら hermes worktree prune --dry-run で計画を確認してから実行する。
理解度チェック
Q1. hermes(対話 CLI)と hermes --tui(TUI)の関係を正しく説明しているのはどれですか?
同じ Python ランタイムの上で動く 2 つのフロントエンドで、セッション・スラッシュコマンド・Quick Commands・設定を完全に共有する。見た目と操作性が異なるだけで、別のエージェントというわけではない。
Q2. hermes chat -q "調べて" を実行すると何が起きますか?
プロンプトが最初のターンとして送られ、応答が返った後もセッションは対話状態のまま残る。応答後に自動で終了させたい場合は --oneshot を付けるか、代わりに hermes -z を使う。
Q3. ステータスバーの圧縮回数バッジやバックグラウンドタスク数バッジはいつ表示されますか?
モデル名・トークン数・コスト・経過時間のように常時表示されるのではなく、圧縮が一度でも走った後、またはバックグラウンドタスクが実際に実行中の場合にだけ条件付きで表示される。
Q4. /bg で開始したタスクの結果はどこに現れ、会話履歴に残りますか?
完了時にターミナルへパネルとして表示される。会話履歴には追加されず、独自のタスク ID を持つ完全に独立したセッションとして扱われる。
Q5. Quick Commands とインストール済みスキルのスラッシュコマンドが同じ名前を持つとき、どちらが優先されますか?
Quick Commands が先にチェックされるため優先される。名前を意図的に衝突させれば、スキルコマンドを上書きすることもできる。
まとめ
- Hermes には対話 CLI と TUI の 2 つの画面があり、セッション・スラッシュコマンド・設定を共有する。切り替えはフラグ・環境変数・config.yaml のいずれかで行う。
- 起動オプションは目的で選ぶ。会話を続けたいなら
-q、確実に一発回答が欲しいなら--oneshotかhermes -z、並列実行なら-w。 - ステータスバーは常時 4 項目+条件付きバッジで状態を示し、キーバインドは CLI と TUI で共通している。
!シェルモードと Quick Commands は LLM を呼ばずに即座に結果を返す。承認は省略されない点に注意する。/bgは今の会話を止めずに別の調査を走らせる手段だが、独立したセッションとしてコストも履歴も別扱いになる。- 困ったら
hermes doctor、プロンプトが重いと感じたらhermes prompt-sizeをまず実行する。
次章では、この CLI の裏側で会話をまたいで蓄積される永続メモリの仕組みと、セッション全文検索・/journey・書き込み承認まで踏み込む。