Hermes Agent — Cron トラブルシューティング完全ガイド
cronジョブが期待通りに動かないとき、この順序でチェックしていく。大抵の問題は4つのカテゴリのどれかに当てはまる。
- Timing — スケジュールが発火しない
- Delivery — 結果が届かない
- Skill Loading — スキルが読めない
- Errors — ジョブ内でエラー
ジョブが発火しない
1. ジョブの状態を確認
hermes cron list
[active] かを確認。[paused] や [completed] なら原因。[completed] は repeat_count を使い切った可能性。
2. スケジュール式が正しいか
| 式 | 意味 |
|---|---|
0 9 * * * |
毎朝9時 |
0 9 * * 1 |
毎週月曜9時 |
every 2h |
2時間ごと |
30m |
30分後(一回限り) |
| ISO timestamp | 指定UTC時刻に一回限り |
一回だけ動いて消えたら one-shot スケジュール。正常挙動。
3. ゲートウェイが動いているか
cronジョブはゲートウェイのバックグラウンドティッカー(60秒間隔)が発火させる。通常のCLIセッションでは自動発火しない。
自動発火を期待するなら:
hermes gateway # フォアグラウンド
hermes gateway start # サービスとして
手動テスト:
hermes cron tick
4. システムクロックとタイムゾーン
ジョブはローカルタイムゾーンを使う。
date
hermes cron list # next_run と比較
配信に失敗する
1. 配信先の設定を確認
| ターゲット | 必要な設定 |
|---|---|
telegram |
~/.hermes/.env に TELEGRAM_BOT_TOKEN |
discord |
~/.hermes/.env に DISCORD_BOT_TOKEN |
slack |
~/.hermes/.env に SLACK_BOT_TOKEN |
origin |
ジョブ作成元のチャットに配信 |
local |
~/.hermes/cron/output/ への書き込み権限 |
失敗してもジョブ自体は実行される。配信だけ止まる。
2. [SILENT] に注意
空出力や [SILENT] を返すと配信が抑制される。条件分岐で誤って全部飲み込んでないか確認。
3. プラットフォームの権限
- Telegram: ボットは対象グループ/チャンネルの管理者である必要あり
- Discord: ボットに対象チャンネルの送信権限が必要
- Slack: ワークスペースに追加され
chat:writeスコープが必要
4. レスポンスラップ
デフォルトでcronレスポンスにヘッダ・フッタが付く。オフにする:
cron:
wrap_response: false
スキル読み込みに失敗する
1. スキルがインストールされているか
hermes skills list
2. max_results はキーワード引数必須
ddgs.text("query", 5) はエラー。ddgs.text("query", max_results=5) を使う。
3. スキル名が正しいか
大文字小文字区別あり。hermes skills list の出力を正確に使う。
4. インタラクティブツールを使うスキルに注意
cronジョブでは cronjob, messaging, clarify ツールセットが無効。これらに依存するスキルはcronでは動かない。
5. 複数スキルのロード順序
/cron add "0 9 * * *" "..." --skill context-skill --skill target-skill
context-skill が先にロードされる。依存関係に注意。
ジョブ内でエラー
1. 直近の出力を確認
- 配信先のチャット(配信が成功した場合)
~/.hermes/logs/agent.loghermes cron listのlast_runメタデータ
2. よくあるエラーパターン
| エラー | 原因 | 対処 |
|---|---|---|
No such file or directory (スクリプト) |
パスが絶対パスでない | ~/.hermes/scripts/ に配置 |
Skill not found |
スケジューラ側に未インストール | hermes skills install |
| ジョブは動くが出ない | 配信先の問題 or [SILENT] |
Deliveryセクション参照 |
| ジョブがハング/タイムアウト | 非活動タイムアウト(デフォルト600秒) | HERMES_CRON_TIMEOUT で調整 |
3. ロック競合
2つのゲートウェイが同時に動いているとジョブが遅延・スキップされる。
ps aux | grep hermes
# 重複プロセスはkillして1つだけ残す
4. jobs.json の権限
ls -la ~/.hermes/cron/jobs.json
chmod 600 ~/.hermes/cron/jobs.json
パフォーマンス
- 起動が遅い: 各ジョブは新AIAgentセッションを作る。時刻に厳密なスケジュールにはバッファを入れる
- 重複ジョブが多い: 同時刻のジョブは順次実行。ずらす(
0 9 * * *と5 9 * * *) - スクリプト出力が大きい: スクリプト側でフィルタ・サマリーしてから出す
診断コマンド
hermes cron list # 全ジョブ・状態・次回実行時刻
hermes cron run <job_id> # 次ティックで発火(テスト用)
hermes cron edit <job_id> # 設定修正
hermes logs # 最近のログ
hermes skills list # インストール済みスキル確認
See Also
- Web Search & Extract 検索バックエンド選定ガイド — cronジョブの検索手段選定
- DuckDuckGo Search — ddgs CLI による無料Web検索 — DDGSの詳細な使い方
- Hermes Agent運用の教訓 — profiles・config・skill設計
- Hermes Event Hooks — ライフサイクルでフックする自動化設計 — フックシステム設計
Sources
- Hermes Agent公式ドキュメント — Cron Troubleshooting