日時処理

OpenClaw のデフォルトは、トランスポートのタイムスタンプにはホストのローカル時刻システムプロンプトにはユーザーのタイムゾーンを使用します。 プロバイダーのタイムスタンプはそのまま保持されるため、ツールは固有のセマンティクスを維持します(現在時刻は session_status で取得可能)。

メッセージエンベロープ(デフォルトはローカル時刻)

受信メッセージには分単位のタイムスタンプが付与されます。

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

このエンベロープのタイムスタンプは、プロバイダーのタイムゾーンに関係なく、デフォルトでホストのローカル時刻が使われます。

この挙動はオーバーライドできます。

{
  agents: {
    defaults: {
      envelopeTimezone: "local", // "utc" | "local" | "user" | IANA タイムゾーン
      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

システムプロンプト: 現在の日時

ユーザーのタイムゾーンが判明している場合、システムプロンプトにはタイムゾーンのみを含む Current Date & Time セクションが挿入されます。プロンプトキャッシュの安定性を保つため、時刻や時刻形式は含みません。

Time zone: America/Chicago

エージェントが現在時刻を必要とする場合は session_status ツールを使います。ステータスカードにタイムスタンプ行が含まれています。

システムイベント行(デフォルトはローカル時刻)

エージェントコンテキストに挿入されるキューイングされたシステムイベントには、メッセージエンベロープと同じタイムゾーン設定(デフォルト: ホストローカル)のタイムスタンプが付与されます。

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

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

{
  agents: {
    defaults: {
      userTimezone: "America/Chicago",
      timeFormat: "auto", // auto | 12 | 24
    },
  },
}
  • userTimezone — プロンプトコンテキストで使用するユーザーのローカルタイムゾーンを設定。
  • timeFormat — プロンプトでの12時間/24時間表示を制御。auto は OS の設定に従います。

時刻形式の自動検出

timeFormat: "auto" の場合、OpenClaw は OS の設定(macOS/Windows)を参照し、取得できない場合はロケールのフォーマットにフォールバックします。検出結果はプロセスごとにキャッシュされ、システムコールの繰り返しを回避します。

ツールペイロードとコネクタ(プロバイダー生時刻 + 正規化フィールド)

チャネルツールはプロバイダーのネイティブタイムスタンプを返し、一貫性のために正規化フィールドを追加します。

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

プロバイダーの生フィールドはそのまま保持されるため、情報は失われません。

  • Slack: API からのエポック形式文字列
  • Discord: UTC ISO タイムスタンプ
  • Telegram/WhatsApp: プロバイダー固有の数値/ISO タイムスタンプ

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

関連ドキュメント