3.7 KiB
3.7 KiB
上下文与会话管理总结
2026-04-12 讨论整理,供日后查阅
一、Token 窗口与上下文(ctx)
1.1 ctx 的含义
- ctx = Context 使用率,表示当前会话窗口已使用的 Token 配额比例
- 100% ctx = 上下文已满,新的对话内容会逐步挤压旧内容
1.2 Tool 调用与主会话的 ctx 是独立的
- Tool 执行在独立子会话中进行,不计入主会话 ctx
- 流程:用户发消息 → 主会话记录 → Tool 调用(独立子会话,100% ctx) → 返回结果 → 主会话 ctx 清零 → 模型回复
- 因此 只需关注 Assistant(主会话)部分的 ctx 是否超限
1.3 实际操作建议
- 当 ctx 接近 80-90% 时,考虑开新会话
- Tool 调用占用的 ctx 不影响对话长度,可以忽略
二、OpenClaw 的记忆体系
2.1 两层记忆机制
| 层级 | 文件位置 | 用途 | 持久化方式 |
|---|---|---|---|
| 长期记忆 | MEMORY.md(各 Workspace 根目录) |
核心精华,值得跨会话保留 | Agent 主动写入,用户触发 |
| 短期记忆 | memory/YYYY-MM-DD.md(memory/ 子目录) |
每日日记,记录当天事件和讨论 | Agent 主动写入 |
2.2 各 Agent 的 memory 路径
D:\OpenClaw-Workspace\
├── main\ # 总调度
│ ├── MEMORY.md
│ └── memory\
│ └── 2026-04-11.md
├── chief-engineer\ # 轮机长
│ ├── MEMORY.md
│ └── memory\
└── disciple\ # 强哥的徒弟
├── MEMORY.md
└── memory\
D:\OpenClaw-Workspace-shirleen\
└── conservator\ # 文保工作者
├── MEMORY.md
└── memory\
2.3 新会话启动时加载规则
- 读取 SOUL.md → 确定角色和行为
- 读取 USER.md → 了解用户信息
- 读取 今天 + 昨天的 memory 文件(
memory/YYYY-MM-DD.md) - MAIN SESSION(直接与人对话时)额外读取
MEMORY.md - 更早的 memory 文件通过
memory_search检索调用
2.4 向量检索库
- 路径:
C:\Users\admin\.openclaw\memory - 本质:OpenClaw 自动维护的向量索引,加速语义搜索
- 内容来源:从 Workspace 下的 memory 文件自动索引
- 调用方式:
memory_search工具 - 与文件的关系:同一套内容,两种访问方式(文件直读 vs 向量检索)
三、会话迁移流程
3.1 问题背景
与其他 Agent 交流时,容易触发 Tool 调用导致 ctx 快速增长,可能超过限制。
3.2 解决方案:总结指令
当 ctx 接近上限时,用户发起总结指令,各 Agent 应:
- 整理本次会话关键内容
- 写入
MEMORY.md或当日memory/YYYY-MM-DD.md - 用户在新会话中继续,Agent 启动时自动加载
3.3 总结指令示例
"总结一下这次会话的关键内容,然后我开新会话继续"
3.4 各 Agent 的支持要求
需要在各 Agent 的 SOUL.md 中内置"会话总结迁移"的行为规范,确保指令能被正确执行。
四、重启 Gateway 注意事项
- 不需要重启前特意写记忆,memory 文件是磁盘持久化,重启后依然存在
- Gateway 重启只影响运行时内存,不影响
memory/和MEMORY.md文件 - Workspace 文件变更(SOUL.md、AGENTS.md、USER.md 等)由 OpenClaw 自动加载
五、关键规则回顾
- 只盯主会话 ctx(Assistant 部分),Tool 的 100% ctx 是独立的
- ctx 超限 → 总结迁移 → 新会话
- 重要内容随时写入 memory,不要依赖" mental notes"
- Gateway 重启不影响 memory 文件,无需额外操作
- 向量库和文件是同一内容的两套访问方式,无需重复管理