一、读懂会话(Session):对话的核心载体

在 OpenClaw 里,会话就是你和 AI 完整的对话窗口,每个会话拥有独立上下文。不同会话之间记忆、记录完全隔离,类比日常聊天软件窗口:单独存档、互不串话、数据本地留存。

熟练掌握会话管理,既能规避上下文溢出、控制 Token 成本,也能有序整理历史对话、释放磁盘空间。

二、会话存储:文件结构与查看方式

所有会话数据本地持久化,统一采用 JSONL 格式存储,读写高效、方便调试。

2.1 目录结构

plaintext

~/.openclaw/agents/你的智能体ID/sessions/
├── 会话ID.jsonl
├── 会话ID.jsonl
└── ...

每一个 .jsonl 文件 = 一个独立会话,每行对应单条聊天消息。

2.2 常用查看指令

bash

运行

# 进入会话目录查看所有会话文件
ls ~/.openclaw/agents/default/sessions/

# 查看单条会话完整聊天内容
cat ~/.openclaw/agents/default/sessions/会话ID.jsonl

# 统计当前会话总数量
ls ~/.openclaw/agents/default/sessions/ | wc -l

2.3 JSONL 消息格式说明

单条消息标准结构,包含角色、内容、时间、Token 消耗等核心字段:

json

// 用户消息
{
  "role": "user",
  "content": "帮我写一段脚本",
  "timestamp": "2025-06-14T14:20:00Z"
}

// AI 回复消息
{
  "role": "assistant",
  "content": "这里为你编写示例代码...",
  "timestamp": "2025-06-14T14:20:08Z",
  "tokens": {
    "input": 120,
    "output": 260
  }
}

JSONL 优势:新消息直接追加至文件末尾、支持流式读取、纯文本格式可直接编辑排查问题。

三、会话 ID 与路由规则

3.1 会话 ID 生成逻辑

会话 ID 由 渠道 + 渠道标识 + 联系人标识 组合而成,是区分会话的唯一凭证:

会话ID = 渠道类型:渠道标识:联系人标识

示例:

  • Telegram 用户:telegram:bot123:alice
  • WhatsApp 手机号:whatsapp:myphone:8613800001111
  • 网页端匿名用户:webchat:default:anonymous-abc123

3.2 消息路由流程

网关收到消息后,按规则匹配会话:

  1. 识别消息来源渠道
  2. 识别发送方联系人 ID
  3. 检索对应会话文件
  4. 存在则继续对话,不存在则自动创建新会话

核心特性:

  • 同渠道 + 同用户:固定复用一个会话
  • 同用户 + 不同渠道:生成独立会话,内容完全隔离
  • 不同用户 + 同渠道:各自独享会话

3.3 多智能体路由绑定

多智能体场景下,可通过 bindings 把指定渠道 / 用户分流到对应 Agent,会话目录相互独立:

json

{
  "agents": {
    "list": [
      {
        "id": "work-agent",
        "bindings": [{"channel": "telegram", "peer": "@alice"}]
      },
      {
        "id": "life-agent",
        "bindings": [{"channel": "whatsapp"}]
      }
    ]
  }
}

如上配置:Telegram 的 @alice 接入办公智能体,所有 WhatsApp 消息接入生活智能体。

四、会话自动压缩(Compaction):解决上下文溢出

对话不断变长会触发两大问题:超出模型上下文窗口、API 成本飙升,自动压缩是核心优化方案。

4.1 压缩运行原理

将早期大量历史对话合并为一段精简摘要,保留核心信息、砍掉冗余细节,腾出上下文空间:

plaintext

压缩前:[消息1][消息2]...[消息50][消息51][消息52] (Token 即将超限)
压缩后:[1-50条摘要][消息51][消息52] (空间恢复充足)

流程:检测阈值 → 摘要历史消息 → 摘要替换原始内容 → 保留近期对话保证连贯性。

4.2 压缩完整配置

编辑 ~/.openclaw/openclaw.json 自定义规则:

json

{
  "compaction": {
    "enabled": true,
    "threshold": 0.75,
    "keepRecent": 10
  }
}

表格

参数作用默认值
enabled开启 / 关闭自动压缩true
threshold上下文占用触发阈值(0~1)0.75(75%)
keepRecent压缩时保留最新消息条数10

4.3 压缩带来的影响

✅ 保留:对话主题、关键结论、重要决策

❌ 丢失:细节描述、中间试错过程、零散话术

补救方案:重要信息、长期偏好存入 MEMORY.md 长期记忆,不依赖会话历史。

五、会话修剪(Pruning):清理老旧会话、释放空间

长期使用会堆积大量无效历史会话,修剪功能可按时间批量删除过期文件。

5.1 基础修剪指令

bash

运行

# 预览:查看30天前将被清理的会话(不实际删除,推荐先执行)
openclaw sessions prune --older-than 30d --dry-run

# 正式删除30天前的会话
openclaw sessions prune --older-than 30d

# 删除7天前会话
openclaw sessions prune --older-than 7d

# 单独清理指定智能体的旧会话
openclaw sessions prune --older-than 14d --agent work-agent

5.2 重要注意事项

  1. 修剪不可逆,删除后无法恢复,务必先用 --dry-run 预览;
  2. 正在活跃的会话不会被清理;
  3. 重要会话提前手动备份:

bash

运行

cp 会话ID.jsonl ~/openclaw-session-backup/

六、全功能 CLI 命令:手动管理会话

6.1 查看会话列表

bash

运行

# 列出当前所有会话
openclaw sessions list

# 查看指定智能体会话
openclaw sessions list --agent work-agent

# 表格格式展示(直观查看渠道、最后活跃时间)
openclaw sessions list --format table

6.2 查看单条会话历史

bash

运行

# 查看完整对话记录
openclaw sessions history 会话ID

# 仅展示最近20条消息
openclaw sessions history 会话ID --limit 20

# 导出为标准JSON格式
openclaw sessions history 会话ID --format json

6.3 会话数据统计

bash

运行

openclaw sessions stats

可查看:总会话数、7 天活跃会话、磁盘占用、最早会话时间等信息。

七、多渠道会话隔离 & 跨渠道信息共享

7.1 隔离特性

同一位用户在不同聊天渠道(Telegram/WhatsApp/ 微信等),会话完全独立

  • 各渠道上下文互不干扰,不会串话题
  • 单独存储、单独统计 Token
  • 隐私性更强,工作 / 生活对话天然分隔

7.2 跨渠道共享信息

会话本身隔离,如需多渠道共用数据,使用 MEMORY.md 长期记忆

  1. 某渠道告知 AI 个人信息、固定需求,写入长期记忆
  2. 切换其他渠道,AI 可直接读取记忆内容

八、两大快捷指令:/new 与 /reset

聊天窗口内直接输入指令,快速重置对话,二者用法区分明确。

8.1 /new 开启全新会话

  • 生成全新会话 ID
  • 原有聊天文件完整保留,不删除
  • 上下文清空,从头开始对话 适用场景:切换全新话题、保留历史记录。

8.2 /reset 重置当前会话

  • 沿用原有会话 ID
  • 清空当前会话所有聊天记录
  • 等价于清空当前窗口聊天内容 适用场景:当前对话混乱,想清空记录但保留同一会话。

8.3 指令对比

表格

对比项/new/reset
会话 ID新建保持不变
历史记录磁盘永久保留直接清除
上下文全新空白全新空白
记忆 / 人设正常生效正常生效

九、高阶实用技巧

9.1 自动定时清理会话

配置定时任务,每周自动清理过期会话,无需手动维护:

bash

运行

# 每周日凌晨0点,自动删除30天前会话
openclaw cron add "0 0 * * 0" "openclaw sessions prune --older-than 30d"

9.2 监控会话磁盘占用

bash

运行

# 查看所有会话目录总大小
du -sh ~/.openclaw/agents/*/sessions/

# 查看体积最大的10个会话文件
ls -lhS ~/.openclaw/agents/default/sessions/ | head -10

9.3 调整压缩规则,优化记忆效果

AI 频繁遗忘细节时,放宽压缩限制,保留更多原始对话:

json

{
  "compaction": {
    "threshold": 0.85,
    "keepRecent": 20
  }
}

提示:阈值越高、保留消息越多,Token 消耗会相应增加,按需平衡。

9.4 导出会话做备份 / 复盘

bash

运行

openclaw sessions history 会话ID --format json > 会话备份.json

十、总结

  1. 会话是对话的基础单元,以 JSONL 文件本地存储,按「渠道 + 联系人」生成唯一 ID;
  2. 自动压缩解决长对话上下文溢出与成本问题,细节内容会被精简,重要信息建议存入长期记忆;
  3. 会话修剪用于清理老旧数据,释放磁盘空间,操作前务必预览、备份重要记录;
  4. 多渠道会话天然隔离,跨渠道共享信息依靠 MEMORY.md
  5. /new 新建会话、/reset 清空当前会话,根据是否保留历史记录选择使用;
  6. 搭配定时任务、阈值调优、文件监控,实现会话全自动运维。

合理管理会话,既能让 AI 对话流畅稳定,又能精准控制开销、有序管理所有历史对话。