105 lines
3.7 KiB
Markdown
105 lines
3.7 KiB
Markdown
# 上下文与会话管理总结
|
||
|
||
> 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 新会话启动时加载规则
|
||
1. 读取 **SOUL.md** → 确定角色和行为
|
||
2. 读取 **USER.md** → 了解用户信息
|
||
3. 读取 **今天 + 昨天的 memory 文件**(`memory/YYYY-MM-DD.md`)
|
||
4. **MAIN SESSION**(直接与人对话时)额外读取 `MEMORY.md`
|
||
5. 更早的 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 应:
|
||
|
||
1. **整理本次会话关键内容**
|
||
2. **写入 `MEMORY.md` 或当日 `memory/YYYY-MM-DD.md`**
|
||
3. **用户在新会话中继续**,Agent 启动时自动加载
|
||
|
||
### 3.3 总结指令示例
|
||
> "总结一下这次会话的关键内容,然后我开新会话继续"
|
||
|
||
### 3.4 各 Agent 的支持要求
|
||
需要在各 Agent 的 **SOUL.md** 中内置"会话总结迁移"的行为规范,确保指令能被正确执行。
|
||
|
||
---
|
||
|
||
## 四、重启 Gateway 注意事项
|
||
|
||
- **不需要重启前特意写记忆**,memory 文件是磁盘持久化,重启后依然存在
|
||
- Gateway 重启只影响运行时内存,不影响 `memory/` 和 `MEMORY.md` 文件
|
||
- Workspace 文件变更(SOUL.md、AGENTS.md、USER.md 等)由 OpenClaw 自动加载
|
||
|
||
---
|
||
|
||
## 五、关键规则回顾
|
||
|
||
1. **只盯主会话 ctx**(Assistant 部分),Tool 的 100% ctx 是独立的
|
||
2. **ctx 超限 → 总结迁移 → 新会话**
|
||
3. **重要内容随时写入 memory**,不要依赖" mental notes"
|
||
4. **Gateway 重启不影响 memory 文件**,无需额外操作
|
||
5. **向量库和文件是同一内容的两套访问方式**,无需重复管理
|
||
|