跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScriptNode.jsAI

OpenClaw 多会话管理与子代理功能详解

OpenClaw 多会话管理支持主会话与子代理协作模式。主会话负责核心交互,子代理处理独立任务如代码审查或资料搜集。通过命令行和 API 可实现会话创建、切换、状态监控及销毁。会话间上下文隔离,支持消息传递与数据共享。涵盖并行代码审查、资料搜集创作、定时任务监控等实战案例。提供会话链、持久化、模型差异化等高级技巧及错误处理方案。建议合理划分会话、控制子代理数量并及时清理资源以提升效率。

道系青年发布于 2026/4/9更新于 2026/5/2114 浏览
OpenClaw 多会话管理与子代理功能详解

前言

在 AI 助手基础部署与技能开发完成后,若需让 AI 同时处理多项任务,如并行代码编写、资料查询及消息回复,OpenClaw 的多会话管理与子代理(Sub-agents)功能可实现从单兵作战到团队协作的升级。

一、什么是多会话?

1.1 会话的概念

会话(Session)是 AI 与用户的一次对话上下文。每次交互都会创建一个新的会话,用于记录聊天历史。

默认情况下,存在一个主会话(main session),即用户直接交互的会话。

1.2 为什么需要多会话?

多会话适用于以下场景:

  • 讨论项目 A 时突然涉及项目 B 的内容
  • 需要 AI 查询资料而不打断当前对话
  • 需同时执行多个独立任务

每个会话拥有独立的上下文,互不干扰。

1.3 会话类型

OpenClaw 中的会话主要分为:

  • 主会话(main):直接对话的会话
  • 子会话(sub-agent):由主会话创建的独立会话
  • 临时会话:执行特定任务后自动销毁

二、会话管理基础

2.1 查看会话列表

openclaw sessions list

输出示例:

Session ID Type Status Last Active
main:001 main active 2 minutes ago
sub:code-001 sub running 5 minutes ago
sub:research-001 sub idle 1 hour ago

2.2 创建新会话

openclaw session new --label=my-task

--label 参数用于命名会话以便识别。

2.3 切换到指定会话

openclaw session switch sub:code-001

2.4 查看会话状态

openclaw session status sub:code-001

输出包括运行时长、Token 使用量、模型信息及最后活跃时间。

2.5 结束会话

# 结束指定会话
openclaw session end sub:code-001
# 结束所有子会话
openclaw sessions end --all

三、子代理(Sub-agents)详解

3.1 什么是子代理?

子代理是主会话创建的下属 AI,具备独立上下文,可执行特定任务并向主会话汇报,不会干扰主会话对话。

3.2 子代理的工作流程

主会话 → 创建子代理 → 分配任务 → 子代理执行 → 返回结果 → 主会话处理

3.3 什么时候用子代理?

场景是否需要子代理理由
简单问答❌ 不需要主会话直接处理
长时间任务✅ 需要不阻塞主会话
独立上下文✅ 需要避免污染主对话
并行多任务✅ 需要同时执行多个任务
敏感操作✅ 需要隔离风险

3.4 创建子代理

可在对话中自动创建或手动配置:

const subAgent = await sessions_spawn({ 
  label: 'code-reviewer', 
  model: 'qwen-portal/coder-model', 
  task: 'Review this PR and provide feedback' 
});

3.5 给子代理分配任务

await sessions_send({ 
  sessionKey: subAgent.sessionKey, 
  message: '请帮我 review 这个 Pull Request,关注代码质量和潜在 bug' 
});

3.6 获取子代理结果

子代理完成任务后会自动通知主会话,也可主动查询:

const history = await sessions_history({ 
  sessionKey: subAgent.sessionKey, 
  limit: 50 
});

四、实战:多会话协作案例

4.1 案例一:并行代码审查

假设需审查 3 个 PR,可创建 3 个子代理并行处理:

// 创建 3 个子代理
const agents = await Promise.all([
  sessions_spawn({ label: 'reviewer-1', task: 'Review PR #101' }),
  sessions_spawn({ label: 'reviewer-2', task: 'Review PR #102' }),
  sessions_spawn({ label: 'reviewer-3', task: 'Review PR #103' })
]);

// 分配任务
agents.forEach((agent, i) => {
  sessions_send({ 
    sessionKey: agent.sessionKey, 
    message: `请 review PR #${101+i},关注代码风格和潜在 bug` 
  });
});

4.2 案例二:资料搜集 + 内容创作

分工模式:

  • 主会话:负责整体构思和写作
  • 子代理 A:搜集相关资料
  • 子代理 B:整理数据成表格
  • 主会话:整合内容完成文章

4.3 案例三:定时任务监控

创建子代理定期执行检查任务:

const monitor = await sessions_spawn({ 
  label: 'heartbeat-monitor', 
  task: '每 30 分钟检查一次邮件和日历' 
});

五、会话通信机制

5.1 主会话 → 子会话

使用 sessions_send 发送消息:

await sessions_send({ 
  sessionKey: 'sub:code-001', 
  message: '任务更新:请优先处理这个 bug' 
});

5.2 子会话 → 主会话

子会话完成任务后自动推送结果:

// 子会话中
await sessions_send({ 
  label: 'main', 
  message: '任务完成!发现 3 个潜在问题,详情如下...' 
});

5.3 会话间数据共享

会话之间默认不共享上下文以保护独立性。如需共享数据可通过以下方式:

  • 通过消息传递
  • 写入共享文件
  • 使用外部存储

六、最佳实践

6.1 合理划分会话

  • 主会话:处理核心对话和决策
  • 子会话:执行具体任务、长时间运行、独立上下文

6.2 控制子代理数量

子代理消耗资源且难以管理过多实例,建议同时运行的子代理不超过 5 个。

6.3 及时清理会话

任务完成后及时结束子会话:

openclaw session end sub:completed-task

6.4 会话命名规范

建议使用有意义的名称,例如 code-reviewer-001, research-agent。

6.5 错误处理

主会话需能处理子代理失败的情况:

try {
  const result = await sessions_send({ ... });
  if (result.status === 'error') {
    // 处理错误
  }
} catch (error) {
  // 异常处理
}

七、高级技巧

7.1 会话链

子代理可再创建子代理,形成层级结构:

主会话 └── 子代理 A(协调者)
         ├── 子代理 A-1(执行者)
         └── 子代理 A-2(执行者)

7.2 会话持久化

默认会话结束后会销毁,如需持久化可配置:

await sessions_spawn({ 
  label: 'persistent-agent', 
  persist: true 
});

7.3 模型差异化

不同会话可使用不同模型以平衡效果与成本:

// 主会话用高级模型
main: model='claude-sonnet'
// 子代理用经济模型
sub: model='qwen-portal/coder-model'

八、常见问题

Q1: 子代理和主会话会互相干扰吗?

A: 不会。每个会话有独立的上下文和记忆,互不影响。

Q2: 子代理创建后有数量限制吗?

A: 理论上没有限制,但建议同时运行的不超过 5 个,避免资源浪费。

Q3: 子代理完成后会自动销毁吗?

A: 默认会保留一段时间,建议手动结束不需要的会话。

Q4: 如何查看子代理的历史记录?

A: 使用 sessions_history 命令或 API。

Q5: 子代理能访问主会话的文件吗?

A: 可以访问工作区文件,但会话上下文是隔离的。

目录

  1. 前言
  2. 一、什么是多会话?
  3. 1.1 会话的概念
  4. 1.2 为什么需要多会话?
  5. 1.3 会话类型
  6. 二、会话管理基础
  7. 2.1 查看会话列表
  8. 2.2 创建新会话
  9. 2.3 切换到指定会话
  10. 2.4 查看会话状态
  11. 2.5 结束会话
  12. 结束指定会话
  13. 结束所有子会话
  14. 三、子代理(Sub-agents)详解
  15. 3.1 什么是子代理?
  16. 3.2 子代理的工作流程
  17. 3.3 什么时候用子代理?
  18. 3.4 创建子代理
  19. 3.5 给子代理分配任务
  20. 3.6 获取子代理结果
  21. 四、实战:多会话协作案例
  22. 4.1 案例一:并行代码审查
  23. 4.2 案例二:资料搜集 + 内容创作
  24. 4.3 案例三:定时任务监控
  25. 五、会话通信机制
  26. 5.1 主会话 → 子会话
  27. 5.2 子会话 → 主会话
  28. 5.3 会话间数据共享
  29. 六、最佳实践
  30. 6.1 合理划分会话
  31. 6.2 控制子代理数量
  32. 6.3 及时清理会话
  33. 6.4 会话命名规范
  34. 6.5 错误处理
  35. 七、高级技巧
  36. 7.1 会话链
  37. 7.2 会话持久化
  38. 7.3 模型差异化
  39. 八、常见问题
  40. Q1: 子代理和主会话会互相干扰吗?
  41. Q2: 子代理创建后有数量限制吗?
  42. Q3: 子代理完成后会自动销毁吗?
  43. Q4: 如何查看子代理的历史记录?
  44. Q5: 子代理能访问主会话的文件吗?
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • OpenClaw 多飞书机器人与多 Agent 团队实战复盘
  • Linux 倒计时与进度条程序实现及 Plus 升级版本
  • Web Components 封装实战:实现跨框架复用组件
  • AIGC 爆款视频《牌子》创作方法论与逐帧分析
  • 前端开发基础:HTML、CSS 与 JavaScript 核心入门
  • ClawdBot 快速上手:Web 控制台配置、设备授权与 Dashboard 访问
  • llama.cpp Docker 镜像国内源加速方案
  • 熔断降级深度解析:Resilience4j 状态机、Fallback 与限流算法
  • 前端技术趋势:React 18、Server Components 与 AI 辅助
  • C 语言反转链表前 K 个节点:辅助链表法
  • 技术雷达:云原生、Serverless、WebAssembly 前沿技术深度解析
  • SunPositionCalc:基于 C++ 的太阳位置精确计算实战解析
  • 基于 Skills 驱动的 AI 编码
  • AI 助力六花直装 V8.3.9 自动化开发与测试
  • 数据结构堆详解:核心特性、实现与应用
  • 前端流式输出技术:核心原理与实战方案
  • PandaWiki 部署指南:从零搭建 AI 智能知识库系统
  • 5 款免费 AIGC 检测工具推荐及降重方法
  • Windows 10 系统性能优化指南:10 个实用技巧
  • Stable Diffusion v1.5 创意工作流整合:Figma/Notion/Slack 自动化方案

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online