Hermes Agentでローカルモデルの単発実行とcron定期実行を試す
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.py・test_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_ctxをmodel.配下にネストして設定する - [ ] 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