OpenClawSkills
GitHub
Gateway / Operations • 5分で読める

Heartbeat

Heartbeat のポーリングメッセージと通知ルール。

Tutorial.alert.info

''Heartbeat と Cron?'' いつ使用するかについては、''Cron と Heartbeat''を参照してください。

Heartbeat はメインセッションで定期的なエージェントターンを実行し、モデルが

スパムを送らずに注意が必要な内容を表示できるようにします。

Tutorial.step

クイックスタート(初心者向け)

1. Heartbeat を有効にする(Anthropic OAuth/setup-token の場合、デフォルトで ''30m'' または ''1h'')または独自の頻度を設定します。

2. エージェントワークスペースに小さな ''HEARTBEAT.md'' チェックリストを作成します(オプションですが推奨されます)。

3. Heartbeat メッセージをどこに送信するかを決定します(''target: "last"'' がデフォルトです)。

4. オプション:透明性のために Heartbeat 推論配信を有効にします。

5. オプション:Heartbeat をアクティブ時間(現地時間)に制限します。

Example config:

Json5
{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m",
        target: "last",
        // activeHours: { start: "08:00", end: "24:00" },
        // includeReasoning: true, // optional: send separate `Reasoning:` message too
      },
    },
  },
}
Tutorial.step

デフォルト値

- 間隔:''30m''(Anthropic OAuth/setup-token が検出された認証モードの場合は ''1h'')。''agents.defaults.heartbeat.every'' またはエージェントごとの ''agents.list[].heartbeat.every'' を設定します。''0m'' を使用して無効にします。

- プロンプト本文(''agents.defaults.heartbeat.prompt'' 経由で設定可能):

''Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.''

- Heartbeat プロンプトはユーザーメッセージとして逐語送信されます。システム

プロンプトには「heartbeat」セクションが含まれ、実行は内部でフラグ付けされます。

- アクティブ時間は設定されたタイムゾーン(''heartbeat.activeHours'')でチェックされます。

ウィンドウ外では、Heartbeat はスキップされ、ウィンドウ内の次のティックまで待機します。

Tutorial.step

Heartbeat プロンプトの目的

デフォルトのプロンプトは意図的に広範です:

- バックグラウンドタスク:「未完了のタスクを検討する」はエージェントにレビューを促します

フォローアップ(受信トレイ、カレンダー、リマインダー、キューに入った作業)と緊急事項を表示します。

- 人間によるチェックイン:「日中に時折人間とチェックインする」は

時折の軽量な「何か必要ですか?」メッセージを促進しますが、夜間のスパムを回避します

設定されたローカルタイムゾーンを使用します(''/concepts/timezone'' を参照)。

Heartbeat に非常に具体的なことをさせたい場合(例:「Gmail PubSub

stats」または「ゲートウェイの健全性を確認」)、''agents.defaults.heartbeat.prompt'' (または

''agents.list[].heartbeat.prompt'')をカスタム本文(逐語送信)に設定します。

Tutorial.step

レスポンス契約

- 注意が必要なものがない場合、''''HEARTBEAT_OK'''' と返信してください。

- Heartbeat 実行中、OpenClaw は ''HEARTBEAT_OK'' を確認として扱います

返信の先頭または末尾に現れた場合。トークンは削除され、返信は

残りの内容が ''≤ ''ackMaxChars'''' (デフォルト:300)の場合、削除されます。

- ''HEARTBEAT_OK'' が返信の''中央''に現れた場合、特別に

扱われません。

- アラートの場合、''含めないでください'' ''HEARTBEAT_OK''。アラートテキストのみを返してください。

Heartbeat 外では、メッセージの先頭/末尾にある孤立した ''HEARTBEAT_OK'' は削除され

記録されます。''HEARTBEAT_OK'' のみのメッセージは破棄されます。

Tutorial.step

Config

Json5
{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m", // default: 30m (0m disables)
        model: "anthropic/claude-opus-4-5",
        includeReasoning: false, // default: false (deliver separate Reasoning: message when available)
        target: "last", // last | none | <channel id> (core or plugin, e.g. "bluebubbles")
        to: "+15551234567", // optional channel-specific override
        prompt: "Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.",
        ackMaxChars: 300, // max chars allowed after HEARTBEAT_OK
      },
    },
  },
}

#

Tutorial.step

スコープと優先順位

- ''agents.defaults.heartbeat'' はグローバルな Heartbeat 動作を設定します。

- ''agents.list[].heartbeat'' は上にマージされます。エージェントに ''heartbeat'' ブロックがある場合、''それらのエージェントのみ''が Heartbeat を実行します。

- ''channels.defaults.heartbeat'' はすべてのチャネルの可視性のデフォルトを設定します。

- ''channels.''.heartbeat'' はチャネルのデフォルトを上書きします。

- ''channels.''.accounts.''.heartbeat'' (マルチアカウントチャネル)はチャネルごとの設定を上書きします。

#

Tutorial.step

エージェントごとの Heartbeat

いずれかの ''agents.list[]'' エントリに ''heartbeat'' ブロックが含まれている場合、''それらのエージェントのみ''

Heartbeat を実行します。各エージェントブロックは ''agents.defaults.heartbeat'' の上にマージされます

(したがって、共有デフォルトを一度設定し、エージェントごとに上書きできます)。

例:2 つのエージェント、2 番目のエージェントのみが Heartbeat を実行します。

Json5
{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m",
        target: "last",
      },
    },
    list: [
      { id: "main", default: true },
      {
        id: "ops",
        heartbeat: {
          every: "1h",
          target: "whatsapp",
          to: "+15551234567",
          prompt: "Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.",
        },
      },
    ],
  },
}

#

Tutorial.step

フィールドノート

- ''every'':Heartbeat 間隔(期間文字列;デフォルト単位=分)。

- ''model'':Heartbeat 実行のオプションのモデルオーバーライド(''provider/model'')。

- ''includeReasoning'':有効にすると、利用可能な場合に個別の ''Reasoning:'' メッセージも配信します(''/reasoning on'' と同じ形状)。

- ''session'':Heartbeat 実行のオプションのセッションキー。

- ''main'' (デフォルト):エージェントのメインセッション。

- 明示的なセッションキー(''openclaw sessions --json'' または ''セッション CLI'' からコピー)。

- セッションキーの形式:''セッション'' および ''グループ'' を参照してください。

- ''target'':

- ''last'' (デフォルト):最後に使用された外部チャネルに配信します。

- 明示的なチャネル:''whatsapp'' / ''telegram'' / ''discord'' / ''googlechat'' / ''slack'' / ''msteams'' / ''signal'' / ''imessage''。

- ''none'':Heartbeat を実行しますが''外部に配信しません''。

- ''to'':オプションの受信者オーバーライド(チャネル固有の ID、例:WhatsApp の E.164 または Telegram チャット ID)。

- ''prompt'':デフォルトのプロンプト本文を上書きします(マージしません)。

- ''ackMaxChars'':''HEARTBEAT_OK'' の後に配信前に許可される最大文字数。

Tutorial.step

Delivery behavior

- デフォルトでは、Heartbeat はエージェントのメインセッション(''agent:'':'''')で実行されます

または ''session.scope = "global"'' の場合は ''session.scope = "global"''。''session'' を設定して

特定のチャネルセッション(Discord/WhatsApp/など)に上書きします。

- ''session'' は実行コンテキストのみに影響します。配信は ''target'' と ''to'' によって制御されます。

- 特定のチャネル/受信者に配信するには、''target'' + ''to'' を設定します。

''target: "last"'' の場合、配信はそのセッションの最後の外部チャネルを使用します。

- メインキューがビジーの場合、Heartbeat はスキップされ、後で再試行されます。

- ''target'' が外部ターゲットに解決されない場合、実行は引き続き行われますが

送信メッセージは送信されません。

- Heartbeat 返信はセッションを''維持しません''。最後の ''updatedAt''

は復元されるため、アイドル期限切れの動作は正常です。

Tutorial.step

可視性の制御

デフォルトでは、アラートコンテンツが配信されると、''HEARTBEAT_OK'' 確認は抑制されます。

チャネルまたはアカウントごとに調整できます:

Yaml
channels:
  defaults:
    heartbeat:
      showOk: false # Hide HEARTBEAT_OK (default)
      showAlerts: true # Show alert messages (default)
      useIndicator: true # Emit indicator events (default)
  telegram:
    heartbeat:
      showOk: true # Show OK acknowledgments on Telegram
  whatsapp:
    accounts:
      work:
        heartbeat:
          showAlerts: false # Suppress alert delivery for this account

優先順位:アカウントごと → チャネルごと → チャネルのデフォルト → 組み込みのデフォルト。

#

Tutorial.step

各フラグの役割

- ''showOk'':モデルが OK のみの返信を返したときに ''HEARTBEAT_OK'' 確認を送信します。

- ''showAlerts'':モデルが非 OK 返信を返したときにアラートコンテンツを送信します。

- ''useIndicator'':UI ステータスサーフェスのインジケーターイベントを発行します。

<strong>すべて 3 つ</strong>が false の場合、OpenClaw は Heartbeat 実行を完全にスキップします(モデル呼び出しなし)。

#

Tutorial.step

チャネルごとおよびアカウントごとの例

Yaml
channels:
  defaults:
    heartbeat:
      showOk: false
      showAlerts: true
      useIndicator: true
  slack:
    heartbeat:
      showOk: true # all Slack accounts
    accounts:
      ops:
        heartbeat:
          showAlerts: false # suppress alerts for ops account only
  telegram:
    heartbeat:
      showOk: true

#

Tutorial.step

一般的なパターン

| Goal | Config |

| - |

|デフォルトの動作(OK はサイレント、アラートオン)| _設定不要_ |

|完全にサイレント(メッセージなし、インジケーターなし)| channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: false }' |

|インジケーターのみ(メッセージなし)| channels.defaults.heartbeat: { showOk: false, showAlerts: false, useIndicator: true }' |

|1 つのチャネルでのみ OK| channels.telegram.heartbeat: { showOk: true }' |

Tutorial.step

HEARTBEAT.md(オプション)

ワークスペースに ''HEARTBEAT.md'' ファイルが存在する場合、デフォルトのプロンプトは

エージェントに読み取るように指示します。「Heartbeat チェックリスト」として扱います。小さく、安定しており、

30 分ごとに追加しても安全です。

''HEARTBEAT.md'' が存在しますが実質的に空の場合(空白行とマークダウン

''# Heading'' のようなヘッダーのみ)、OpenClaw は API 呼び出しを節約するために Heartbeat 実行をスキップします。

ファイルが存在しない場合、Heartbeat は引き続き実行され、モデルが何をするかを決定します。

膨張を避けるために小さく(短いチェックリストまたはリマインダー)保ってください。

Example '<code className="bg-white/10 px-1.5 py-0.5 rounded text-emerald-300 text-sm">'HEARTBEAT.md'</code>':