特性 • 4 分钟阅读
会话与内存
OpenClaw 如何记住你。持久的上下文、隔离以及每日内存文件。
会话是 OpenClaw 中对话管理的核心单位。它们保持不同对话之间的上下文、状态和隔离。了解会话是配置多 Agent 路由和管理复杂工作流的关键。
Tutorial.step
会话类型
主会话
主会话是私聊 (DMs) 的默认会话。默认情况下:
- 所有的私聊都会合并到一个共享的主会话中
- 上下文在所有的私聊对话中共享
- 工具在宿主上以完整访问权限运行 (用于受信任的用途)
- 非常适合希望拥有统一上下文的个人使用
群组会话
每个群组聊天都会获得自己独立的会话:
- 上下文与其他的群组和私聊隔离
- 可以配置为在 Docker 沙箱中运行
- 支持基于提及的激活
- 每个群组保持自己的对话历史
隔离会话
你可以为以下情况创建隔离会话:
- 特定的路由需求
- 安全隔离
- 测试和开发
- 多 Agent 设置
Tutorial.step
会话特性
激活模式
控制 Agent 何时在会话中响应:
always- Agent 响应所有消息mention- Agent 仅在被提及期间响应 (群组默认)manual- Agent 仅在被明确激活时响应
队列模式
会话如何处理并发请求:
sequential- 按顺序处理消息parallel- 同时处理多个请求priority- 根据优先级水平处理
上下文管理
会话自动:
- 加载相关的上下文和内存
- 保持对话历史
- 在需要时剪除旧上下文
- 根据对话更新内存
Tutorial.step
多 Agent 路由
OpenClaw 支持根据各种标准将消息路由到不同的 Agent:
基于频道的路由
将不同的频道路由到不同的 Agent:
Routing via Bindings
{
"agents": {
"list": [
{ "id": "whatsapp-agent", "workspace": "~/.openclaw/workspace-whatsapp" },
{ "id": "telegram-agent", "workspace": "~/.openclaw/workspace-telegram" }
]
},
"bindings": [
{ "match": { "channel": "whatsapp" }, "agentId": "whatsapp-agent" },
{ "match": { "channel": "telegram" }, "agentId": "telegram-agent" }
]
}基于 Peer 的路由
将特定的联系人路由到专门的 Agent:
Peer Routing via Bindings
{
"bindings": [
{
"match": {
"channel": "whatsapp",
"peer": { "kind": "dm", "id": "+1234567890" }
},
"agentId": "work-agent"
}
]
}基于群组的路由
每个群组可以有自己的 Agent 工作区:
- 每个群组都有隔离的上下文
- 每个群组都有不同的技能和工具
- 独立的内存和配置
会话隔离
会话隔离提供安全性和上下文分离:
- 工作区隔离 - 每个 Agent 都有自己的工作区目录
- 内存隔离 - 每个 Agent 都有独立的内存文件
- 工具隔离 - 每个会话都有不同的工具策略
- 沙箱隔离 - 群组可以在 Docker 容器中运行
Tutorial.step
会话工具
OpenClaw 提供用于会话管理的工具:
- '
'sessions_list'' - 列出所有活动会话 - '
'sessions_history'' - 查看会话对话历史 - '
'sessions_send'' - 将消息发送到特定会话 - '
'sessions_spawn'' - 创建新的隔离会话
这些工具允许 Agent 管理其他会话并与之交流。
Tutorial.step
会话配置
在你的 中配置会话行为:
Session Config
{
"session": {
"scope": "per-sender",
"reset": {
"mode": "daily",
"atHour": 4
}
},
"agents": {
"defaults": {
"sandbox": {
"mode": "non-main"
}
}
}
}Tutorial.step
会话压缩 (Compaction)
会话自动压缩上下文以管理 Token 使用量:
- ✂️自动剪除达到限制时删除旧的上下文。
- 📝内存概括概括重要信息。
- ⚖️Token 管理保持在模型上下文限制内。
这确保了会话在保持重要上下文的同时保持高效。