🎬 先讲个故事:餐厅经理的"影分身"
📖 场景:网红火锅店爆单之夜
周六晚上8点,店里坐满了人,排队的还有30桌。
经理老王站在大堂中央,他突然大喊一声:"影分身之术!"
瞬间,10个老王出现了:
- 老王A去3号桌处理投诉(Session A)
- 老王B去7号桌推荐招牌菜(Session B)
- 老王C去厨房催菜(Session C)
- 老王D在前台接电话订位(Session D)
- 老王E-...(以此类推)
每个老王都在处理不同的事情,互相不知道对方在干什么,但他们共享同一个"老王知识库"——知道菜单、知道价格、知道店里WiFi密码。
区别在于:老王分身不会互相抢单,而Sub-agent不会互相抢CPU(希望如此)。
🧩 一句话解释(说人话版)
📦 Session = 对话房间 / 记忆空间
就像你和朋友的微信群聊,Session是AI和用户的专属对话空间。不同Session之间互相隔离,A不知道B说了什么。
👶 Sub-agent = 子代理 / AI分身
主Agent(你) spawning(召唤)出来的小Agent,帮你去干脏活累活。它们可以并行工作,最后把结果汇报给你。
简单记忆:Session是"房间",Sub-agent是"房间里的人"。一个房间可以有一个人(普通对话),也可以有多个人协作( spawning 子代理)。
🎮 更接地气的比喻:网吧开黑
想象你去网吧和朋友开黑打LOL:
🖥️ Session = 一台电脑
每台电脑都有自己的:
- 游戏画面(上下文)
- 操作记录(对话历史)
- 个人设置(记忆)
小明在5号机,小红在12号机,他们各自玩各自的,互不影响。
👥 Sub-agent = 代练/队友
你 spawning 的帮手:
- 代练A帮你打野(并行任务)
- 代练B帮你守塔(并行任务)
- 你自己在中路推线(主任务)
三个人同时打,最后推掉水晶(汇总结果)。
🔧 OpenClaw中的Session长什么样?
在OpenClaw的世界里,Session不是抽象概念,而是可以操控的实体:
💻 实战案例:Session的生命周期
# 场景:你在飞书群里@妙趣AI,问它今天的新闻
# Step 1: 创建Session(系统幕后操作)
Session ID: miaoquai_2026_04_10_a7f3k2
Context: 飞书群聊上下文
User: 诗中
Created: 2026-04-10 08:00:00
# Step 2: 对话进行(多轮交互共享上下文)
你:今天有什么AI新闻?
我:今天OpenClaw发布了...
你:详细说说那个功能
我:好的,那个功能是指...(记得你刚问的是哪个)
# Step 3: Session保持活跃
即使过了30分钟,Session还在
你:刚才那个功能怎么安装?
我:你说的是OpenClaw的xxx功能...(仍然记得上下文)
# Step 4: Session结束
- 用户主动关闭对话
- 超时(比如2小时无交互)
- 系统清理
# ❌ 如果Session断了...
你:刚才那个功能怎么安装?
我:什么功能?(一脸懵逼)
🚀 Sub-agent:AI的影分身之术
Sub-agent是主Agent spawning 出来的"子任务执行者"。当你有一个大任务,可以拆成多个小任务并行处理时,Sub-agent就派上用场了:
📰 实战案例:批量生成SEO页面
# 任务:生成10个AI工具的SEO页面
# 主Agent(你)的策略:
"这个任务可以并行, spawning 5个子代理同时干!"
# Spawning Sub-agents:
Sub-agent 1 → 生成 "ChatGPT教程" 页面
Sub-agent 2 → 生成 "Claude教程" 页面
Sub-agent 3 → 生成 "Midjourney教程" 页面
Sub-agent 4 → 生成 "Stable Diffusion教程" 页面
Sub-agent 5 → 生成 "Runway教程" 页面
# 5分钟后,5个Sub-agents同时返回结果
# 总耗时 = 最慢那个的时间(而不是5个串行的时间)
# 主Agent汇总:
"5个页面都生成好了,我去更新sitemap..."
📊 Session vs Sub-agent:一张表看懂
📁 Session(会话)
- 存储对话上下文
- 隔离不同用户的对话
- 有时效性(会过期)
- 被动存在(用户发起)
- 类比:微信聊天窗口
👤 Sub-agent(子代理)
- 执行具体任务
- 可以并行多个实例
- 任务完成就结束
- 主动 spawning(Agent发起)
- 类比:临时雇佣的帮手
🎯 什么时候用Sub-agent?
✅ 适合 spawning Sub-agent 的场景
- 批量处理:要处理100个文件 → spawning 10个子代理,每人10个
- 并行查询:要查5个不同网站 → spawning 5个子代理同时查
- 复杂任务拆解:写代码+测试+写文档 → 3个子代理各干各的
- 隔离风险:不确定会不会出错的操作 → 让子代理去试,主代理保底
❌ 不适合 spawning Sub-agent 的场景
- 简单任务:就写一句话, spawning 子代理反而 overhead 太高
- 强依赖:步骤B必须等步骤A完成 → 并行不了,串行执行即可
- 资源紧张:服务器只有1核1G → spawning 子代理会卡死
- 需要全局上下文:子代理看不到其他子代理的中间结果(除非设计好通信)
🛠️ OpenClaw实战: spawning Sub-agent
⚙️ 实战代码:批量生成新闻摘要
# 主Agent策略:
"有5条新闻要处理, spawning 5个子代理并行摘要!"
# 使用 sessions_spawn 工具:
Task 1 → Sub-agent A:
sessions_spawn(
task="摘要新闻1: OpenClaw新功能发布...",
runtime="subagent"
)
Task 2 → Sub-agent B:
sessions_spawn(
task="摘要新闻2: GPT-5 rumors...",
runtime="subagent"
)
# ... 以此类推 5 个
# 等待所有子代理完成
# 收集结果,汇总输出
结果:[摘要1, 摘要2, 摘要3, 摘要4, 摘要5]
总耗时:~30秒(并行)
# 如果串行执行?
# 总耗时:~150秒(5倍时间)
🕳️ 踩坑实录:Session和Sub-agent的坑
🕳️ 坑1:Session过期导致"失忆"
用户过了2小时回来问"刚才说的那个方案呢?",结果Session已经超时,AI一脸懵逼。
解决:重要信息持久化到数据库或文件,不要依赖Session长期保存。
🕳️ 坑2:Sub-agent死循环
子代理 spawning 了孙代理,孙代理 spawning 了曾孙代理...无限套娃,服务器卡死。
解决:设置 spawning 深度限制(如最多3层),或者禁止子代理 spawning 新代理。
🕳️ 坑3:Sub-agent结果丢失
spawning 了5个子代理,但主代理没正确收集结果,只拿到了3个的返回值。
解决:使用 Promise.all 或类似的并发等待机制,确保所有子代理完成后再继续。
🕳️ 坑4:资源争抢
spawning 太多子代理同时写同一个文件,结果文件内容乱成一锅粥。
解决:要么让子代理写不同文件再合并,要么加锁机制确保串行写入。
🏁 总结一下(人话版)
📝 核心要点(建议背诵)
- Session = 对话房间——隔离不同用户的上下文,有时会过期
- Sub-agent = AI分身——并行执行任务,提高整体效率
- Session是"空间概念",Sub-agent是"执行单元"
- 一个Session里可以有多个Sub-agent协作
- Sub-agent适合并行任务,不适合强依赖任务
- spawning 子代理要控制数量,否则资源爆炸
- 重要信息要持久化,Session会丢
🎯 现在你该懂了:Session是房间,Sub-agent是帮手
看完这篇,别再混淆这两个概念啦!