Hermes Agent 入門 — 初心者のためのハンズオンガイド|2026-09 版
第 4 章

CLI の基本操作 — 対話・スラッシュコマンド・セッション

対話モードの画面の読み方から、セッション再開・バックグラウンド実行・Quick Commands まで

この章で分かること

これは何か

前章でセットアップを終えたら、日常的に触るのはほぼ全て 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 gatewayTelegram・Discord などのメッセージングゲートウェイを起動する(第 7 章で扱う)
hermes setup全設定を一度に済ませるセットアップウィザード(第 3 章で扱った)
hermes claw migrateOpenClaw から設定・メモリ・スキルなどを移行する(OpenClaw 利用者向け)
hermes update最新版に更新する
hermes doctor設定・依存関係・サービスの健全性を診断する

この章では、この早見表の中でも hermes(対話 CLI と TUI)そのものの使い方、つまり日々の対話・セッション管理・LLM を呼ばない小技に絞って掘り下げる。

いつ使うのか

Hermes を起動する方法は 1 つではない。代表的な状況は次の 4 つだ。

迷いやすいのは「一回だけ聞きたい」系の使い分けだ。同じように見えて、セッションが対話状態のまま残るか・即座に終了するかが異なる。

状況使うもの
ふつうに会話しながら作業したい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 章(サブエージェントと委譲)で扱う。

開始 終了操作 --continue / --resume /bg <prompt> 非同期実行 完了 新規セッション開始 対話・ツール実行 終了 (Ctrl+D) 再開して継続 /bg <prompt> 実行 独立セッション実行 完了パネルで復帰
図 4-1 セッションは終了後も --continue / --resume で復元でき、実行中に /bg で別セッションへ分岐できる。上段と下段は独立した流れで、下段は元のセッションを終了せずに進む。

ステータスバーとキーバインドを読む

対話中は入力欄の上に常設のステータスバーが表示され、リアルタイムに更新される。モデル名 │ トークン数/上限 │ コンテキストバー │ コスト │ 経過時間 の 4 項目はセッション中つねに表示され、条件が揃うと追加のバッジが差し込まれる。圧縮回数バッジ(一度でも自動圧縮が走ると出現)、実行中のバックグラウンドタスク数バッジ(/bg のタスクが 1 つでも走っていると出現)、YOLO 警告バッジ(--yolo 起動時や /yolo トグル時に危険コマンドの承認を自動通過している警告)がその代表だ。

常時表示される4項目 モデル名 コンテキスト使用率 コスト 経過時間 圧縮回数バッジ バックグラウンドバッジ YOLO警告バッジ
図 4-2 ステータスバーは 4 項目を常時表示し、条件を満たすと圧縮回数・バックグラウンド数・YOLO 警告のバッジが追加で差し込まれる。

コンテキストバーは色分けでしきい値を示す。数値と意味のセットで押さえておくと、いつ /compress(会話を要約してトークンを圧縮するコマンド)を打つべきか判断しやすい。

色としきい値意味
緑(使用率 50% 未満)余裕がある
黄(50〜80%)埋まってきている
橙(80〜95%)上限に近づいている
赤(95% 以上)オーバーフロー間近。/compress を検討する

キーバインドは対話 CLI と TUI で共通している。代表的なものを挙げる。

スラッシュコマンドと、LLM を呼ばない操作

/ を打つと補完候補が出る。スラッシュコマンドには CLI 組み込みのもの、インストール済みスキルが自動登録するもの(第 6 章で扱う)、そして自分で定義する Quick Commands の 3 種類が混在する。代表的な組み込みコマンドを挙げる。

ここで押さえておきたいのは、入力の種類によって LLM が呼ばれるかどうかが分かれるという点だ。ふつうのメッセージやスキル呼び出しはモデルを 1 ターン消費するが、行頭を ! にするシェルモードと、自分で定義する Quick Commands はモデルを一切呼ばずに即座に結果を返す。

通常入力 ! や登録コマンド 実行 実行 入力欄に入力 メッセージ・スキル呼び出し !シェルモード・Quick Commands LLMを呼ぶ(コスト発生) LLMを呼ばない(無料)
図 4-3 入力の種類によって、モデルを呼ぶ経路(コスト発生)と呼ばない経路(無料)に分かれる。

! シェルモード(例: !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 初回の対話とツール実行を観察する

  1. ターミナルで hermes を実行し、対話セッションを開始する。
  2. 起動直後のバナーで、モデル名・ターミナルバックエンド・作業ディレクトリ・利用可能なツール・インストール済みスキルが一覧表示されることを確認する。
  3. 何か短い指示(例えば「このディレクトリのファイル一覧を教えて」)を送り、応答が返ってくる間にステータスバーのトークン数とコストが増えていく様子を見る。
  4. 続けて !git status のように行頭に ! を付けて実行し、シェルモードとの違いを比較する。
hermes
> このディレクトリのファイル一覧を教えて
> !git status

通常のメッセージではステータスバーのトークン数・コストが増えるが、!git status は会話に入らず即座に結果だけが表示され、コスト・トークンともに変化しない。

ハンズオン 4-2 --continue と --resume でセッションに戻る

  1. ハンズオン 4-1 のセッションを Ctrl+D で終了する。
  2. ターミナルで次のコマンドを実行し、直近セッションを再開する。
hermes --continue

バナーと入力欄の間に「Previous Conversation」パネルが表示され、直前の会話の要約を確認した状態から続きを打てるようになれば成功。

  1. 特定のセッションに戻したいときは ID かタイトルを指定する。
hermes --resume <session_id>
hermes --resume latest

latest を指定すると --continue と同じく最新セッションを再開する。会話は SQLite(~/.hermes/state.db)に保存されており、ツール呼び出しや応答も含めて丸ごと復元される。

ハンズオン 4-3 /bg でバックグラウンド化する

バックグラウンドタスクも独立したエージェントセッションとして LLM を呼び出すため、フォアグラウンドの会話と同じように API コストが発生する。複数同時に走らせれば、その分だけコストも重なる。

  1. 対話セッション中に、時間のかかりそうな調査を /bg に投げる。
  2. Hermes は即座に確認メッセージとタスク ID を返し、フォアグラウンドの入力はすぐに使える状態へ戻る。
  3. その間、フォアグラウンドで別の作業や会話を続けられる。ステータスバーの ▶ N バッジで実行中のバックグラウンドタスク数を確認できる。
  4. バックグラウンドタスクが完了すると、結果がパネルとしてターミナルに表示される。
> /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 が先にチェックされるため優先される。名前を意図的に衝突させれば、スキルコマンドを上書きすることもできる。

まとめ

次章では、この CLI の裏側で会話をまたいで蓄積される永続メモリの仕組みと、セッション全文検索・/journey・書き込み承認まで踏み込む。

参考リンク