会话作用域
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" // 触发清理的水位线
}
}
}
参数说明
mode:warn只记录警告日志,prune自动删除过期数据pruneAfter:超过此时间的会话数据可被自动清理maxEntries:单个会话存储文件的最大条目数maxDiskBytes:所有会话数据的磁盘上限highWaterBytes:接近上限时触发主动清理
发送策略
控制哪些场景下 AI 可以主动发送消息:
{
session: {
sendPolicy: {
default: "allow",
rules: [
{ action: "deny", match: { channel: "discord", chatType: "group" } }
]
}
}
}
上面的配置表示:默认允许发送,但禁止在 Discord 群组中主动发送消息。