Hermes Agent CLI コマンドライン

CLI(コマンドラインインターフェース)は、Hermes Agentの最もネイティブな対話方法であり、機能が最も完全な使用入り口です。

この章では、CLIの3つの実行モード、セッション管理、スラッシュコマンド、TUIインターフェース、ショートカット操作、およびスクリプトでの使用テクニックについて体系的に紹介します。


3つの実行モード

Hermes CLIは、簡単なQAから対話型セッション、キーボードのみの操作まで、3つの実行モードを提供し、さまざまな使用シーンをカバーします。

モード1:対話型セッション(hermes chat)

これは最も一般的なモードです。継続的なマルチターン対話セッションを開始します。

対話型セッションを開始する(デフォルトのProfileを使用):

hermes chat

起動すると対話インターフェースに入り、プロンプトが変わります。メッセージを入力してEnterキーで送信すると、Agentが返信を開始します:

対話型セッションに入ると、複数のメッセージを連続して送信でき、Agentはそれまでの対話コンテキストを記憶します。

これは日常開発における最も自然な使用方法です。まるでSlackで同僚とチャットしているかのようです。

モード2:一回限りのクエリ(-q / --query)

対話型セッションに入る必要はなく、質問を直接渡して返信を得られます。スクリプト化やクイッククエリに適しています。

例

# 一回限りのクエリ:質問を送信し、返信を得たら終了
hermes chat -q "Pythonでクイックソート関数を書いてください"

# Profileと組み合わせて使用
coder chat -q "src/main.py のコードスタイルをレビューしてください"

# Shellスクリプトで使用
hermes chat -q "以下のログからエラー行を抽出してください" < error.log

-qモードの主な特徴:

  • 非対話型で、Agentが返信を完了するとすぐに終了します
  • 標準の終了コードを返すため、スクリプトで成功か失敗かを判断できます
  • パイプとリダイレクトをサポート

モード3:TUIターミナルインターフェース(hermes --tui)

TUI(Terminal User Interface)は、キーボードのみで操作する全画面ターミナルインターフェースを提供します。

例

# TUIモードを起動
hermes --tui

# TUIモードの場合:
# 上下矢印:対話履歴を閲覧
# Ctrl+N:新規セッション
# Ctrl+S:サイドバーを切り替え(ファイル、ツール履歴など)
# Ctrl+C:Agentの現在の操作を中断
# / で始まる:スラッシュコマンドを入力

TUIモードの独自の利点:

  • サイドバーで、対話、ファイル変更、ツール呼び出し履歴を同時に確認できます
  • キーボードのみの操作で、マウスに依存しません
  • 長時間のディープワーク(深い作業)シナリオに適しています

3つのモードの比較

モードコマンド対話方法適したシナリオ
対話型セッションhermes chatマルチターン対話。メッセージを入力して返信を待つ日常開発、複雑なタスク
一回限りのクエリhermes chat -q "..."単一の質問、返信後に終了スクリプト化、クイッククエリ
TUIhermes --tui全画面キーボード操作、マルチパネルディープワーク、ファイル操作が頻繁

セッション管理

セッション(Session)は、CLIにおける対話の基本単位です。各セッションは独立したコンテキスト、トークン数、セッションIDを持ちます。

セッションの継続と復元

例

# 最新のセッションを継続(中断後の復元)
hermes --continue
hermes chat --continue

# セッションタイトルで復元(/titleで名前を付けた場合)
hermes -c "認証モジュールをリファクタリング"

# セッションIDで正確に復元
hermes -r 20260305_091234_abc12345

セッションを復元すると、Agentはそれまでのツール呼び出し記録やLLM推論履歴を含む完全な対話コンテキストを保持します。

新規セッションの開始

例

# 対話型セッションでスラッシュコマンドを使用
/new

# または
/reset

# 効果は同じ:現在のセッションを終了し、新しいセッションを開始、
# Agentはシステムプロンプトと永続メモリを再読み込みします

新しいセッションでは以前の対話コンテキストは保持されませんが、永続メモリ(MEMORY.md と USER.md)は引き続き参照できます。

セッションタイトル管理

Hermesは最初の対話の後にセッションタイトルを自動生成します。手動で名前を付けることもできます:

例

# セッション内でタイトルを設定(後でタイトルで復元するため)
/title データベース移行案の議論

# 現在のセッション情報を表示(ID、タイトル、トークン使用量など)
/status

コンテキスト圧縮

対話履歴が長くなり、コンテキストウィンドウの上限に近づいた場合、手動で圧縮をトリガーできます:

例

# 対話コンテキストを手動で圧縮
/compress

# 圧縮後、古い内容は要約されてスペースが解放され、
# 新しいメッセージを送信し続けることができます。
# 圧縮されたセッションは自動リネージ(Auto-Lineage)を作成します:
#「データベース移行」→「データベース移行 #2」

自動圧縮は、Hermesがコンテキストが上限に近づいたときに自動的にトリガーします。/compressは、手動で早めにトリガーできるようにするだけです。両者の効果は同じです。


よく使うスラッシュコマンド

対話型セッションとTUIモードでは、/で始まる入力がスラッシュコマンドとして認識されます。

以下は、CLIで最もよく使われるコマンドを機能別にグループ化したものです。

セッション制御

コマンド機能
/new または /reset新規セッションを開始
/title <名前>現在のセッションタイトルを設定
/statusセッションID、タイトル、トークン使用量を表示
/usage今回のセッションのトークン消費詳細を表示
/compress対話コンテキストを手動で圧縮
/resume [タイトル]以前に名前を付けたセッションを復元

タスク制御

コマンド機能
/stopAgentが現在実行中のタスクを中断
/retryAgentに前回の返信を再生成させる
/undo前の対話を元に戻す(最後のQAペアを削除)
/background <タスク>バックグラウンドセッションでタスクを非同期実行

/undoは対話レベルの取り消しです。セッション履歴から最後のQAペアを削除し、Agentのコンテキストを前回の返信前の状態に戻します。これは/retry(元のQAを保持してAgentに再回答させる)とは異なります。

モデルと設定

コマンド機能
/model現在使用中のモデルを表示
/model <名前>指定したモデルに切り替え
/model list利用可能なすべてのモデルを一覧表示
/reload-mcpMCPサーバー設定を再読み込み

セキュリティと承認

命令機能
/yoloYOLOモードを有効にし、現在のセッションでの危険なコマンドを自動承認
/yolo再度入力するとYOLOモードを無効化
/approve現在承認待ちの操作を承認
/deny現在承認待ちの操作を拒否

記憶とスキル

コマンド機能
/memory現在の記憶内容を表示
/memory pending承認待ちの記憶書き込みを表示
/memory approve all承認待ちの記憶書き込みをすべて承認
/skillsインストール済みのすべてのスキルを一覧表示
/skills search <キーワード>ローカルおよびHubのスキルを検索
/skills install <id>スキルをインストール
/<skill-name> [タスク]指定したスキルを呼び出してタスクを実行
/learn <ソース>ドキュメントまたは説明から新しいスキルを生成

その他

コマンド機能
/checkpoint <ラベル>ファイルシステムのチェックポイントを作成
/rollback [番号]指定したチェックポイントを一覧表示または復元
/cron listスケジュールされたタスクの一覧を表示
/cron pause/resume <name>スケジュールされたタスクを一時停止または再開
/suggestionsAgentの自動化に関する提案を表示
/voice on/off/tts音声モードを制御
/updateHermesを最新バージョンに更新
/help利用可能なすべてのコマンドを表示

ショートカット操作とテクニック

キーボードショートカット

対話型セッションでは、以下のショートカットキーで操作効率が向上します:

ショートカットキー機能
Ctrl+CAgentの現在の応答またはツール実行を中断
Ctrl+D対話型セッションを終了
Ctrl+L画面をクリア
Ctrl+B(音声モード)押している間録音、離すと送信
上矢印前の入力を呼び出す
Tabファイルパスとスキル名を自動補完

複数行入力

改行を含むメッセージ(コードブロックなど)を送信する場合:

例

# 方法1:\n を使用して改行を表す
hermes chat -q "以下のコードをレビューしてください:\n\ndef hello():\n    print('world')"

# 方法2:Heredoc(Shell構文)を使用
hermes chat -q "$(cat << 'EOF'
このエラースタックを分析してください:

Traceback (most recent call last):
  File "
app.py", line 42, in <module>
    main()
  File "
app.py", line 38, in main
    result = process(data)
TypeError: 'NoneType' object is not iterable

修正案を提示してください。
EOF
)"

パイプとリダイレクト

-qモードは標準のUnixパイプをネイティブにサポートします:

例

# ファイルの内容をコンテキストとしてAgentに送信
cat error.log | hermes chat -q "これらのエラーログを分析して根本原因を特定してください"

# Agentの応答をファイルに保存
hermes chat -q "プロジェクトのREADME.mdを生成してください" > README.md

# パイプラインでAgentをフィルターとして使用
cat data.csv | hermes chat -q "すべてのメールアドレスを1行に1つずつ抽出してください" > emails.txt

Profileコマンドエイリアスとの組み合わせ

各Profileは専用のコマンドエイリアスを自動生成するため、-pフラグは不要です:

例

# Profileエイリアスを直接使用すると、簡潔で自然
coder chat -q "この関数をリファクタリングしてください"
researcher chat -q "最新のTransformer関連論文を検索してください"
admin gateway status

# 次と同等
hermes -p coder chat -q "この関数をリファクタリングしてください"
hermes -p researcher chat -q "最新のTransformer関連論文を検索してください"
hermes -p admin gateway status

承認とセキュリティ制御

承認モード

CLIで危険なコマンドを実行すると、Hermesは承認プロンプトを表示します:

Agent 请求执行: rm -rf /tmp/build/*
原因: 清理构建缓存
[approve/deny]: _

セッション中にリアルタイムで承認または拒否を決定できます。

承認モードはconfig.yamlで設定します:

例

# ファイルパス:~/.hermes/config.yaml
approvals
:
  mode
: manual        # manual(デフォルト、危険なコマンドごとに承認が必要)
                      # smart(智能的に判断し、リスクが低いものは自動承認)
                      # off(承認を無効化、推奨しません)
  timeout
: 60         # 承認待ちの秒数。タイムアウトすると自動拒否

YOLOモード

Agentが実行しようとしていることが安全だと確信できる場合(例えば自分がよく知るプロジェクトでの操作)、一時的に承認をスキップできます:

例

# 最初に /yolo と入力:YOLOモードを有効化
# 現在のセッションではすべてのコマンドが自動承認されます
/yolo

# Agentが操作を実行し始め、承認プロンプトは表示されなくなります...

# 再度 /yolo と入力:YOLOモードを無効化し、承認を再開
/yolo

YOLOモードは現在のセッションでのみ有効です。新しいセッションではconfig.yamlで設定された承認モードに自動的に戻ります。これにより、一時的な緩和が恒久的な脆弱性にならないことが保証されます。


スクリプトでの使用

ShellスクリプトでHermesを使用する

-qモードの終了コードと標準出力により、HermesをShellスクリプトにシームレスに統合できます:

例

#!/bin/bash
# ファイルパス:scripts/auto-review.sh
# 自動コードレビュースクリプト——Gitで変更されたファイルを1つずつレビュー

# 変更されたすべてのPythonファイルを取得
changed_files=$(git diff --name-only HEAD~1 | grep '\.py$')

for file in $changed_files; do
    echo "=== レビュー:$file ==="

    # Hermesを使用してコードをレビューし、結果をターミナルに直接出力
    hermes chat -q "以下のPythonファイルのコードスタイルと潜在的な問題をレビューしてください:
$(cat "$file")

見つかった問題と提案をリスト形式で提示してください。"
2>/dev/null

    # 終了コードを確認
    if [ $? -ne 0 ]; then
        echo "[警告]$fileレビュー中にエラーが発生しました"
    fi

    echo ""
done

Git Hooksとの組み合わせ

以下はGit pre-commit hookの例です——コミット前にAgentにコードをチェックさせます:

例

#!/bin/bash
# ファイルパス:.git/hooks/pre-commit
# Git pre-commit hook:コミット前にAgentがコードをチェック

# ステージングエリアで変更されたファイルのリストを取得
staged_files=$(git diff --cached --name-only)

if [ -z "$staged_files" ]; then
    exit 0
fi

echo "Hermes Agentがコード変更をチェックしています..."

# Agentにステージングされた変更をレビューさせる
result=$(hermes chat -q "以下のGitステージングエリアのコード変更をレビューし、\
重大な問題(セキュリティ脆弱性、論理エラー、破壊的な変更)のみ報告してください。\
重大な問題がなければ、PASSと返信してください。\
\
変更ファイル:\n$staged_files\n\
詳細なdiff:\n$(git diff --cached)"
2>/dev/null)

echo "$result"

# Agentが重大な問題を発見した場合、コミットをブロック
if echo "$result" | grep -q "PASS"; then
    echo "レビュー合格"
    exit 0
else
    echo ""
    echo "Agentが注意すべき問題を発見しました。"
    echo "問題がないことを確認した場合は、git commit --no-verify を使用してこのチェックをスキップしてください。"
    exit 1
fi

定時実行

システムのcronまたはHermes組み込みのCronシステムと組み合わせて、CLIタスクを定期的に実行できます——ただし、Hermes組み込みのCronを使用することをお勧めします(によりhermes cron create)。結果をメッセージプラットフォームに直接配信できるためです。

その他の拡張