Technical reference

تاریخ و زمان

OpenClaw به‌طور پیش‌فرض از زمان محلی میزبان برای مهرهای زمانی انتقال و منطقه زمانی کاربر فقط در پرامپت سیستم استفاده می‌کند. مهرهای زمانی ارائه‌دهنده حفظ می‌شوند تا ابزارها معنای بومی خود را نگه دارند (زمان فعلی از طریق session_status در دسترس است).

پوشش‌های پیام (به‌طور پیش‌فرض محلی)

پیام‌های ورودی با یک مهر زمانی (با دقت دقیقه) پوشش داده می‌شوند:

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

این مهر زمانی پوشش، صرف‌نظر از منطقه زمانی ارائه‌دهنده، به‌طور پیش‌فرض محلیِ میزبان است.

می‌توانید این رفتار را بازنویسی کنید:

{
  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

پرامپت سیستم: تاریخ و زمان فعلی

اگر منطقه زمانی کاربر شناخته شده باشد، پرامپت سیستم یک بخش اختصاصی تاریخ و زمان فعلی را با فقط منطقه زمانی (بدون قالب ساعت/زمان) در بر می‌گیرد تا کش کردن پرامپت پایدار بماند:

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 از ترجیحات سیستم‌عامل پیروی می‌کند.

تشخیص قالب زمان (خودکار)

وقتی timeFormat: "auto" باشد، OpenClaw ترجیح سیستم‌عامل (macOS/Windows) را بررسی می‌کند و در صورت نبود، به قالب‌بندی locale برمی‌گردد. مقدار تشخیص‌داده‌شده برای هر فرایند کش می‌شود تا از فراخوانی‌های تکراری سیستم جلوگیری شود.

محموله‌های ابزار + رابط‌ها (زمان خام ارائه‌دهنده + فیلدهای نرمال‌شده)

ابزارهای کانال مهرهای زمانی بومی ارائه‌دهنده را برمی‌گردانند و برای یکدستی، فیلدهای نرمال‌شده اضافه می‌کنند:

  • timestampMs: میلی‌ثانیه‌های epoch (UTC)
  • timestampUtc: رشته UTC با قالب ISO 8601

فیلدهای خام ارائه‌دهنده حفظ می‌شوند تا چیزی از دست نرود.

  • Slack: رشته‌های شبیه epoch از API
  • Discord: مهرهای زمانی ISO با UTC
  • Telegram/WhatsApp: مهرهای زمانی عددی/ISO ویژه ارائه‌دهنده

اگر به زمان محلی نیاز دارید، آن را در پایین‌دست با استفاده از منطقه زمانی شناخته‌شده تبدیل کنید.

مستندات مرتبط