会话管理
Clawdbot 通过会话 (Session) 系统组织对话,将不同的通信渠道映射到隔离或共享的对话上下文。
核心概念
会话键和路由
会话通过唯一的键来标识:
- 私聊: 遵循
dmScope设置 (默认共享main会话) - 群聊: 使用独立的会话键,格式为
agent:<agentId>:<channel>:group:<id>
网关权威性
所有会话状态由网关拥有:
"All session state is owned by the gateway."
UI 客户端通过网关查询会话列表和令牌计数,而不是直接读取本地文件。
会话配置
dmScope 设置
控制私聊消息的会话分组:
{
dmScope: "main" // 所有私聊共享主会话 (默认)
// 或
dmScope: "per-peer" // 每个联系人独立会话
// 或
dmScope: "per-channel-peer" // 每个渠道的每个联系人独立会话
}重置策略
配置会话自动重置:
{
session: {
// 每日重置时间 (默认凌晨 4 点)
resetTime: "04:00",
// 空闲超时重置 (秒)
idleTimeout: 3600,
// 按类型配置
resetByType: {
dm: { idleTimeout: 7200 },
group: { idleTimeout: 1800 }
},
// 按渠道配置
resetByChannel: {
telegram: { resetTime: "00:00" }
}
}
}身份链接
将跨平台的身份映射到同一会话:
{
identityLinks: [
{
// 同一个人在不同平台的账号
ids: [
"telegram:123456789",
"whatsapp:+15551234567",
"discord:987654321"
],
// 共享会话
sharedSession: true
}
]
}会话命令
用户命令
用户可以在聊天中使用以下命令:
/new # 开始新会话
/reset # 重置当前会话
/new claude # 使用特定模型开始新会话CLI 命令
# 列出所有会话
clawdbot sessions list
# 查看会话详情
clawdbot sessions show <session-id>
# 删除会话
clawdbot sessions delete <session-id>
# 导出会话历史
clawdbot sessions export <session-id> --format json会话生命周期
创建 → 活跃 → 空闲 → 重置/过期
│ │
└──────── 手动重置 ─────┘创建时机
- 首次收到消息
- 用户使用
/new命令 - 自动重置后
重置触发
- 达到每日重置时间
- 空闲超时
- 用户手动重置
- 管理员操作
高级配置
发送策略
阻止特定会话类型的消息发送:
{
sendPolicy: {
// 阻止发送到群聊
blocked: ["group"]
}
}历史限制
控制会话历史的大小:
{
session: {
// 最大消息数
maxMessages: 100,
// 最大令牌数
maxTokens: 50000,
// 压缩策略
compaction: "summarize"
}
}内存管理
{
memory: {
// 启用长期记忆
enabled: true,
// 记忆存储
store: "local",
// 记忆检索数量
retrieveCount: 5
}
}调试会话
查看会话状态
# 通过控制面板
http://127.0.0.1:18789/
# 或 CLI
clawdbot sessions show <session-id> --verbose会话日志
clawdbot logs --session <session-id> --follow