0|Session 是什么
Session是 Agent 运行时状态的容器,封装了:
与 LLM 的对话历史
当前上下文(Context)中加载的文件和变量
工具调用的状态和结果缓存
该 Session 专属的资源配额和权限边界
Session 是 OpenClaw 实现"多任务并发"和"状态隔离"的基础单元。
1|Session 的生命周期
INIT → ACTIVE → IDLE → SUSPENDED → TERMINATED
2|sessions_spawn:Session 的分裂机制
sessions_spawn 是构建多代理系统的入口,从父 Session 分裂出子 Session,各子 Session 独立运行但共享父 Session 的上下文。
run vs session 模式:
run 模式
(一次性):子 Session 接收任务,执行完毕后返回结果,然后自动终止。适合独立的、边界清晰的任务。
session 模式
(持久化):子 Session 保持活跃,可接收后续消息,适合需要多轮交互的任务。
继承规则:
✅ 继承:workspace 目录访问权限、已加载的 Context 文件、模型配置
❌ 不继承:父 Session 的对话历史——这确保每个子任务的上下文干净、可控
3|亲和性:任务应该分配给哪个 Session
OpenClaw 使用**亲和性(Affinity)**机制确保相关任务落在同一个 Session 里,减少上下文加载的开销。
风险:如果一个 Session 处理了太多不相关的任务,上下文会变得臃肿,LLM 推理质量下降(context overflow)。系统会在超限时触发"session refresh",压缩或归档旧上下文。
4|三种隔离级别
| 共享(Shared) | ||||
| 软隔离(Soft) | ||||
| 完全隔离(Fully) |
5|资源控制
maxConcurrentSessions | |
runTimeoutSeconds | |
6|sessions_list 与 sessions_history
sessions_list:监控当前状态——检查僵尸 Session、监控系统负载、发现异常。
sessions_history:调试的核心工具——翻看完整历史,找到 LLM 推理偏差、工具调用参数错误、或 Approval 卡住的具体位置。
7|实际多代理场景示例
Copy
Session A 负责理解任务、分解任务、合并结果;Session B 和 C 平行分裂,分别处理不同子任务。如果 B 发现问题比预期多,可再分裂出 B1、B2 并行处理。
8|总结
OpenClaw Session 管理架构核心:
分裂(sessions_spawn)
:从父 Session 按需分裂子 Session,独立运行但可访问父级上下文
亲和性
:相关任务自然落在同一个 Session,减少上下文加载开销
三级隔离
:从共享到完全隔离,根据信任关系选择合适级别
资源控制
:并发数、运行时长、Token 配额、内存管理,防止资源耗尽
运维工具
:sessions_list 和 sessions_history 是生产环境调试的眼睛
夜雨聆风