深度

OpenClaw Session 管理深度指南:DM 隔离模式、重置策略与存储维护

OpenClaw Session 管理完整指南:DM 四种隔离模式(main/per-peer/per-channel-peer/per-account-channel-peer)、多用户安全警告与修复、跨频道身份关联(identityLinks)、每日/空闲/按类型/按频道差异化重置策略、Session 维护防止存储无限增长,以及发送策略配置。

2026/3/124分钟 阅读ClaudeEagle

Session 是 OpenClaw 中对话状态的核心载体。理解 Session 的隔离模式、生命周期和维护策略,对于多用户部署、多频道管理至关重要。

Session Key 映射规则

场景Session Key
DM(默认 main 模式)agent:<agentId>:main
DM(per-channel-peer)agent:<agentId>:<channel>:dm:<peerId>
群组/频道agent:<agentId>:<channel>:group:<id>
Telegram 论坛主题agent:<agentId>:telegram:group:<id>:topic:<threadId>
Cron 任务cron:<jobId>
Webhookhook:<uuid>

DM 隔离模式(dmScope)

控制不同用户的私信如何分组到 Session:

模式适用场景Session Key 格式
main(默认)单用户,所有 DM 共享上下文agent:<id>:main
per-peer多用户,按发送者隔离agent:<id>:dm:<peerId>
per-channel-peer多用户多频道,推荐agent:<id>:<channel>:dm:<peerId>
per-account-channel-peer多账号多频道agent:<id>:<channel>:<accountId>:dm:<peerId>

安全警告:多用户必须开启隔离

如果你的 Agent 可以接收多个用户的 DM,必须开启安全 DM 模式。

默认设置的安全问题:

  • Alice 向 Agent 说了私密内容
  • Bob 问「我们之前聊了什么?」
  • 因为共享同一 Session,Agent 可能用 Alice 的上下文回答 Bob

修复方法:

json
{
  "session": {
    "dmScope": "per-channel-peer"
  }
}

需要开启的场景:

  • 配对审批了多个用户
  • DM 白名单有多个条目
  • 设置了 dmPolicy: "open"
  • 多个手机号或账号可以发消息给 Agent
bash
# 验证 DM 安全配置
openclaw security audit

同一个人在多个频道发消息时,合并为同一个 Session:

json
{
  "session": {
    "dmScope": "per-channel-peer",
    "identityLinks": {
      "alice": ["telegram:123456789", "discord:987654321012345678"],
      "bob": ["whatsapp:+8613800138000", "slack:U1234567890"]
    }
  }
}

Session 重置策略

每日重置(默认)

默认每天 凌晨 4 点(Gateway 所在机器时区) 重置:

json
{
  "session": {
    "reset": {
      "mode": "daily",
      "atHour": 4
    }
  }
}

空闲重置

超过指定分钟无活动则重置:

json
{
  "session": {
    "reset": {
      "mode": "idle",
      "idleMinutes": 120
    }
  }
}

按类型差异化重置

json
{
  "session": {
    "resetByType": {
      "thread": { "mode": "daily", "atHour": 4 },
      "direct": { "mode": "idle", "idleMinutes": 240 },
      "group": { "mode": "idle", "idleMinutes": 120 }
    }
  }
}

按频道差异化重置

json
{
  "session": {
    "resetByChannel": {
      "discord": { "mode": "idle", "idleMinutes": 10080 }
    }
  }
}

手动重置命令

在对话中发送:

  • /new — 开启新 Session,可附带消息或模型切换(/new claude-opus-4-6)
  • /reset — 重置 Session
  • /stop — 中止当前运行,清除排队的跟进消息,停止所有子 Agent

Session 维护(防止存储无限增长)

默认配置

参数默认值说明
modewarn仅警告,不清理
pruneAfter30d超过 30 天的条目标记为过期
maxEntries500最大保留条目数
rotateBytes10mbsessions.json 超过此大小时轮转

生产环境推荐配置

json
{
  "session": {
    "maintenance": {
      "mode": "enforce",
      "pruneAfter": "45d",
      "maxEntries": 800,
      "rotateBytes": "20mb",
      "resetArchiveRetention": "14d"
    }
  }
}

大型部署(加硬盘上限)

json
{
  "session": {
    "maintenance": {
      "mode": "enforce",
      "pruneAfter": "14d",
      "maxEntries": 2000,
      "maxDiskBytes": "2gb",
      "highWaterBytes": "1.6gb"
    }
  }
}

手动触发维护

bash
# 预览(不执行)
openclaw sessions cleanup --dry-run
openclaw sessions cleanup --dry-run --json  # JSON 格式详细输出

# 执行清理
openclaw sessions cleanup --enforce

检查 Session 状态

bash
# 查看当前 Session 概览
openclaw status

# 列出所有 Session(JSON 格式)
openclaw sessions --json

# 仅显示最近活跃的 Session
openclaw sessions --active 60  # 60 分钟内活跃

# 在聊天中查看
/status          # 查看上下文用量、思考/详细模式等
/context list    # 查看系统提示和注入的工作区文件
/context detail  # 查看最大的上下文贡献者

发送策略(sendPolicy)

按 Session 类型屏蔽特定消息投递:

json
{
  "session": {
    "sendPolicy": {
      "rules": [
        { "action": "deny", "match": { "channel": "discord", "chatType": "group" } },
        { "action": "deny", "match": { "keyPrefix": "cron:" } }
      ],
      "default": "allow"
    }
  }
}

运行时覆盖(仅限所有者):

/send on /send off /send inherit

Session 存储位置

  • Store 文件:~/.openclaw/agents/<agentId>/sessions/sessions.json
  • 转录文件:~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl

Gateway 是 Session 状态的唯一真相来源。远程模式下,Session 存储在远程 Gateway 主机上。


原文:Session Management - OpenClaw | 来源:OpenClaw 官方文档

相关文章推荐

深度OpenClaw Session ID 生命周期规则:什么时候会开新会话,什么时候延续旧会话详解 OpenClaw sessionKey 与 sessionId 的区别,以及触发新会话的四种情形:手动重置、每日重置、空闲过期、父级分叉保护,附 Session Store 字段说明和 Cron 会话保留策略。2026/8/13深度OpenClaw 企业内网部署完全指南:多用户、权限隔离与安全加固OpenClaw 企业内网部署的完整方案:多用户架构设计(每人独立 Gateway vs 共享 Gateway 多 Agent)、allowedUsers 和 allowFrom 白名单配置、基于角色的权限控制、内网安全加固(沙箱隔离/exec 权限限制/网络出口控制)、与企业 SSO 集成的思路、审计日志配置、高可用部署(多实例/负载均衡/状态同步)、以及在完全内网环境(无公网)下部署本地模型(Ollama)的完整步骤。2026/3/21深度OpenClaw 会话管理深度指南:多用户隔离、重置规则与磁盘清理OpenClaw 会话管理完全指南:多用户场景 DM 隔离策略(per-channel-peer 防止信息泄露)、每日/空闲/按类型的重置规则、会话 Key 格式详解、磁盘清理配置(enforce 模式 + 容量上限),以及手动清理命令和发送策略。2026/3/1深度OpenClaw 计费故障处理机制:余额不足时系统怎么办,Backoff 退避策略详解详解 OpenClaw 账单/额度类故障处理机制:与普通限流超时不同,计费故障采用更长的指数退避(5小时起步翻倍至24小时封顶)并标记禁用,附三类故障处理力度对比表和多账号部署实战建议。2026/8/13深度OpenClaw Model Failover 完全解析:Auth Profile 怎么轮换,为什么你的 OAuth 账号会"莫名其妙"被切走详解 OpenClaw Model Failover 机制:Auth Profile 轮换顺序、Session Stickiness 会话粘性、指数退避冷却规则,解释多账号场景下 OAuth 与 API Key 切换的常见困惑及固定账号的配置方法。2026/8/13深度OpenClaw Context Engine 完全指南:四个生命周期钩子如何决定模型看到什么详解 OpenClaw 可插拔上下文引擎架构:Ingest/Assemble/Compact/After turn 四个生命周期钩子的工作原理,systemPromptAddition 动态注入机制,以及如何安装和配置自定义 Context Engine 插件。2026/8/12