日付と時刻
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
システムプロンプト:現在の日付と時刻
ユーザータイムゾーンがわかっている場合、システムプロンプトには専用の現在の日付と時刻セクションが含まれ、プロンプトキャッシングを安定させるためにタイムゾーンのみ(時計/時刻フォーマットなし)が含まれます:
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の設定に従う。
時刻フォーマット検出(auto)
timeFormat: "auto"の場合、OpenClawはOSの設定(macOS/Windows)を検査し、ロケールフォーマットにフォールバックします。検出された値は、システムコールの繰り返しを避けるためにプロセスごとにキャッシュされます。
ツールペイロード+コネクター(生のプロバイダー時刻+正規化フィールド)
チャネルツールはプロバイダーネイティブタイムスタンプを返し、一貫性のために正規化されたフィールドを追加します:
- timestampMs:エポックミリ秒(UTC)
- timestampUtc:ISO 8601 UTC文字列
生のプロバイダーフィールドは保持されるため、何も失われません。
- Slack:APIからのエポック風文字列
- Discord:UTC ISOタイムスタンプ
- Telegram/WhatsApp:プロバイダー固有の数値/ISOタイムスタンプ
ローカル時刻が必要な場合は、既知のタイムゾーンを使用して下流で変換します。