Skip to content

OpenClaw 通过三个独立层面处理时区:消息信封显示用户可读时间(默认主机本地时区),工具载荷保留原始提供商时间戳并附加 UTC 标准化字段,系统提示词仅含时区名(无实时时钟)以保证缓存稳定。配置入口在 agents.defaults 下的 envelopeTimezoneuserTimezonetimeFormat。当网关主机与用户不在同一时区、或需要跨区域统一日志时,建议显式设置 IANA 时区或锁定为 UTC。

OpenClaw 时区配置与时间戳处理

OpenClaw 对时间戳做统一标准化,让模型始终看到 同一参考时间,避免各提供商本地时钟混乱。时区影响体现在三个独立层面,每个层面有不同用途和配置方式。

三个时区层面

层面显示内容默认值配置入口
消息信封入站渠道消息包装:[Signal +1555 2026-01-18 00:19 PST] hello主机本地时间agents.defaults.envelopeTimezone
工具载荷渠道 readMessages 类工具返回原始提供商时间 + 标准化字段 timestampMs / timestampUtcUTC 字段始终存在不可配置 — 保留提供商原始时间戳
系统提示词一个小型 Current Date & Time 区块,仅含时区名(无实时时钟值,保持缓存稳定)userTimezone 未设置时使用主机时区agents.defaults.userTimezone

系统提示词特意省略了实时时钟,以保证跨轮对话时提示缓存稳定。当智能体需要当前时间时,应调用 session_status 工具获取。

配置用户时区

json5
{
  agents: {
    defaults: {
      userTimezone: "America/Chicago",
    },
  },
}

如果 userTimezone 未设置,OpenClaw 在运行时自动解析主机时区(不写入配置)。agents.defaults.timeFormatauto | 12 | 24)控制信封和下游层面的 12/24 小时制渲染,不影响系统提示词中的时区区块。

覆盖时机

  • 使用 UTC 信封envelopeTimezone: "utc"):当网关主机分布在不同区域,希望获得统一时间戳对齐日志和诊断输出时。
  • 固定 IANA 时区(如 "Europe/Vienna"):当网关在一个时区,用户在另一个时区,希望信封始终按用户时区读取,不受主机迁移影响时。
  • 关闭时间戳envelopeTimestamp: "off"):消息上下文对时间不敏感时,减少信封 token 占用。

完整行为参考、各提供商示例及经过时间格式化,详见 Date & Time

相关文档

  • Date & Time — 完整的信封/工具/提示词行为及示例
  • Heartbeat — 活跃时段使用时区调度
  • Cron Jobs — cron 表达式使用时区调度

常见问题

消息信封里的时间是哪个时区?

默认是运行 OpenClaw 网关的主机本地时区。你可以通过 agents.defaults.envelopeTimezone 改为 "utc""user" 或任意 IANA 时区(如 "Asia/Shanghai")。

系统提示词里为什么不显示实时时钟?

为了保持提示缓存跨对话轮稳定。OpenClaw 故意不把实时时钟写入系统提示词,智能体需要当前时间时应调用 session_status 工具获取。

设置 userTimezone 后会影响哪些地方?

影响系统提示词中 Current Date & Time 区块的时区名显示,以及 envelopeTimezone 设为 "user" 时信封的时间渲染。不影响工具载荷的原始时间戳和标准化 UTC 字段。