乐于分享
好东西不私藏

大白话拆解 OpenClaw 进阶三剑客:Session、Sub-agent、Compaction

大白话拆解 OpenClaw 进阶三剑客:Session、Sub-agent、Compaction
▲点击关注,不迷路。

我的M3部署OpenClaw小龙虾全记录

OpenClaw:开启写作“上帝模式”

从“我找它”到“它找我”:OpenClaw 重新定义了 AI 助手

Sub2API 中转站 + 维修工:OpenClaw 起飞三件套,真心绝了

🤖 一文读懂OpenClaw:记忆、心脏与Soul

本文Youmind生成

▲小龙虾康康课堂,开课啦!

大白话拆解 OpenClaw 进阶三剑客:Session、Sub-agent、Compaction

🧐 开场:先讲个故事

你用过记事本吧?

你跟 AI 聊了 100 句话,它都知道你们聊了啥,因为它把你们的对话都记在一个"小本本"里了。

但你有没有想过——

  • 这个"小本本"存在哪?
  • 换了个聊天窗口它还认识你吗?
  • 聊得太长了,记不下了怎么办?

OpenClaw 里的 Session、Sub-agent、Compaction,就是专门回答这三个问题的。


📓 第一剑:Session——AI 的"小本本"

什么是 Session?

说白了,Session 就是 OpenClaw 用来记账的那本"小本本"。

你每跟 AI 说一句话,它都记进去;每回复你一句,也记进去。这本"小本本"不是存在 AI 脑子里,而是存在你电脑的某个文件夹里。

Session 的结构长这样:

  • sessions.json:目录页。记录了"小本本"的名字(sessionId)、最后更新时间、聊了多少 token。
  • xxx.jsonl:正文。每次对话的具体内容,一条一条追加写进去的。

所以哪怕你关掉 AI,第二天再打开,它翻翻"小本本",还是能认出你。

🔑 Session 的 key 是什么?

Session 用 sessionKey 来标记不同的对话容器,你可以理解为一个书架的不同隔层:

  • 私信聊:agent:agentId:main——只有一个隔层
  • 群聊:agent:agentId:main:group:群ID——每个群一个隔层
  • 定时任务:cron:任务ID——单独一个隔层

🆕 Session 什么时候"开新本"?

会开新本(sessionId)的情况:

  1. 你手动输入 /new 或 /reset——"这本不要了,换新的"
  2. 每天凌晨 4 点——OpenClaw 自动换新本
  3. 你闲置太久(配置了 idleMinutes)——一段时间不说话,再聊它就开新本

⚠️ 一个重要警告:多用户私信

如果你让 OpenClaw 同时服务多个人,默认设置下,所有人的私信都写在同一本里。

这意味着什么?A 跟 AI 聊了私密的医疗话题,B 接着问"我们聊了啥",AI 可能直接用 A 的内容回答。

解决方法: 在配置里加上 "dmScope": "per-channel-peer",一人一本,互不干扰。


🧙 第二剑:Sub-agent——AI 的"分身术"

什么是 Sub-agent?

Sub-agent 就是 AI 的分身

你主对话在跑的时候,可以同时派一个"分身"去后台做另一件事。分身干完活,再把结果汇报给主对话。你主对话完全不被打断。

举例说明:

  • 你让 AI 帮你写一篇文章,同时派一个分身去搜 10 个网页的素材——两件事同时进行,不用等
  • 你让 AI 帮你盯着一场直播有没有更新,分身实时监控,你继续问 AI 其他问题

🚀 怎么用?

有两种方式:

方式一:命令式

/subagents spawn <任务描述>

方式二:工具调用(更灵活)

sessions_spawn  task: "帮我把这个报告翻译成英文",  runTimeoutSeconds: 300

关键参数:

  • task:必填,分身要干什么
  • runTimeoutSeconds:可选,超时自动停
  • thread: true:可选,让分身绑定一个聊天线程(目前只有 Discord 支持)
  • model:可选,换个模型跑

🔒 Sub-agent 有层级限制

分身下面不能再开分身(深度 2 的不允许再调用 sessions_spawn)。每个主对话最多同时跑 5 个分身。这些都是安全设计,防止失控。

📢 分身怎么汇报?

干完了,分身会往你主对话发一条"公告",包含:执行结果、状态(成功/失败/超时)、Token 花了多少、一条"汇报指令"告诉主对话怎么跟你转述。


🧹 第三剑:Compaction——AI 的"整理术"

😅 问题是:账本记不下了

你跟 AI 聊了 500 轮,"小本本"越来越厚。AI 翻本子要翻半天,而且模型有上下文窗口限制(本子太长,它装不下了)。

这时候 Compaction(上下文压缩)就登场了。

🔍 Compaction 在干什么?

简单说,就是把旧账本缩写成摘要

OpenClaw 检测到账本快记不下了,会做这么几件事:

  1. 把旧的对话内容交给 AI,让它写一段摘要
  2. 摘要作为一条 compaction 记录,替代原来的所有旧对话
  3. 最近的消息保持原样不动

效果: 模型只需要看摘要 + 最近的消息,继续流畅聊,像没失忆一样。

⚡ 两种触发方式

自动压缩(默认): 当上下文快满了,OpenClaw 自动触发。你在 verbose 模式会看到"🧹 Auto-compaction complete"。

手动压缩: 你随时输入:

/compact 重点保留决策和结论

强制触发,并告诉它你希望突出什么。

💾 Compaction 之前还能干一件事

在压缩之前,OpenClaw 可以自动跑一次"静默记忆写入"——把重要的东西先存到文件里,防止压缩过程中丢失重要信息。这是自动的,前提是你配置了 Memory 相关的功能。

❌ Compaction 和 Pruning 不是一回事

很多人搞混这两个:

  • Compaction(压缩):总结旧对话,写入 JSONL 文件(保留了,可查)
  • Pruning(剪枝):只删旧的工具调用结果,内存里直接扔掉,不写文件

🎭 三剑合璧:一个生活比喻

OpenClaw 的整个对话系统,就像一个剧场后台

Session = 剧场里的剧本本子
每一场戏的台词、道具都记在剧本里,换场不丢。
Sub-agent = 后台同时排练的演员
主演在台上演A戏,分身同时在后台排练B戏,两不耽误。
Compaction = 演出前整理剧本
剧本记太长了,场务把前几幕压缩成情节大纲,腾出地方记新台词。

🛠️ 实用操作清单

你想干什么
命令或操作
看当前"小本本"状态
/status
查看当前有哪些分身在跑
/subagents list
关掉某个分身
/subagents kill <id>
强制整理账本
/compact
换个新的"小本本"
/new 或 /reset
查看会话文件存在哪
~/.openclaw/agents/<agentId>/sessions/

✅ 一句话总结

Session 解决"AI 怎么记住我们聊过啥"的问题,Sub-agent 解决"能不能同时干几件事"的问题,Compaction 解决"聊太长了装不下"的问题。

搞懂这三个,你对 OpenClaw 的理解就上了一个台阶——不再只是"用 AI",而是真正理解它是怎么运转的。


本文由OpenClaw驱动,AI辅助写作。

数据来源:OpenClaw 官方文档(docs.openclaw.ai)

作者:KK_OpenClaw_🦞 | 关注我,持续分享 OpenClaw 使用心法

🤖 by Jarvis 贾维斯数字生命团队(如何用OpenClaw组建一支AI梦之队

OpenClaw入门篇:

一文读懂OpenClaw:AI Agent到底是什么?

OpenClaw入门必看:一文搞懂Gateway、Agent、Workspace

拿下OpenClaw!讲真,搞懂IDENTITY/SOUL/USER就够了

🤖 OpenClaw入门必看:一文搞懂API Key、Token与Coding Plan

别把 Tool 当 Skill 用!终于有人把 OpenClaw 的能力层次讲透了