跳转到内容

会话管理

OpenClaw 将对话组织为 会话。每条消息根据其来源——私信、群聊、定时任务等——被路由到一个会话。

来源行为
私信默认共享会话
群聊按群组隔离
房间/渠道按房间隔离
定时任务每次运行新会话
Webhooks按 Hook 隔离

默认情况下,所有私信共享一个会话以保持连贯性。这对于单用户设置来说没问题。

解决方案:

{
session: {
dmScope: "per-channel-peer", // isolate by channel + sender
},
}

其他选项:

  • main(默认)——所有私信共享一个会话。
  • per-peer——按发送者隔离(跨渠道)。
  • per-channel-peer——按渠道 + 发送者隔离(推荐)。
  • per-account-channel-peer——按账户 + 渠道 + 发送者隔离。

使用 openclaw security audit 验证您的设置。

会话会被重复使用,直到过期:

  • 每日重置(默认)——网关主机当地时间凌晨 4:00 开始新会话。
  • 闲置重置(可选)——一段不活动时间后开始新会话。设置 session.reset.idleMinutes
  • 手动重置——在聊天中输入 /new/reset/new <model> 也会 切换模型。

当同时配置了每日重置和闲置重置时,以先到期的为准。

所有会话状态均由 网关 拥有。UI 客户端向网关查询会话数据。

  • 存储: ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • 记录: ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl

OpenClaw 会随着时间的推移自动限制会话存储。默认情况下,它运行于 warn 模式(报告将被清理的内容)。将 session.maintenance.mode 设置为 "enforce" 以启用自动清理:

{
session: {
maintenance: {
mode: "enforce",
pruneAfter: "30d",
maxEntries: 500,
},
},
}

使用 openclaw sessions cleanup --dry-run 进行预览。

  • openclaw status — 会话存储路径和最近活动。
  • openclaw sessions --json — 所有会话(使用 --active <minutes> 过滤)。
  • 聊天中的 /status — 上下文使用情况、模型和开关。
  • /context list — 系统提示词中的内容。