加入我们的 Telegram 社群 (clawdbotCN) 学习分享和了解更多 →
核心概念
会话管理

会话管理

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

下一步