Appearance
Session 管理
OpenClaw 将对话组织成会话(Session),每条消息根据来源——DM、群聊、定时任务等——路由到对应会话。
消息路由规则
| 来源 | 行为 |
|---|---|
| 私信(DM) | 默认共享一个会话 |
| 群聊 | 每个群组独立会话 |
| Room/频道 | 每个 Room 独立会话 |
| Cron 任务 | 每次运行新开会话 |
| Webhook | 每个 Hook 独立会话 |
DM 隔离(多用户必读)
默认情况下,所有 DM 共享同一个会话,方便单人使用。
警告:如果多人可以给你的 agent 发消息,必须开启 DM 隔离。不开启时,所有用户共享同一个对话上下文——Alice 的私信会暴露给 Bob。
修复方法:
json5
{
session: {
dmScope: "per-channel-peer", // 按 channel + 发送者隔离(推荐)
},
}其他选项:
| 值 | 说明 |
|---|---|
main(默认) | 所有 DM 共享一个会话 |
per-peer | 按发送者隔离(跨 channel) |
per-channel-peer | 按 channel + 发送者隔离(推荐) |
per-account-channel-peer | 按 account + channel + 发送者隔离 |
提示:如果同一个人从多个 channel 联系你,可用
session.identityLinks关联其身份,让他们共享一个会话。
配置完后用 openclaw security audit 验证。
会话生命周期
会话会复用直到过期:
- 每日重置(默认):gateway 主机本地时间凌晨 4 点开新会话
- 空闲重置(可选):一段时间不活跃后开新会话,设置
session.reset.idleMinutes - 手动重置:在聊天中输入
/new或/reset;/new <model>同时切换模型
同时配置每日和空闲重置时,先到期的生效。
状态存储位置
所有会话状态由 gateway 管理,UI 客户端向 gateway 查询会话数据:
- 存储:
~/.openclaw/agents/<agentId>/sessions/sessions.json - 记录:
~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
会话自动维护
OpenClaw 自动控制会话存储规模。默认运行在 warn 模式(仅报告会清理什么)。设置 session.maintenance.mode 为 "enforce" 开启自动清理:
json5
{
session: {
maintenance: {
mode: "enforce",
pruneAfter: "30d",
maxEntries: 500,
},
},
}预览清理计划:openclaw sessions cleanup --dry-run
检查会话状态
bash
openclaw status # 会话存储路径和近期活动
openclaw sessions --json # 所有会话(用 --active <分钟数> 过滤)
/status # 聊天中查看上下文用量、模型、开关
/context list # 查看系统 prompt 内容FAQ
Q:会话文件在哪里,可以备份吗? 在 ~/.openclaw/agents/<agentId>/sessions/ 下,.jsonl 文件就是完整记录,可直接备份。
Q:多少天没用的会话会被清理? 默认不自动清理(warn 模式),设置 enforce 后按 pruneAfter 参数(如 30d)清理。
延伸阅读
- Session Pruning — 修剪工具结果
- Compaction — 总结长对话
- Session Tools — 跨会话 agent 工具
- Multi-Agent — 多 agent 路由与会话隔离
- Background Tasks — 后台任务与会话的关联
- 渠道路由 — 入站消息如何路由到会话