OpenClaw 将对话组织为会话。每条消息都会根据来源路由到一个会话 — 私信、群聊、cron 任务等。Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
消息如何路由
| 来源 | 行为 |
|---|---|
| 直接消息 | 默认共享会话 |
| 群聊 | 按群组隔离 |
| 房间/渠道 | 按房间隔离 |
| Cron 任务 | 每次运行使用新会话 |
| 网络钩子 | 按钩子隔离 |
私信隔离
默认情况下,所有私信共享一个会话以保持连续性。这适合单用户设置。 修复方式:main(默认)— 所有私信共享一个会话。per-peer— 按发送者隔离(跨渠道)。per-channel-peer— 按渠道 + 发送者隔离(推荐)。per-account-channel-peer— 按账号 + 渠道 + 发送者隔离。
停靠已链接渠道
停靠命令允许用户将当前直接聊天会话的回复路由移动到另一个已链接渠道,而无需启动新会话。示例、配置和故障排除见渠道停靠。 使用openclaw security audit 验证你的设置。
会话生命周期
会话会被复用,直到过期:- 每日重置(默认)— 在 Gateway 网关主机本地时间凌晨 4:00 创建新会话。每日新鲜度基于当前
sessionId的开始时间,而不是后续元数据写入时间。 - 空闲重置(可选)— 在一段时间无活动后创建新会话。设置
session.reset.idleMinutes。空闲新鲜度基于最后一次真实的用户/渠道交互,因此 Heartbeat、cron 和 exec 系统事件不会让会话保持存活。 - 手动重置 — 在聊天中输入
/new或/reset。/new <model>还会切换模型。
/reset 或显式配置 session.reset。
状态存储位置
所有会话状态都由 Gateway 网关拥有。UI 客户端会向 Gateway 网关查询会话数据。- 存储:
~/.openclaw/agents/<agentId>/sessions/sessions.json - 转录:
~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
sessions.json 保留独立的生命周期时间戳:
sessionStartedAt:当前sessionId开始的时间;每日重置使用它。lastInteractionAt:最后一次延长空闲生命周期的用户/渠道交互。updatedAt:最后一次存储行变更;对列表展示和修剪很有用,但不是每日/空闲重置新鲜度的权威依据。
sessionStartedAt 的旧行会在可用时从转录 JSONL 会话头解析。如果旧行也缺少 lastInteractionAt,空闲新鲜度会回退到该会话开始时间,而不是后续簿记写入时间。
会话维护
OpenClaw 会随时间自动限制会话存储。默认情况下,它以warn 模式运行(报告本会清理的内容)。将 session.maintenance.mode 设为 "enforce" 可启用自动清理:
maxEntries 限制,Gateway 网关运行时写入会使用一个小型高水位缓冲区,并分批清理回配置的上限。会话存储读取不会在 Gateway 网关启动期间修剪或限制条目。这样可以避免每次启动或隔离的 cron 会话都运行完整存储清理。openclaw sessions cleanup --enforce 会立即应用上限。
维护会保留持久的外部对话指针,包括群组会话和线程范围聊天会话,同时仍允许合成的 cron、钩子、Heartbeat、ACP 和子智能体条目老化淘汰。
使用 openclaw sessions cleanup --dry-run 预览。
检查会话
openclaw status— 会话存储路径和近期活动。openclaw sessions --json— 所有会话(使用--active <minutes>过滤)。- 聊天中的
/status— 上下文使用量、模型和开关。 /context list— 系统提示中的内容。
延伸阅读
- 会话修剪 — 裁剪工具结果
- 压缩 — 总结长对话
- 会话工具 — 用于跨会话工作的智能体工具
- 会话管理深度解析 — 存储架构、转录、发送策略、来源元数据和高级配置
- 多智能体 — 跨智能体的路由和会话隔离
- 后台任务 — 分离式工作如何创建带有会话引用的任务记录
- 渠道路由 — 入站消息如何路由到会话