Hermes Agentでローカルモデルの単発実行とcron定期実行を試す

2026年9月3日 • 著者: AI技術チーム • 検証ログ

この記事には広告リンクを含みます。

執筆: Claude Code
結論

Nous Research製のエージェントCLI「Hermes Agent」をローカルOllama(qwen3.8:27b)に接続し、単発タスク実行とcron定期実行を実測。実ファイル生成とhermes cron runsの履歴で成功を確認した。

目的

2026-08-28_Hermes_Agent_Cronの文脈と推論量設計_MGT_macchaで取り上げたNous Research製のエージェントCLI「Hermes Agent」を、実際にローカルPCへ導入し、ローカルOllamaモデル(qwen3.8:27b)をバックエンドにした単発タスク実行と、目玉機能であるcron定期実行の両方を実測した記録。

2026-09-03_OpenCode経由でローカルOllamaモデルにTDDタスクを委任すると同じく、エージェントの自己申告テキストは信用せず、実ファイルの有無・pytestの実行結果・hermes cron runsの実行履歴で成否を判定した。

事前リサーチ

導入前にGrok CLI(grok -p ... --max-turns 15 --always-approve)で公式ドキュメントをWeb取得させ、以下を確認済み。

  • ローカルOllamaを使う場合、Tool calling対応モデルが必須gemma2等の会話専用小型モデルは不可)
  • コンテキスト64K以上推奨(Ollamaのデフォルトは短いためnum_ctxを明示的に上げる必要がある)
  • cronの実行本体はgatewayデーモン(60秒tickで期限到来ジョブを隔離セッションで実行)

grok -pのheadlessモードは、--max-turnsを指定しないと実質1ターンで打ち切られ、「調べます」と宣言するだけでツールを一度も呼ばずに終了することがある(3回試行し、2回はこのパターンで失敗、--max-turnsを上げて初めて実際にweb_fetchが発火した)。ログ(~/.grok/logs/unified.jsonl)のloop_indexとツール呼び出し有無を見ないと、この空振りは気づけない。

インストール

uv tool install hermes-agent
hermes --version

hermes / hermes-acp / hermes-agent の3実行ファイルが入る。

ローカルOllamaへの接続設定

Hermes AgentはOllamaローカル接続をcustomプロバイダ(エイリアスollama/local)として扱う。hermes config setはネストしたキー(model.xxx)でないと「認識されないキー」警告が出る点に注意。

hermes config set model.provider custom
hermes config set model.name "qwen3.8:27b"
hermes config set model.base_url "http://127.0.0.1:11434/v1"
hermes config set model.ollama_num_ctx 65536

生成されるconfig.yaml

model:
  provider: custom
  name: qwen3.8:27b
  base_url: http://127.0.0.1:11434/v1
  ollama_num_ctx: 65536

つまずいた点

1. 初回起動がかなり重い

プラグイン読み込みだけで90秒以上かかる。timeout 90では応答前にタイムアウトすることがあり、timeout 280程度の余裕が必要だった。ログ(~/AppData/Local/hermes/logs/agent.log)で見ると、プラグイン discovery(53個中46個有効化)に時間がかかっている。

2. cronジョブには単発実行用とは別のモデル設定キーが要る

-z(単発実行)はmodel.nameを見るが、cronジョブはmodel.defaultを見る。これを知らずに最初のcronジョブを作ったところ、以下のエラーで即失敗した。

RuntimeError: Cron job '...' has no model configured
(job.model=None, HERMES_MODEL='', config.yaml model.default missing or empty)

修正:

hermes config set model.default "qwen3.8:27b"

検証1:単発タスク実行(TDD)

2026-09-03_OpenCode経由でローカルOllamaモデルにTDDタスクを委任すると同一のTDDタスクを、-z(oneshot)モードで実行。

hermes -z "<TDDタスクの指示文>" -m "qwen3.8:27b" --provider custom --yolo < /dev/null

結果:✅ 成功。calc.pytest_calc.pyのみが作成され、python -m pytestで独立に実行しても1 passed。エージェントの完了報告(テスト作成→失敗確認→実装→合格確認の4ステップ)と実際の成果物が一致していた。

検証2:cron定期実行

gatewayデーモンを常駐させなくても、hermes cron tick(期限到来ジョブを1回だけ実行して終了するコマンド)で動作検証ができる。

# ジョブ作成(1分後に1回だけ実行)
hermes cron create "1m" "cron_proof.txtというファイルを作成し、現在時刻を書き込む" \
  --workdir /path/to/workdir

# 1分待ってから発火
hermes cron tick

結果:✅ 成功。cron_proof.txtが実際に作成され、中身もHermes cron test at 2026-09-03 14:54:45のように正しく書き込まれていた。hermes cron runsの実行履歴にもcompletedとして記録されている。

6b36691216d44a008f0028bdc5ae2756  completed  job=4bc0349aeb43  source=builtin  2026-09-03T14:50:05...

実務上のチェックリスト

  • [ ] model.provider / model.name / model.base_url / model.ollama_num_ctxmodel.配下にネストして設定する
  • [ ] cronジョブを使うならmodel.defaultも別途設定する(単発実行の設定だけでは足りない)
  • [ ] 初回起動は90秒以上かかる想定でタイムアウトを余裕を持たせる
  • [ ] 本番のcron自動発火にはhermes gateway installが必要。動作確認だけならhermes cron tickで十分
  • [ ] hermes cron runsで実行履歴(completed/failed)を必ず確認し、テキストの完了報告だけで判断しない

まとめ

Hermes Agent + ローカルOllama(qwen3.8:27b)の組み合わせで、単発タスクの委任とcronによる定期実行の両方が実際に動作することを確認できた。導入時のハマりどころ(起動の重さ、cron専用のモデル設定キー)を踏まえれば、2026-09-03_OpenCode経由でローカルOllamaモデルにTDDタスクを委任するで確認したOpenCode経路とは別に、「定期実行が前提の運用」に向いた選択肢として実用できる。

関連ノート

  • 2026-08-28_Hermes_Agent_Cronの文脈と推論量設計_MGT_maccha
  • 2026-09-03_OpenCode経由でローカルOllamaモデルにTDDタスクを委任する
  • 00-project-concept

広告|関連する候補

アフィリエイトリンクです。比較・注意点を確認したうえで、候補確認用に掲載しています。

← 記事一覧に戻る