首页 资讯 下载 教程 Skills 社群

OpenClaw 会话管理:作用域、重置与数据维护

会话作用域

session.scope 控制会话的隔离粒度:

{
  session: {
    scope: "per-sender"  // 每个用户一个独立会话
  }
}

DM 作用域

session.dmScope 进一步控制私聊场景的会话分组:

{
  session: {
    dmScope: "per-channel-peer"  // 每个频道+用户组合独立
  }
}

可选值:

  • main:所有 DM 共享一个会话
  • per-peer:每个用户独立
  • per-channel-peer:每个频道+用户组合独立(推荐多频道场景)

会话重置

定时重置

每天凌晨 4 点自动清空所有会话:

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

空闲重置

用户 60 分钟没有新消息后自动重置:

{
  session: {
    reset: {
      mode: "idle",
      idleMinutes: 60
    }
  }
}

按频道覆盖

某些频道可以使用不同的重置策略:

{
  session: {
    reset: {
      mode: "daily",
      atHour: 4
    },
    resetByChannel: {
      discord: { mode: "idle", idleMinutes: 10080 }  // Discord 一周不活跃才重置
    }
  }
}

手动重置触发词

用户在聊天中发送特定命令即可手动重置会话:

{
  session: {
    resetTriggers: ["/new", "/reset"]
  }
}

数据维护

会话历史会持续增长,需要配置维护策略避免磁盘占满:

{
  session: {
    store: "~/.openclaw/agents/default/sessions/sessions.json",
    maintenance: {
      mode: "warn",             // warn: 仅警告,prune: 自动清理
      pruneAfter: "30d",        // 30 天前的会话可被清理
      maxEntries: 500,          // 最大会话条目数
      rotateBytes: "10mb",      // 单文件超过 10MB 后轮转
      resetArchiveRetention: "30d",  // 重置归档保留 30 天
      maxDiskBytes: "500mb",    // 总磁盘上限
      highWaterBytes: "400mb"   // 触发清理的水位线
    }
  }
}

参数说明

  • modewarn 只记录警告日志,prune 自动删除过期数据
  • pruneAfter:超过此时间的会话数据可被自动清理
  • maxEntries:单个会话存储文件的最大条目数
  • maxDiskBytes:所有会话数据的磁盘上限
  • highWaterBytes:接近上限时触发主动清理

发送策略

控制哪些场景下 AI 可以主动发送消息:

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

上面的配置表示:默认允许发送,但禁止在 Discord 群组中主动发送消息。