メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt

Use this file to discover all available pages before exploring further.

Cron は Gateway の組み込みスケジューラです。ジョブを永続化し、適切な時刻にエージェントを起動し、出力をチャットチャンネルまたは webhook エンドポイントへ返すことができます。

クイックスタート

1

1 回限りのリマインダーを追加する

openclaw cron add \
  --name "Reminder" \
  --at "2026-02-01T16:00:00Z" \
  --session main \
  --system-event "Reminder: check the cron docs draft" \
  --wake now \
  --delete-after-run
2

ジョブを確認する

openclaw cron list
openclaw cron get <job-id>
openclaw cron show <job-id>
3

実行履歴を確認する

openclaw cron runs --id <job-id>

cron の仕組み

  • Cron は Gateway プロセスの内部で実行されます(モデルの内部ではありません)。
  • ジョブ定義は ~/.openclaw/cron/jobs.json に永続化されるため、再起動してもスケジュールは失われません。
  • ランタイム実行状態は、その隣の ~/.openclaw/cron/jobs-state.json に永続化されます。cron 定義を git で追跡する場合は、jobs.json を追跡し、jobs-state.json を gitignore してください。
  • 分割後、古い OpenClaw バージョンは jobs.json を読み取れますが、ランタイムフィールドが現在は jobs-state.json にあるため、ジョブを新規として扱う場合があります。
  • Gateway の実行中または停止中に jobs.json が編集されると、OpenClaw は変更されたスケジュールフィールドを保留中のランタイムスロットメタデータと比較し、古い nextRunAtMs 値をクリアします。純粋な整形やキー順序だけの書き換えでは、保留中のスロットは保持されます。
  • すべての cron 実行は バックグラウンドタスク レコードを作成します。
  • Gateway 起動時、期限を過ぎた分離エージェントターンのジョブは即座に再生されず、チャンネル接続ウィンドウの外へ再スケジュールされるため、Discord/Telegram の起動とネイティブコマンドのセットアップは再起動後も応答性を保ちます。
  • 1 回限りのジョブ(--at)は、デフォルトで成功後に自動削除されます。
  • 分離 cron 実行は、実行完了時に cron:<jobId> セッション用に追跡されているブラウザタブやプロセスをベストエフォートで閉じるため、切り離されたブラウザ自動化が孤立プロセスを残しません。
  • 狭い cron 自己クリーンアップ権限を受け取った分離 cron 実行は、スケジューラステータス、自分の現在のジョブに自己フィルタされたリスト、そのジョブの実行履歴を引き続き読み取れるため、ステータスや Heartbeat チェックは、より広い cron 変更権限を得ずに自分自身のスケジュールを検査できます。
  • 分離 cron 実行は、古い確認応答にも対処します。最初の結果が単なる暫定ステータス更新(on itpulling everything together、および同様のヒント)であり、最終回答にまだ責任を持つ子孫サブエージェント実行がない場合、OpenClaw は配信前に実際の結果を 1 回だけ再プロンプトします。
  • 分離 cron 実行は、まず埋め込み実行からの構造化された実行拒否メタデータを優先し、その後 SYSTEM_RUN_DENIEDINVALID_REQUEST などの既知の最終サマリー/出力マーカーにフォールバックするため、ブロックされたコマンドが成功した実行として報告されません。
  • 分離 cron 実行は、返信ペイロードが生成されない場合でも、実行レベルのエージェント失敗をジョブエラーとして扱うため、モデル/プロバイダーの失敗は、ジョブを成功としてクリアする代わりにエラーカウンターを増やし、失敗通知をトリガーします。
  • 分離エージェントターンジョブが timeoutSeconds に達すると、cron は基盤となるエージェント実行を中止し、短いクリーンアップウィンドウを与えます。実行が排出されない場合、Gateway 所有のクリーンアップが、その実行のセッション所有権を強制的にクリアしてから cron がタイムアウトを記録するため、キューに入ったチャット作業が古い処理中セッションの背後に残されません。
  • 分離エージェントターンがランナー開始前または最初のモデル呼び出し前に停止した場合、cron は setup timed out before runner startstalled before first model call (last phase: context-engine) などのフェーズ固有のタイムアウトを記録します。これらのウォッチドッグは、外部 CLI プロセスが実際に起動される前の埋め込みプロバイダーと CLI ベースのプロバイダーを対象にし、長い timeoutSeconds 値とは独立して上限が設定されるため、コールドスタート/認証/コンテキストの失敗は、ジョブ全体の予算を待たずに素早く表面化します。
cron のタスク調整は、まずランタイム所有、次に永続履歴ベースです。アクティブな cron タスクは、古い子セッション行がまだ存在していても、cron ランタイムがそのジョブを実行中として追跡している間はライブのままです。ランタイムがジョブを所有しなくなり、5 分の猶予ウィンドウが期限切れになると、メンテナンスは一致する cron:<jobId>:<startedAt> 実行について、永続化された実行ログとジョブ状態を確認します。その永続履歴が終端結果を示している場合、タスク台帳はそれに基づいて確定されます。それ以外の場合、Gateway 所有のメンテナンスはタスクを lost としてマークできます。オフライン CLI 監査は永続履歴から復旧できますが、自身の空のインプロセスアクティブジョブセットを、Gateway 所有の cron 実行が失われた証拠として扱うことはありません。

スケジュールタイプ

種類CLI フラグ説明
at--at1 回限りのタイムスタンプ(ISO 8601 または 20m のような相対指定)
every--every固定間隔
cron--cron任意の --tz を伴う 5 フィールドまたは 6 フィールドの cron 式
タイムゾーンのないタイムスタンプは UTC として扱われます。ローカルの壁時計時刻でスケジュールするには --tz America/New_York を追加してください。 毎時 0 分の繰り返し式は、負荷スパイクを減らすために最大 5 分まで自動的に分散されます。正確なタイミングを強制するには --exact を使用し、明示的なウィンドウには --stagger 30s を使用します。

day-of-month と day-of-week は OR ロジックを使用する

Cron 式は croner によって解析されます。day-of-month フィールドと day-of-week フィールドの両方が非ワイルドカードの場合、croner は どちらか のフィールドが一致したときに一致とします。両方ではありません。これは標準的な Vixie cron の動作です。
# Intended: "9 AM on the 15th, only if it's a Monday"
# Actual:   "9 AM on every 15th, AND 9 AM on every Monday"
0 9 15 * 1
これは 1 か月あたり 0〜1 回ではなく、約 5〜6 回発火します。OpenClaw はここで Croner のデフォルトの OR 動作を使用します。両方の条件を必須にするには、Croner の + day-of-week 修飾子(0 9 15 * +1)を使用するか、一方のフィールドでスケジュールし、もう一方をジョブのプロンプトまたはコマンド内でガードしてください。

実行スタイル

スタイル--session実行場所最適な用途
メインセッションmain次の Heartbeat ターンリマインダー、システムイベント
分離isolated専用の cron:<jobId>レポート、バックグラウンド作業
現在のセッションcurrent作成時にバインドコンテキスト認識の繰り返し作業
カスタムセッションsession:custom-id永続的な名前付きセッション履歴を基に積み上げるワークフロー
メインセッション ジョブはシステムイベントをキューに入れ、任意で Heartbeat を起動します(--wake now または --wake next-heartbeat)。これらのシステムイベントは、対象セッションの日次/アイドルリセットの鮮度を延長しません。分離 ジョブは、新しいセッションで専用のエージェントターンを実行します。カスタムセッションsession:xxx)は実行間でコンテキストを永続化し、以前のサマリーを基に積み上げる日次スタンドアップのようなワークフローを可能にします。
分離ジョブでは、「新しいセッション」とは各実行に対する新しいトランスクリプト/セッション ID を意味します。OpenClaw は思考/高速/詳細設定、ラベル、明示的にユーザーが選択したモデル/認証のオーバーライドなどの安全な設定を引き継ぐ場合がありますが、古い cron 行から周囲の会話コンテキスト、つまりチャンネル/グループルーティング、送信またはキューのポリシー、昇格、起点、ACP ランタイムバインディングは継承しません。繰り返しジョブが同じ会話コンテキストを意図的に基に積み上げるべき場合は、current または session:<id> を使用してください。
分離ジョブでは、ランタイムの終了処理に、その cron セッション用のベストエフォートのブラウザクリーンアップが含まれるようになりました。クリーンアップの失敗は無視されるため、実際の cron 結果が引き続き優先されます。分離 cron 実行は、共有ランタイムクリーンアップパスを通じて、ジョブ用に作成されたバンドル MCP ランタイムインスタンスも破棄します。これはメインセッションおよびカスタムセッションの MCP クライアントが終了される方法と一致するため、分離 cron ジョブは stdio 子プロセスや長寿命の MCP 接続を実行間でリークしません。
分離 cron 実行がサブエージェントをオーケストレーションする場合、配信は古い親の暫定テキストよりも、最終的な子孫出力を優先します。子孫がまだ実行中の場合、OpenClaw はその部分的な親の更新を告知せずに抑制します。テキストのみの Discord 告知ターゲットに対して、OpenClaw はストリーミング/中間テキストペイロードと最終回答の両方を再生する代わりに、正規の最終アシスタントテキストを 1 回送信します。メディアおよび構造化された Discord ペイロードは、添付ファイルやコンポーネントが落ちないよう、引き続き個別のペイロードとして配信されます。

分離ジョブのペイロードオプション

--message
string
必須
プロンプトテキスト(分離では必須)。
--model
string
モデルのオーバーライド。ジョブに対して選択された許可済みモデルを使用します。
--thinking
string
思考レベルのオーバーライド。
--light-context
boolean
ワークスペースブートストラップファイルの注入をスキップします。
--tools
string
ジョブが使用できるツールを制限します。例: --tools exec,read
--model は、選択された許可済みモデルをそのジョブのプライマリモデルとして使用します。これはチャットセッションの /model オーバーライドとは異なります。ジョブのプライマリが失敗した場合でも、構成されたフォールバックチェーンは引き続き適用されます。要求されたモデルが許可されていない、または解決できない場合、cron はジョブのエージェント/デフォルトモデル選択へ黙ってフォールバックするのではなく、明示的な検証エラーで実行を失敗させます。 Cron ジョブはペイロードレベルの fallbacks も保持できます。存在する場合、そのリストはジョブ用に構成されたフォールバックチェーンを置き換えます。選択されたモデルだけを試す厳格な cron 実行にしたい場合は、ジョブペイロード/API で fallbacks: [] を使用してください。ジョブに --model があり、ペイロードにも構成にもフォールバックがない場合、OpenClaw は明示的な空のフォールバックオーバーライドを渡すため、エージェントのプライマリが隠れた追加の再試行ターゲットとして追加されることはありません。 分離ジョブのモデル選択の優先順位は次のとおりです。
  1. Gmail フックモデルオーバーライド(実行が Gmail から来ており、そのオーバーライドが許可されている場合)
  2. ジョブごとのペイロード model
  3. ユーザーが選択して保存した cron セッションモデルオーバーライド
  4. エージェント/デフォルトモデル選択
高速モードも、解決されたライブ選択に従います。選択されたモデル構成に params.fastMode がある場合、分離 cron はデフォルトでそれを使用します。保存されたセッションの fastMode オーバーライドは、どちらの方向でも構成より優先されます。 分離実行がライブのモデル切り替えハンドオフに達した場合、cron は切り替え後のプロバイダー/モデルで再試行し、再試行前にそのライブ選択をアクティブな実行に永続化します。切り替えに新しい認証プロファイルも含まれる場合、cron はその認証プロファイルのオーバーライドもアクティブな実行に永続化します。再試行には上限があります。最初の試行に加えて 2 回の切り替え再試行後、cron は無限ループする代わりに中止します。 隔離されたCron実行がエージェントランナーに入る前に、OpenClawは、設定済みの api: "ollama" および api: "openai-completions" プロバイダーのうち、baseUrl がループバック、プライベートネットワーク、または .local である到達可能なローカルプロバイダーエンドポイントを確認します。そのエンドポイントがダウンしている場合、モデル呼び出しを開始する代わりに、明確なプロバイダー/モデルエラー付きで実行が skipped として記録されます。エンドポイント結果は5分間キャッシュされるため、同じ停止中のローカル Ollama、vLLM、SGLang、または LM Studio サーバーを使う多数の期限到来ジョブは、リクエストストームを作るのではなく、1つの小さなプローブを共有します。プロバイダー事前確認でスキップされた実行は、実行エラーのバックオフを増やしません。スキップ通知を繰り返し受け取りたい場合は、failureAlert.includeSkipped を有効にしてください。

配信と出力

モード動作
announceエージェントが送信しなかった場合、最終テキストをターゲットへフォールバック配信
webhook完了イベントペイロードを URL に POST
noneランナーによるフォールバック配信なし
チャンネル配信には --announce --channel telegram --to "-1001234567890" を使用します。Telegram フォーラムトピックでは -1001234567890:topic:123 を使用します。直接 RPC/設定呼び出し元は delivery.threadId を文字列または数値として渡すこともできます。Slack/Discord/Mattermost のターゲットには明示的なプレフィックス(channel:<id>user:<id>)を使用してください。Matrix のルーム ID は大文字小文字を区別します。正確なルーム ID、または Matrix の room:!room:server 形式を使用してください。 announce 配信で channel: "last" を使用するか channel を省略した場合、telegram:123 のようなプロバイダープレフィックス付きターゲットは、cron がセッション履歴または単一の設定済みチャンネルへフォールバックする前に、チャンネルを選択できます。読み込まれた plugin が通知するプレフィックスのみがプロバイダーセレクターです。delivery.channel が明示されている場合、ターゲットプレフィックスは同じプロバイダーを指定する必要があります。たとえば、channel: "whatsapp"to: "telegram:123" の組み合わせは、WhatsApp が Telegram ID を電話番号として解釈するのを許す代わりに拒否されます。channel:<id>user:<id>imessage:<handle>sms:<number> などのターゲット種別およびサービスプレフィックスは、プロバイダーセレクターではなく、チャンネル所有のターゲット構文のままです。 隔離ジョブでは、チャット配信は共有されます。チャットルートが利用可能な場合、ジョブが --no-deliver を使用していても、エージェントは message ツールを使用できます。エージェントが設定済み/現在のターゲットへ送信した場合、OpenClaw はフォールバック announce をスキップします。それ以外の場合、announcewebhooknone は、エージェントターン後に最終返信をランナーがどう扱うかだけを制御します。 エージェントがアクティブなチャットから隔離リマインダーを作成すると、OpenClaw はフォールバック announce ルート用に保持されたライブ配信ターゲットを保存します。内部セッションキーは小文字の場合があります。現在のチャットコンテキストが利用可能な場合、それらのキーからプロバイダー配信ターゲットは再構築されません。 暗黙の announce 配信は、設定済みチャンネル許可リストを使用して古いターゲットを検証し、再ルーティングします。DM ペアリングストア承認はフォールバック自動化の受信者ではありません。スケジュール済みジョブが DM へ能動的に送信する必要がある場合は、delivery.to を設定するか、チャンネルの allowFrom エントリーを設定してください。 失敗通知は別の宛先パスに従います。
  • cron.failureDestination は失敗通知のグローバルデフォルトを設定します。
  • job.delivery.failureDestination はジョブごとにそれを上書きします。
  • どちらも設定されておらず、ジョブがすでに announce で配信している場合、失敗通知はそのプライマリ announce ターゲットへフォールバックするようになりました。
  • delivery.failureDestination は、プライマリ配信モードが webhook でない限り、sessionTarget="isolated" ジョブでのみサポートされます。
  • failureAlert.includeSkipped: true は、ジョブまたはグローバル cron アラートポリシーを、スキップ実行アラートの繰り返し対象にします。スキップ実行は別の連続スキップカウンターを保持するため、実行エラーのバックオフには影響しません。

CLI の例

openclaw cron add \
  --name "Calendar check" \
  --at "20m" \
  --session main \
  --system-event "Next heartbeat: check calendar." \
  --wake now

Webhook

Gateway は外部トリガー用の HTTP Webhook エンドポイントを公開できます。設定で有効にします。
{
  hooks: {
    enabled: true,
    token: "shared-secret",
    path: "/hooks",
  },
}

認証

すべてのリクエストは、ヘッダー経由でフックトークンを含める必要があります。
  • Authorization: Bearer <token>(推奨)
  • x-openclaw-token: <token>
クエリ文字列トークンは拒否されます。
メインセッションのシステムイベントをキューに入れます。
curl -X POST http://127.0.0.1:18789/hooks/wake \
  -H 'Authorization: Bearer SECRET' \
  -H 'Content-Type: application/json' \
  -d '{"text":"New email received","mode":"now"}'
text
string
必須
イベントの説明。
mode
string
デフォルト:"now"
now または next-heartbeat
隔離エージェントターンを実行します。
curl -X POST http://127.0.0.1:18789/hooks/agent \
  -H 'Authorization: Bearer SECRET' \
  -H 'Content-Type: application/json' \
  -d '{"message":"Summarize inbox","name":"Email","model":"openai/gpt-5.4"}'
フィールド: message(必須)、nameagentIdwakeModedeliverchanneltomodelfallbacksthinkingtimeoutSeconds
カスタムフック名は設定内の hooks.mappings によって解決されます。マッピングは、テンプレートまたはコード変換を使って任意のペイロードを wake または agent アクションに変換できます。
フックエンドポイントはループバック、tailnet、または信頼できるリバースプロキシの背後に置いてください。
  • 専用のフックトークンを使用してください。Gateway 認証トークンを再利用しないでください。
  • hooks.path は専用のサブパスに保持してください。/ は拒否されます。
  • hooks.allowedAgentIds を設定して、明示的な agentId ルーティングを制限してください。
  • 呼び出し元が選択するセッションが必要でない限り、hooks.allowRequestSessionKey=false を維持してください。
  • hooks.allowRequestSessionKey を有効にする場合は、許可されるセッションキーの形を制約するために hooks.allowedSessionKeyPrefixes も設定してください。
  • フックペイロードはデフォルトで安全境界に包まれます。

Gmail PubSub 連携

Google PubSub 経由で Gmail 受信トレイトリガーを OpenClaw に接続します。
前提条件: gcloud CLI、gog(gogcli)、OpenClaw フックの有効化、公開 HTTPS エンドポイント用の Tailscale。

ウィザード設定(推奨)

openclaw webhooks gmail setup --account openclaw@gmail.com
これは hooks.gmail 設定を書き込み、Gmail プリセットを有効化し、プッシュエンドポイントに Tailscale Funnel を使用します。

Gateway 自動起動

hooks.enabled=true かつ hooks.gmail.account が設定されている場合、Gateway は起動時に gog gmail watch serve を開始し、watch を自動更新します。無効にするには OPENCLAW_SKIP_GMAIL_WATCHER=1 を設定してください。

手動の一回限りの設定

1

Select the GCP project

gog が使用する OAuth クライアントを所有する GCP プロジェクトを選択します。
gcloud auth login
gcloud config set project <project-id>
gcloud services enable gmail.googleapis.com pubsub.googleapis.com
2

Create topic and grant Gmail push access

gcloud pubsub topics create gog-gmail-watch
gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \
  --member=serviceAccount:gmail-api-push@system.gserviceaccount.com \
  --role=roles/pubsub.publisher
3

Start the watch

gog gmail watch start \
  --account openclaw@gmail.com \
  --label INBOX \
  --topic projects/<project-id>/topics/gog-gmail-watch

Gmail モデル上書き

{
  hooks: {
    gmail: {
      model: "openrouter/meta-llama/llama-3.3-70b-instruct:free",
      thinking: "off",
    },
  },
}

ジョブの管理

# List all jobs
openclaw cron list

# Get one stored job as JSON
openclaw cron get <jobId>

# Show one job, including resolved delivery route
openclaw cron show <jobId>

# Edit a job
openclaw cron edit <jobId> --message "Updated prompt" --model "opus"

# Force run a job now
openclaw cron run <jobId>

# Run only if due
openclaw cron run <jobId> --due

# View run history
openclaw cron runs --id <jobId> --limit 50

# Delete a job
openclaw cron remove <jobId>

# Agent selection (multi-agent setups)
openclaw cron add --name "Ops sweep" --cron "0 6 * * *" --session isolated --message "Check ops queue" --agent ops
openclaw cron edit <jobId> --clear-agent
モデル上書きの注記:
  • openclaw cron add|edit --model ... はジョブで選択されたモデルを変更します。
  • モデルが許可されている場合、その正確なプロバイダー/モデルが隔離エージェント実行に到達します。
  • 許可されていない、または解決できない場合、cron は明示的な検証エラーで実行を失敗させます。
  • cron --model はセッション /model 上書きではなくジョブのプライマリであるため、設定済みフォールバックチェーンは引き続き適用されます。
  • ペイロードの fallbacks は、そのジョブの設定済みフォールバックを置き換えます。fallbacks: [] はフォールバックを無効化し、実行を厳格にします。
  • 明示的または設定済みのフォールバックリストがない単純な --model は、サイレントな追加リトライターゲットとしてエージェントプライマリへフォールスルーしません。

設定

{
  cron: {
    enabled: true,
    store: "~/.openclaw/cron/jobs.json",
    maxConcurrentRuns: 1,
    retry: {
      maxAttempts: 3,
      backoffMs: [60000, 120000, 300000],
      retryOn: ["rate_limit", "overloaded", "network", "server_error"],
    },
    webhookToken: "replace-with-dedicated-webhook-token",
    sessionRetention: "24h",
    runLog: { maxBytes: "2mb", keepLines: 2000 },
  },
}
maxConcurrentRuns は、スケジュール済み cron ディスパッチと隔離エージェントターン実行の両方を制限します。隔離 cron エージェントターンは、内部でキュー専用の cron-nested 実行レーンを使用するため、この値を増やすと、外側の cron ラッパーだけを開始するのではなく、独立した cron LLM 実行を並行して進められます。共有の非 cron nested レーンは、この設定では拡張されません。 ランタイム状態サイドカーは cron.store から導出されます。~/clawd/cron/jobs.json のような .json ストアは ~/clawd/cron/jobs-state.json を使用し、.json サフィックスのないストアパスでは -state.json が追加されます。 jobs.json を手動編集する場合は、jobs-state.json をソース管理から外してください。OpenClaw はそのサイドカーを、保留スロット、アクティブマーカー、最終実行メタデータ、外部で編集されたジョブに新しい nextRunAtMs が必要なタイミングをスケジューラーへ伝えるスケジュール ID に使用します。 cron の無効化: cron.enabled: false または OPENCLAW_SKIP_CRON=1
ワンショットリトライ: 一時的なエラー(レート制限、過負荷、ネットワーク、サーバーエラー)は、指数バックオフ付きで最大3回リトライされます。永続的なエラーでは即座に無効化されます。定期リトライ: リトライ間で指数バックオフ(30秒から60分)を使用します。次回の成功実行後にバックオフはリセットされます。
cron.sessionRetention (デフォルト 24h) は分離実行セッションのエントリを削除します。cron.runLog.maxBytes / cron.runLog.keepLines は実行ログファイルを自動削除します。

トラブルシューティング

コマンドの確認手順

openclaw status
openclaw gateway status
openclaw cron status
openclaw cron list
openclaw cron runs --id <jobId> --limit 20
openclaw system heartbeat last
openclaw logs --follow
openclaw doctor
  • cron.enabledOPENCLAW_SKIP_CRON 環境変数を確認します。
  • Gateway が継続的に実行されていることを確認します。
  • cron スケジュールでは、タイムゾーン (--tz) とホストのタイムゾーンを確認します。
  • 実行出力の reason: not-due は、手動実行が openclaw cron run <jobId> --due でチェックされ、ジョブがまだ期限に達していなかったことを意味します。
  • 配信モード none は、runner のフォールバック送信が想定されていないことを意味します。チャット経路が利用可能な場合、エージェントは引き続き message ツールで直接送信できます。
  • 配信先がない、または無効 (channel/to) の場合、送信はスキップされます。
  • Matrix では、コピーされたジョブや古いジョブで delivery.to のルーム ID が小文字化されていると、Matrix のルーム ID は大文字と小文字を区別するため失敗することがあります。ジョブを Matrix から取得した正確な !room:server または room:!room:server の値に編集してください。
  • チャネル認証エラー (unauthorized, Forbidden) は、認証情報によって配信がブロックされたことを意味します。
  • 分離実行がサイレントトークン (NO_REPLY / no_reply) だけを返す場合、OpenClaw は直接の送信配信を抑制し、フォールバックのキュー済み要約経路も抑制するため、チャットには何も投稿されません。
  • エージェント自身がユーザーにメッセージを送る必要がある場合は、ジョブに利用可能な経路 (channel: "last" と以前のチャット、または明示的なチャネル/ターゲット) があることを確認します。
  • 日次およびアイドルリセットの鮮度は updatedAt に基づきません。セッション管理を参照してください。
  • Cron の起動、Heartbeat の実行、exec 通知、Gateway のブックキーピングは、ルーティング/ステータスのためにセッション行を更新することがありますが、sessionStartedAtlastInteractionAt は延長しません。
  • これらのフィールドが存在する前に作成された古い行については、ファイルがまだ利用可能な場合、OpenClaw はトランスクリプト JSONL のセッションヘッダーから sessionStartedAt を復元できます。lastInteractionAt のない古いアイドル行は、その復元された開始時刻をアイドル基準として使用します。
  • --tz なしの Cron は、Gateway ホストのタイムゾーンを使用します。
  • タイムゾーンなしの at スケジュールは UTC として扱われます。
  • Heartbeat の activeHours は、設定されたタイムゾーン解決を使用します。

関連項目