コンテンツにスキップ

スケジュール自動化

「毎朝の要約を受け取りたい」「定期的に状態をチェックして知らせてほしい」 ─ こうした自分がいなくても動く運用は、定期ジョブで実現できます。Hermes Desktop内では、サイドバーの**「スケジュール済みジョブ」画面と、エージェントが使うCron Jobs**ツールセットがこの役割を担います。

このレシピは、定期ジョブの作り方・結果の届け先・自律実行を安全に保つ設定を一通りまとめます。スキルとツールセットの基礎はスキルとプロファイルを使うを前提とします。

このレシピの操作名・設定キーは実機画面とソースで確認した内容に基づきます。定期ジョブは、チャットからの依頼でも、デスクトップの「スケジュール済みジョブ」画面からでも作成・管理できます。

スケジュール済みジョブ 画面

ジョブ名・実行日時・プロンプト・実行履歴はマスクした環境依存の例。

仕組み ─ Cron Jobs ツールセット

定期実行は、cronjob を含むCron Jobsツールセットで動きます。このツールセットは、定期ジョブの作成・一覧・更新・停止・再開・実行を行い、スキルを添付することもできます(スキルとツール)。

ジョブを作る方法は2通りです。

  • チャットで依頼する: 「毎朝8時に〜して、結果を知らせて」のように頼むと、エージェントが cronjob でジョブを登録します。あらかじめ「スキルとツール」のツールセットタブでCron Jobsを有効にしておきます。
  • 「スケジュール済みジョブ」画面から作る: サイドバーのナビ(「新しいセッション」「スキルとツール」「メッセージング」「アーティファクト」に続く5行目)から開きます。左ペインの「+」で、名前・プロンプト・頻度(毎日/平日/毎週/毎月/毎時/15分ごと/カスタム)・配信先を指定してジョブを直接作成・編集できます。頻度の「カスタム」ではcron式や「weekdays at 9am」のような自然言語も使えます。ジョブごとに使うモデルピッカー(既定はグローバルモデル)も指定できます。
  • ブレーンプリントから作る: 左ペインのジョブ一覧の下に「ブレーンプリント」(アプリの表記のまま。英語では Blueprints)として、すぐに使える自動化のひな形が並びます。選ぶと「開始点」としてプロンプトとスケジュールが埋まったダイアログが開くので、詳細を入力して「スケジュールする」を押します。確認時の実機に並んでいたひな形は次の16種(名前は英語表示): Morning briefing / Important-mail monitor / Weekly review / Workday start reminder / Custom reminder / Evening wind-down / Topic news digest / Bills & renewals reminder / Price & availability watch / Competitor news watch / Habit check-in / Hydration & movement nudge / Weekly meal plan / Daily learning drip / Gratitude & reflection prompt / On-this-day discovery。並ぶ内容は接続先のバックエンドによって変わります。

以後は、どの方法で作ったジョブも指定したスケジュールで実行されます。なお、cronジョブの中で動くエージェント自身が別のジョブを登録することは既定で禁止されています(無人のままジョブが増殖するのを防ぐため)。許可したい場合だけ config.yamlcron.allow_agent_schedulingtrue にします。ジョブにスキルを添付すれば、定型作業の段取り(自作スキルを含む)を定期実行に組み込めます。

結果の届け先を決める

定期ジョブは、あなたが画面を見ていないときにも動きます。だから結果をどこに届けるかを決めておくことが重要です。「スケジュール済みジョブ」画面の「配信先」には、このデスクトップ(アプリ内の実行履歴)のほか、接続したメッセージングチャネルの「Home(既定送信先)」を指定できます。

チャネルごとに設定欄の名前が異なります(メッセージング各種)。

  • LINE: Home channel ID(cron / 通知の既定送信先)
  • Discord / Teams: ホームチャンネル ID / 名(プロアクティブ送信先)
  • Google Chat: Home space ID
  • iMessage(Photon): Home Photon targetiMessage

つまり手順は、(1) 受け取りたいチャネルを接続し(連携の全体像)、(2) そのチャネルのHome宛先を設定し、(3) 定期ジョブの結果がそこへ届くようにする、という流れです。チャネルは「メッセージングゲートウェイ」を介して動くため、ゲートウェイが起動していないと結果は届きません(ゲートウェイ)。

自律実行を安全に保つ

定期ジョブは無人で動くため、危険なコマンドをどう扱うかが要点です。ここで押さえるべきは、cronジョブの安全性は、対話セッションの承認モード(Manual / Smart / Off)ではなく、cron専用の設定 approvals.cron_mode で決まるという点です。cronセッションは対話承認・ゲートウェイ承認の対象になりません。承認を出せる人がその場にいないため、対話承認へ回すと応答者不在のまま無期限に止まってしまうからです。それを避けるための専用モードが cron_mode です。

approvals.cron_mode は設定ファイル(config.yaml)専用のキーで、値は2つ、既定は deny です。

  • deny(既定・安全): cronジョブが危険と判定されたコマンドに当たると、そのコマンドをブロックし、エージェントに別の手段を探させます。承認待ちでハングすることはありません。無人運用の既定はこれで安全側に倒れます。ジョブ内容によっては目的を達成できないことがありますが、それは危険な操作を無人で通さないための挙動です。
  • approve: cronジョブ内の危険なコマンドをすべて自動承認します。無人でも破壊的な操作まで通したい場合に限って、リスクを理解したうえで選びます。

さらに、絶対に実行させたくないコマンドは approvals.deny(無条件拒否ルール)で明示できます。ここに一致したコマンドは --yolo や承認モード off、cronの approve よりも先に評価され、無条件でブロックされます。「cronは deny で安全側に置きつつ、特定のコマンドだけは何があっても止める」という二段構えが作れます。cron_modeapprovals.deny はどちらも設定画面には出ない設定ファイル専用のキーです。設定の詳細は安全性を参照してください。

定期ジョブに破壊的な操作や外部送信を含めるほど、無人実行のリスクは上がります。ジョブの内容は、人がいなくても安全に任せられる範囲に絞るのが原則です。

メッセージングチャネル自体のセキュリティ前提(許可ユーザーを必ず絞る)も忘れないでください。定期ジョブの結果が届くチャネルが第三者に開かれていると、出力が漏れる入口になります(連携の全体像のセキュリティ前提)。

ジョブを管理する

作ったジョブは、チャットでエージェントに依頼して一覧・更新・停止・再開・実行できます(Cron Jobsツールセットの機能)。あわせて、デスクトップの「スケジュール済みジョブ」画面でも直接操作できます。

画面の見出しには「N 件のジョブ」が出て、左ペインに検索欄とジョブ一覧、右ペインに選んだジョブの詳細が表示されます。詳細ペインの内容は次のとおりです。

項目内容
見出しジョブ名と状態バッジ(「スケジュール済み」「一時停止中」など)。右上に「一時停止」(一時停止中のジョブでは「再開」に入れ替わる)と「今すぐ実行」
頻度 / 前回 / 次回スケジュール(cron式)と、前回・次回の実行日時
配信先「このデスクトップ」またはメッセージングチャネルのHome
モデルジョブに割り当てたモデル
エラー直近の実行が失敗していれば、赤いバナーにエラー内容が出る(例: プロバイダーの認証エラー)
プロンプト毎回エージェントに渡す指示の全文
実行履歴実行ごとの記録。件数が見出しに出る

「今すぐ実行」はスケジュールを待たずにその場で1回実行するボタンで、プロンプトや配信先を変えた直後の動作確認に向いています。不要になったジョブは一時停止・削除し、内容を変えたいときは編集します(変更は次回の実行から反映されます)。「いま何が定期実行されているか」を把握しておくことが、意図しない自動実行を防ぎます。サイドバーの「CRON ジョブ」セクションにも、次回実行までの残り時間つきでジョブが並びます。

実行のあいだで記憶をつなぐ

定期ジョブは実行ごとに新しいセッションで動きますが、前回の結果をまったく覚えていないわけではありません。cronのエージェントも通常のエージェントと同じく永続メモリを読み書きします(メモリとコンテキスト運用)。それに加えて、ジョブ単位で次の仕組みがあります。

  • 継続(continuity): 各実行が前回の出力を参照して、重複を避けながら続きから実行します。「昨日報告した項目を今日も繰り返さない」監視系のジョブに向きます。デスクトップでこの設定を切り替えられるのは、ボットのルーティンペインにあるチェックボックス「継続: 各実行が前回の出力を参照します(重複を避け、続きから実行)」です。「スケジュール済みジョブ」画面にはこの項目はありません。
  • ノートパッド: ジョブごとに、実行をまたいで残る小さなメモ領域が用意され、次回のプロンプトの先頭に差し込まれます。エージェントが「次回の自分」に申し送りを残せます。
  • モニターモード: 監視対象に変化がないときはLLMを呼ばずに終了するジョブの動作モードです。

ノートパッドとモニターモードは、確認時点でデスクトップの画面に対応する項目がなく、チャットでエージェントに依頼する(cronjob ツール)かCLIで扱う機能です。設定画面の項目として探しても見つかりません。

1つのセッション内で繰り返す ─ /loop

「今のセッションで、同じ指示を一定間隔で繰り返してほしい」だけなら、cronジョブを作らずにスラッシュコマンド /loop(別名 /proactive)で済みます。書式は /loop [間隔] <プロンプト> [--times N] [--until <条件>] で、/loop status / pause / resume / stop で制御します。間隔を省くと自動ペース(返答が変わらなくなるにつれて間隔が伸びる)になります。cronジョブと違い、セッションを閉じれば終わります。

上限は config.yamlloops.* で決まります。既定値は次のとおりです。

キー既定値内容
loops.min_interval_seconds30受け付ける最小間隔(秒)。これより短い指定はこの値に切り上げ
loops.max_ticks100--times 未指定時に自動停止する回数の上限(0 で無制限)
loops.self_paced_floor_seconds60自動ペース時の最短間隔(秒)
loops.self_paced_ceiling_seconds900自動ペース時の最長間隔(秒)

各回は1ターン分のエージェント実行なので、短い間隔で回すとコストが積み上がります。コマンドの一覧はスラッシュコマンド一覧を参照してください。

前提・操作・期待結果・つまずいたら

  • 前提: スキルとツールセットの違い・承認モードを理解している。結果を受け取るチャネルを接続でき、メッセージングゲートウェイが起動している。
  • 操作: 「スケジュール済みジョブ」画面(またはブレーンプリント)でジョブを作るか、Cron Jobsツールセットを有効にしてチャットで定期ジョブを依頼する。受け取りチャネルのHome宛先を設定する。作成直後は「今すぐ実行」で1回動かして確認する。ジョブの内容は無人で安全に任せられる範囲に絞り、承認モードと整合させる。
  • 期待結果: 指定スケジュールでジョブが実行され、結果が「このデスクトップ」の実行履歴または指定チャネルのHome宛に届く。一覧・一時停止・再開で管理できる。
  • つまずいたら:
    • 結果が届かない: 「スケジュール済みジョブ」画面の詳細にエラーバナーが出ていないか(プロバイダーの認証切れなど)を見る。チャネル宛の場合は、Home宛先が設定されているか、メッセージングゲートウェイが起動しているか、許可ユーザー設定を確認する(連携の全体像)。
    • ジョブが目的を完了できない: cronは対話承認では止まらない(承認待ちでハングしない)。cron_modedeny(既定)の場合、危険と判定されたコマンドはブロックされ、エージェントが別の手段を探す。ジョブの作業範囲を安全なものに絞るか、どうしても危険な操作を無人で通す必要があるなら、リスクを理解したうえで config.yamlapprovals.cron_modeapprove にする。
    • どんなジョブが動いているか分からない: エージェントにジョブ一覧を出させるか、「スケジュール済みジョブ」画面で確認し、不要なものを停止・削除する。
    • Cron Jobsが見当たらない: 「スキルとツール」のツールセットタブで有効になっているか確認する。
    • cronを書かずに設定したい: 「スケジュール済みジョブ」画面のブレーンプリントから始めるか、頻度の「カスタム」に「weekdays at 9am」のような英語のフレーズを書く。
    • 毎回同じ内容を報告してくる: 継続(continuity)をオンにできるのはボットのルーティンなので、そのジョブをボットのルーティンとして作り直すか、プロンプトに「前回の報告内容と重複するものは省く」と明記して永続メモリに頼る。

関連

© 2026 Hermes Desktop ガイド(非公式)。引用・部分転載は、出典として本ページへのリンクを添えていただければ歓迎します。記事全文の無断複製・転載はご遠慮ください。