一、读懂会话(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 消息路由流程
网关收到消息后,按规则匹配会话:
- 识别消息来源渠道
- 识别发送方联系人 ID
- 检索对应会话文件
- 存在则继续对话,不存在则自动创建新会话
核心特性:
- 同渠道 + 同用户:固定复用一个会话
- 同用户 + 不同渠道:生成独立会话,内容完全隔离
- 不同用户 + 同渠道:各自独享会话
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 重要注意事项
- 修剪不可逆,删除后无法恢复,务必先用
--dry-run预览; - 正在活跃的会话不会被清理;
- 重要会话提前手动备份:
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 长期记忆:
- 某渠道告知 AI 个人信息、固定需求,写入长期记忆
- 切换其他渠道,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
十、总结
- 会话是对话的基础单元,以 JSONL 文件本地存储,按「渠道 + 联系人」生成唯一 ID;
- 自动压缩解决长对话上下文溢出与成本问题,细节内容会被精简,重要信息建议存入长期记忆;
- 会话修剪用于清理老旧数据,释放磁盘空间,操作前务必预览、备份重要记录;
- 多渠道会话天然隔离,跨渠道共享信息依靠
MEMORY.md; /new新建会话、/reset清空当前会话,根据是否保留历史记录选择使用;- 搭配定时任务、阈值调优、文件监控,实现会话全自动运维。
合理管理会话,既能让 AI 对话流畅稳定,又能精准控制开销、有序管理所有历史对话。