Content
OpenClaw 的会话(Session)模型设计用于不同的任务场景,主要分为 isolated(隔离会话) 和 main(主会话) 两种。
isolated 会话 通过命令行参数 --message(即注入 agentTurn 事件)触发。它是一个临时会话,任务执行完毕后立即销毁。此模式支持指定模型(--model)、设置超时(--timeout),并能将结果自动投递到外部系统如 Telegram(--announce),但不会保留对话上下文,用户无法直接回复。
main 会话 则通过 --system-event 参数(注入 systemEvent 事件)触发。它是一个长期存在的会话,旨在维持连续的对话上下文,允许用户进行多轮交互,但不支持指定模型、设置超时或自动通知。
关键版本行为(基于 v2026.3.13):在该版本中,向 main 会话发送 systemEvent 无法唤醒 agent 处理任务。因此,所有需要实际执行并通知的定时任务(如 cron job),目前必须使用 isolated 会话配合 agentTurn 和 announce 参数。
历史背景与迭代性:这一现状是快速迭代的结果。在 v2026.3.11 之前,isolated 模式的功能不完善,主要依赖 main 会话;而在 v2026.3.11 修复 isolated 模式后,main 会话的定时触发功能反而失效。这表明 OpenClaw 的会话机制仍在演变中,当前的最佳实践可能随版本更新而改变。
Question
- OpenClaw 为什么要区分 main 和 isolated session?这和操作系统的进程/线程模型有什么类比?
- systemEvent 在 v2026.3.11+ “不再触发 agent 处理”的根本原因是什么?是设计变更还是 bug?
- 有没有可能实现”isolated 执行 + main session 上下文感知”的混合模式?
See Also
Reference
- 来源:2026-03-20 Ghost-in-the-Shell cron 系统改造,尝试 main session 后全面回退
- OpenClaw 版本:v2026.3.13
YoYo’s Note
OpenClaw 的两种 Session 模式:
| isolated | main | |
|---|---|---|
| payload | --message(agentTurn) | --system-event(systemEvent) |
| 生命周期 | 执行完即销毁 | 持续存在,多次复用 |
| 支持 —model | ✅ | ❌ |
| 支持 —timeout | ✅ | ❌ |
| 支持 —announce | ✅(自动投递到 Telegram) | ❌ |
| 用户可回复 | ❌(无上下文) | ✅(有完整对话历史) |
关键发现(v2026.3.13): main + systemEvent 不触发 agent 处理——消息注入了但 agent 不醒来。这意味着 main session 的 cron 任务实际上无法执行。所有需要投递消息的任务必须用 isolated + agentTurn + announce。
历史演变:
- v2026.3.11 前:isolated 模式 agent 工具不可用,只能用 main + systemEvent
- v2026.3.11+:isolated 模式修复,main + systemEvent 反而不再触发处理
- 结论:OpenClaw 的 session 机制在快速迭代中,不要依赖未验证的行为