Technical reference

日付と時刻

OpenClaw は既定で、トランスポートタイムスタンプにホストローカル時刻を使用し、system prompt 内でのみユーザーのタイムゾーンを使用します。 Provider のタイムスタンプは保持されるため、tools はネイティブなセマンティクスを維持します(現在時刻は session_status で利用できます)。

メッセージエンベロープ(既定ではローカル)

受信メッセージはタイムスタンプ(分単位の精度)でラップされます。

[Provider ... 2026-01-05 16:26 PST] message text

このエンベロープのタイムスタンプは、Provider のタイムゾーンに関係なく、既定ではホストローカルです。

この動作は上書きできます。

{
  agents: {
    defaults: {
      envelopeTimezone: "local", // "utc" | "local" | "user" | IANA timezone
      envelopeTimestamp: "on", // "on" | "off"
      envelopeElapsed: "on", // "on" | "off"
    },
  },
}
  • envelopeTimezone: "utc" は UTC を使用します。
  • envelopeTimezone: "local" はホストのタイムゾーンを使用します。
  • envelopeTimezone: "user"agents.defaults.userTimezone を使用します(ホストのタイムゾーンにフォールバックします)。
  • 固定ゾーンには明示的な IANA タイムゾーン(例: "America/Chicago")を使用します。
  • envelopeTimestamp: "off" はエンベロープヘッダーから絶対タイムスタンプを削除します。
  • envelopeElapsed: "off" は経過時間のサフィックス(+2m 形式)を削除します。

ローカル(既定):

[WhatsApp +1555 2026-01-18 00:19 PST] hello

ユーザーのタイムゾーン:

[WhatsApp +1555 2026-01-18 00:19 CST] hello

経過時間が有効:

[WhatsApp +1555 +30s 2026-01-18T05:19Z] follow-up

System prompt: 現在の日付と時刻

ユーザーのタイムゾーンが既知の場合、system prompt には専用の 現在の日付と時刻セクションが含まれ、prompt caching を安定させるためにタイムゾーンのみ(時計/時刻形式なし)が含まれます。

Time zone: America/Chicago

agent が現在時刻を必要とする場合は、session_status tool を使用します。ステータス カードにはタイムスタンプ行が含まれます。

システムイベント行(既定ではローカル)

agent context に挿入されるキュー済みシステムイベントには、メッセージエンベロープと同じタイムゾーン選択(既定: ホストローカル)を使用したタイムスタンプがプレフィックスとして付けられます。

System: [2026-01-12 12:19:17 PST] Model switched.

ユーザーのタイムゾーンと形式を設定する

{
  agents: {
    defaults: {
      userTimezone: "America/Chicago",
      timeFormat: "auto", // auto | 12 | 24
    },
  },
}
  • userTimezone は prompt context 用のユーザーローカルのタイムゾーンを設定します。
  • timeFormat は prompt 内の12 時間/24 時間表示を制御します。auto は OS 設定に従います。

時刻形式の検出(auto)

timeFormat: "auto" の場合、OpenClaw は OS 設定(macOS/Windows)を検査し、ロケール形式にフォールバックします。検出された値は、システムコールの繰り返しを避けるため、プロセスごとにキャッシュされます。

Tool ペイロード + コネクタ(生の Provider 時刻 + 正規化フィールド)

Channel tools はProvider ネイティブのタイムスタンプを返し、一貫性のために正規化フィールドを追加します。

  • timestampMs: エポックミリ秒(UTC)
  • timestampUtc: ISO 8601 UTC 文字列

生の Provider フィールドは保持されるため、何も失われません。

  • Slack: API からのエポック風の文字列
  • Discord: UTC ISO タイムスタンプ
  • Telegram/WhatsApp: Provider 固有の数値/ISO タイムスタンプ

ローカル時刻が必要な場合は、既知のタイムゾーンを使用して下流で変換してください。

関連ドキュメント