agent:<agentId>:main(例如 agent:main:main)。它之所以特别,
是因为默认的 DM 范围会把所有直接消息都归并到这里,而且系统的其他部分会将其视为代理的根:心跳会唤醒它,
后台工作会向它回报,其他地方的活动也会汇总到它这里。
首页
在 Web 应用中,主会话是 首页 页面——侧边栏中的第一个入口。顶部的身份行是你的代理(点击它可打开代理菜单);首页是你与它对话的地方。分叉自主对话的会话会显示在 线程 下,群聊会显示在 群组 下,而编码/CLI 会话会显示在 编码 下。什么会流入主会话
主会话不仅仅是聊天记录;它是你的代理的世界汇聚之处:- 群组活动。 群组和房间会话保持隔离(见下文),但在默认的 DM 范围下,主会话会自动监视它们。活动会以紧凑通知的形式排队——按每个对话合并,而不是每条消息都唤醒一次——并且代理会在下次运行时看到它们:在你的下一条消息到来时,或在计划的心跳触发时。代理也可以读取它所监视的会话——它的系统提示会列出这些会话——因此“我错过了家人群里什么吗?”这类问题是可行的。
- 后台工作。 子代理和派生会话会把结果回报给启动它们的会话,因此代理从 Home 发起的工作会回报到 Home。
- 心跳。 计划的心跳会以主会话为目标,这会在你没有写任何内容时,也能把队列中的通知转化为感知。
重置和会话之间的记忆
滚动对话受模型上下文窗口的限制,因此 连续性来自其周围的多层机制:MEMORY.md,即代理精心整理的长期记忆,会在每个 新会话中加载。日常笔记(memory/YYYY-MM-DD.md)可按需搜索, 并且在/new或/reset之后会重新预热最近的笔记。在压缩之前, 代理会将持久事实刷新到日常笔记中,这样长对话就不会无声地丢失它们。- 跨会话记忆回忆 允许代理回忆
其其他私有会话中的内容。在个人设置中——全局
session.dmScope解析为main且没有每个绑定的 DM 覆盖——它 默认启用;任何已配置的 DM 隔离都会将其关闭,除非你显式选择启用。 参见 Memory configuration。
一个带有持久历史记录的滚动会话
主会话会通过重置和压缩向前滚动,而不是让模型一次性承载其全部历史:- 默认情况下不会自动重置;压缩会在保持滚动会话的同时,将活动上下文限制在边界内。每日重置和空闲重置都是可选功能(参见 会话管理)。在
/new和/reset时,结束对话的尾部内容会保存到每日记忆笔记中,下一次会话会重新注入最近的笔记。重置会分配一个新的在线会话 id,但会让之前的 SQLite 对话记录在同一个主会话键下保持可搜索。 - 当对话接近上下文窗口时,压缩会对其进行总结并在原处继续——对话记录历史仍保留在会话存储中。
- 会话列表显示的是当前在线对话,而不是其背后每个历史会话 id。
- 当每个代理的存储中的物理数据库、WAL 和会话工件超过磁盘预算(默认 10 GB)时,OpenClaw 会先将最早的未被引用历史提取到经过验证的压缩归档中,然后再移除其数据库行。在线、已路由和进行中的会话绝不会成为预算牺牲品。
何时改为使用隔离
共享主会话是默认的正确选择,适用于只有你与其对话的代理。如果有多人可以给你的代理发送消息,请隔离私信:openclaw security audit 在检测到多个私信发送者时会建议使用隔离。完整的作用域矩阵、身份关联以及按路由覆盖都在 会话管理 和 通道路由 中进行了说明。