1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Hermes Agentのmodel選択、非TTYではconfig setが必須だった

1
Posted at

はじめに

Nous ResearchのOSSエージェント「Hermes Agent」が2026年7月1日に v0.18.0(通称 The Judgment Release)を公開しました1。目玉は Mixture-of-Agents(MoA)が「選択可能なモデルの1つ」に格上げされたこと2と、完了の証拠を検証してから終了する /goal の completion contracts です1

筆者は本記事のために、実際にHermes Agentを新規インストールし、CLIから各コマンドを1つずつ動かしてみました。その過程で、公式ドキュメントには明記されていない挙動を2つ見つけました。1つは hermes model(モデル選択コマンド)が非TTY環境(パイプ・サブプロセス経由の自動実行)では一切使えないこと、もう1つはMoAの既定プリセットが実は3社混成モデルだったことです。この記事では、その実測結果と自動化パイプラインに組み込む際の回避策をまとめます。

この記事で分かること

  • Hermes Agent v0.18のインストール手順と実際に確認できたバージョン
  • MoAの既定プリセットの中身(実測)
  • hermes model が非対話環境で失敗する実例と、非対話で使える代替コマンド
  • 新規インストール直後でも config が「更新可能」と表示される理由

前提環境

  • OS: Linux(クラウド上のheadlessセッション、TTYなし)
  • Hermes Agent: v0.18.2(2026.7.7.2、公式インストーラーで新規導入)
  • Python: 3.11.15(インストーラーが uv 経由で自動セットアップ)

TL;DR

  • hermes model は対話端末必須のコマンドで、パイプ・サブプロセスから呼ぶと requires an interactive terminal で即座に失敗する
  • 非対話でモデルを切り替えたい場合は hermes config set model.default <provider>/<model> を使えば1コマンドで反映できる
  • MoAの既定プリセット default は Reference models が openai-codex:gpt-5.5openrouter:deepseek/deepseek-v4-pro、Aggregatorが openrouter:anthropic/claude-opus-4.8 という3社混成構成だった(hermes moa list で確認・非対話でも動作する)
  • --skip-setup で新規インストールすると hermes doctor が「Config version: 0 → 33」と表示するが、これはsetup wizardを省略したため config.yaml がテンプレートのままなだけで、機能自体に支障はない

背景・課題

Hermes AgentはCLI・TUI・デスクトップアプリ・メッセージングゲートウェイなど複数のインターフェースを持つエージェントで、公式リリースノートによれば v0.18.0 では12日間で P0 3件・P1 493件、合計496件の最優先課題と196件のPRを解消したとされています1。目玉のMoAは「これまでは切り替えるモード」だったものが「モデルピッカーに並ぶ選択肢の1つ」になり、my-council のような名前付きプリセットとして他のモデルと同列に扱えるようになりました2

このプロジェクトはClaude Codeを使ったスケジュール実行の完全自動パイプラインで運用しているため、「Hermes AgentをCI/cronのような完全headless環境に組み込めるか」を実際に検証する価値があると考え、インストールから主要コマンドまで一通り動かしてみました。

やったこと

ステップ1: 公式インストーラーで導入

curl -fsSL https://hermes-agent.nousresearch.com/install.sh -o install.sh
bash install.sh --skip-setup

インストーラーは uv でPython 3.11の仮想環境を作成し、Node.js・ripgrep・ffmpeg 等の依存を自動処理します。インストール完了時に、bundle済みスキルが72個 ~/.hermes/skills/ に同期されました。

Done: 72 new, 0 updated, 0 unchanged. 72 total bundled.
✓ Skills synced to ~/.hermes/skills/
→ Skipping setup wizard (--skip-setup)

ステップ2: バージョンと状態を確認

hermes --version
Hermes Agent v0.18.2 (2026.7.7.2) · upstream f82c7139
Install directory: /usr/local/lib/hermes-agent
Install method: git
Python: 3.11.15
OpenAI SDK: 2.24.0
Up to date

リリース直後のv0.18.0からパッチが1つ進んだv0.18.2が最新でした。

ステップ3: MoAの既定プリセットを確認する

ドキュメントには「MoAはモデルピッカーで選べる」とは書かれていますが、既定プリセットの具体的な中身(どのモデルの組み合わせか)は公式ページには載っていませんでした。hermes moa list で確認します。

hermes moa list
Mixture of Agents presets
Default: default
Active in config: (off)

* default
  Reference models:
    1. openai-codex:gpt-5.5
    2. openrouter:deepseek/deepseek-v4-pro
  Aggregator: openrouter:anthropic/claude-opus-4.8

既定の default プリセットは、OpenAI Codex(GPT-5.5)と DeepSeek V4 Pro を参照モデルにし、Claude Opus 4.8 が集約役を担う3社混成の構成でした。このコマンドはパイプ経由でも問題なく実行できます。

ステップ4: hermes model を非対話で叩いてみる

自動化パイプラインからモデルを切り替えたいケースを想定し、hermes model を非対話(このセッション自体が非TTY)で実行しました。

hermes model
Error: 'hermes model' requires an interactive terminal.
It cannot be run through a pipe or non-interactive subprocess.
Run it directly in your terminal instead.

即座に拒否されました。--help を見ても、対話プロンプト前提のオプション(--refresh や認証URL系)しか無く、非対話実行を許可するフラグは用意されていません。

ステップ5: 非対話の代替コマンドを探す

モデル選択を諦めずに hermes config set を試したところ、こちらは問題なく完了しました。

hermes config set model.default anthropic/claude-opus-4.8
✓ Set model.default = anthropic/claude-opus-4.8 in /root/.hermes/config.yaml

config.yaml を直接確認すると、たしかに model.default の値が書き換わっていました。hermes config set <key> <value> はキーを直接指定する非対話コマンドのため、CI・cronから呼び出すならこちらが正解でした。

ハマりポイント: 新規インストール直後でも「config version 0 → 33」

hermes doctorhermes config check を実行すると、インストール直後にもかかわらず以下の警告が出ました。

hermes config check
📋 Configuration Status

  Config version: 0 → 33 (update available)

「新規インストールしたばかりなのに、なぜ33バージョンも遅れているのか」と一瞬混乱しましたが、config.yaml の中身を見ると理由が分かりました。

# Hermes Agent CLI Configuration
# Copy this file to cli-config.yaml and customize as needed.
# This file configures the CLI behavior. Environment variables in .env take precedence.

--skip-setup でセットアップウィザードを省略すると、config.yaml は「コピーして使うテンプレートファイル」のまま配置され、バージョン管理された実体設定(cli-config.yaml)は生成されません。そのため hermes doctor はテンプレートの初期バージョン(v0)のまま「最新のv33との差分あり」と警告を出し続けます。機能自体は動作するため実害はありませんが、--skip-setup で自動化する場合はこの警告が常に出る前提で運用する必要があります。

--skip-setup はAPIキー入力などの対話ウィザードを省くためのフラグですが、副作用として config version の追跡も止まります。CI/cronで使う場合は「Config version outdated」の警告が消えないことを前提にヘルスチェックを設計してください。

著者視点の発見ポイント

MoAが「モデルピッカーの選択肢の1つになった」というリリースノートの説明だけでは、実際にどのベンダーのモデルが動いているのかが分かりませんでした。実際に hermes moa list を叩いて初めて、既定プリセットが OpenAI・DeepSeek・Anthropic の3社混成という具体的な構成であることを確認できました。また、「モデルを選ぶコマンド」と聞くと hermes model を使うのが自然に思えますが、実際に非対話環境で試すと即座に弾かれ、代わりに hermes config set が非対話での唯一の設定変更手段だと分かったのは、実際に手を動かさなければ気づけなかった発見でした。CLIツールの「対話コマンド」と「設定ファイル直接操作コマンド」が別系統で用意されているケースは他のエージェントCLIでも見られるパターンで、自動化を検討する際は両方の存在を確認する価値があります。

まとめ

  • Hermes Agent v0.18.2は公式インストーラー1本でPython環境ごとセットアップでき、72個のスキルが自動同期される
  • MoAの既定プリセットはOpenAI Codex(GPT-5.5)+ DeepSeek V4 Pro を参照、Claude Opus 4.8が集約という3社混成構成だった(hermes moa list で確認可能・非対話OK)
  • hermes model は対話端末必須で、CI/cronのような非対話実行からは使えない
  • 非対話でモデルを切り替えるなら hermes config set model.default <provider>/<model> を使う
  • --skip-setup でインストールすると hermes doctor / hermes config check が「Config version 0 → 33」と警告し続けるが、これはテンプレートconfigのままという意味で機能への実害はない

参考リンク

  1. Hermes Agent v0.18.0 Release Notes — 「The Judgment Release」、P0 3件・P1 493件(計496件)の課題と196件のPRを12日間で解消(2026年7月1日公開) 2 3

  2. Mixture of Agents(公式ドキュメント) — MoAが名前付きプリセットとしてモデルピッカーに統合されたことの説明 2

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?