跟着OpenClaw学OpenClaw:Sessions:对话的管理者

admin 2026-03-05 19:46:54 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍了OpenClaw的Session系统,将其比作智能体操作系统中的核心管理单元。详细讲解了Session作为对话基本单位的概念、生命周期及存储结构。通过实操演示了如何使用CLI命令查看活跃Session及详情,并指出子代理功能可通过Cron任务实现隔离执行。文章辅以常见问题解答及课后练习,帮助用户掌握多对话上下文管理技巧,为后续开发奠定基础。 综合评分: 86 文章分类: AI安全,安全工具,实战经验


cover_image

跟着OpenClaw学OpenClaw: Sessions:对话的管理者

zyliang

2026年3月4日 21:13 北京

越来越感觉像是在学k8s。openclaw的workspace、session、agent、cron让我联想到k8s的namespace、pod、node、cronjob。包括openclaw的声明式设计、隔离机制、丰富的CLI等等。

如果说k8s是容器的操作系统,那么openclaw就是智能体的操作系统。

以下大部分文字为AI生成,仅用作学习记录

📌 导语

前几篇我们学会了让AI执行任务、定时提醒。但当你同时处理多个话题、让AI做不同的事时,对话会变得混乱。OpenClaw的Session系统,让你可以管理多个独立的对话上下文——每个任务一个会话,互不干扰。这篇教你理解Session的本质,以及如何创建和管理子代理。

前置要求:已完成第6篇,熟悉Cron定时任务。

📖 概念讲解

什么是Session

Session是OpenClaw中对话的基本单位。每一次你和AI的交互,都发生在一个Session里。Session保存了:

对话历史

上下文信息

关联的Channel

创建时间和状态

Session的生命周期

创建:用户发送第一条消息,或系统创建

活跃:持续交互,历史记录累积

休眠:一段时间无交互,进入休眠

结束:手动关闭或超时清理

什么是子代理(Sub-agent)

子代理是一个独立的Session,专门用于执行特定任务:

与主会话隔离,不影响当前对话

可以长时间运行(适合耗时任务)

可以并行执行多个子代理

完成后结果可以返回给主会话

🔧 动手实操

步骤1:查看当前活跃的Sessions

执行命令:

openclaw sessions list

步骤2:查看特定Session的详情–不支持

执行命令:

openclaw sessions info

root@iv-yeglp4e9kw5i3z4tce1x:~# openclaw sessions --json{  "path": "/root/.openclaw/agents/main/sessions/sessions.json",  "count": 10,  "activeMinutes": null,  "sessions": [    {  "key": "agent:main:main",                    // 会话标识:agent/主agent/主会话  "updatedAt": 1772615134650,                  // 最后更新时间戳(毫秒)  "ageMs": 17323,                              // 距离现在多久(毫秒)  "sessionId": "edea3770-c7b5-4fb4-bfc4-c3a155c59f28",  // UUID格式的会话ID  "systemSent": true,                          // 系统是否发送过消息  "abortedLastRun": false,                     // 上次运行是否被中断  "inputTokens": 1777,                         // 用户输入的token数  "outputTokens": 136,                         // AI输出的token数  "totalTokens": 35313,                        // 总会话token数(含历史)  "totalTokensFresh": true,                    // token计数是否最新  "model": "k2p5",                             // 使用的模型  "modelProvider": "kimi-coding",              // 模型提供商  "contextTokens": 262144,                     // 上下文窗口上限  "agentId": "main",                           // 所属agent  "kind": "direct"                             // 会话类型:直接对话    }}root@iv-yeglp4e9kw5i3z4tce1x:~#

root@iv-yeglp4e9kw5i3z4tce1x:~# cat /root/.openclaw/agents/main/sessions/edea3770-c7b5-4fb4-bfc4-c3a155c59f28.jsonl | head -5{"type":"session","version":3,"id":"edea3770-c7b5-4fb4-bfc4-c3a155c59f28","timestamp":"2026-03-04T05:43:15.804Z","cwd":"/root/.openclaw/workspace"}{"type":"model_change","id":"d85ef3c5","parentId":null,"timestamp":"2026-03-04T05:43:15.805Z","provider":"kimi-coding","modelId":"k2p5"}{"type":"thinking_level_change","id":"61d0c40d","parentId":"d85ef3c5","timestamp":"2026-03-04T05:43:15.805Z","thinkingLevel":"off"}{"type":"custom","customType":"model-snapshot","data":{"timestamp":1772602995806,"provider":"kimi-coding","modelApi":"anthropic-messages","modelId":"k2p5"},"id":"e00b89f1","parentId":"61d0c40d","timestamp":"2026-03-04T05:43:15.806Z"}{"type":"message","id":"8fa4ecc1","parentId":"e00b89f1","timestamp":"2026-03-04T05:43:15.810Z","message":{"role":"user","content":[{"type":"text","text":"System: [2026-03-04 13:43:15 GMT+8] Feishu[default] DM from ou_f1be989af29aa985f872d3bb80557750: 小K 你现在记得哪些和我相关的内容\n\n小K 你现在记得哪些和我相关的内容"}],"timestamp":1772602995809}}root@iv-yeglp4e9kw5i3z4tce1x:~#

步骤3:创建一个子代理任务

让子代理帮你搜索信息:

openclaw sessions spawn –task “搜索OpenClaw的最新更新” –channel feishu

无此命令,可以使用cron -add替代

步骤4:查看子代理的状态

执行命令:

openclaw subagents list

kimi-claw没有subagent的概念,通过多agent管理

❓ 常见问题

OpenClaw给出的问题都是和subagent相关的,环境里没找到

📝 小结与预告

今天我们学会了:

Session的基本概念和生命周期

如何查看和管理Sessions

创建和使用子代理执行独立任务

子代理与主会话的关系

关键命令速查:

openclaw sessions list — 查看所有会话

openclaw sessions info  — 查看会话详情

openclaw sessions spawn –task <内容> — 创建子代理

openclaw subagents list — 查看子代理列表

openclaw subagents kill  — 结束子代理

下篇预告:《动手写一个Skill》——深入了解Skill的结构,创建你的第一个自定义Skill。


课后练习

题目 1:查看 Agent

查看当前配置的所有 Agent,应该用什么命令?

答案:

openclawagentslist

题目 2:Session 查看命令

  • 查看所有 Session 用什么命令?

  • 只看最近1小时的 Session 用什么命令?

  • 以 JSON 格式查看 Session 详情用什么命令?

答案:

| 需求 | 命令 | | — | — | | 查看所有 Session | openclaw sessions | | 只看最近1小时 | openclaw sessions –active 60 | | JSON 格式 | openclaw sessions –json |

题目 3:Session Key 理解

agent:main:main 和 agent:main:cron:eda23347-f7e1-455e-891d-a191b2fca6a1 这两个 Session Key 有什么区别?分别代表什么?

答案:

| Key | 含义 | | — | — | | agent:main:main | 主会话,你和 AI 的直接对话 | | agent:main:cron:eda23347… | Cron 任务会话,cron: 后面是任务 ID |

题目 4:Session 文件位置

Session 的具体内容(消息记录)存储在哪个目录?文件名是什么格式?

答案:

  • 存储目录:/root/.openclaw/agents/main/sessions/

  • 文件名格式:.jsonl

  • 示例:edea3770-c7b5-4fb4-bfc4-c3a155c59f28.jsonl

题目 5:创建独立 Session 任务

你想创建一个5分钟后执行的提醒任务,让它在独立的 Session 中执行,不影响当前对话。应该怎么写命令?

答案:

openclawcronadd–name”reminder”–at”5m”–message”提醒内容”–channelfeishu

说明: Cron 任务会自动创建独立的 Session 执行,不影响当前对话。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:zyliang 《跟着OpenClaw学OpenClaw: Sessions:对话的管理者》

评论:0   参与:  0