文件系统和上下文管理
Deep Agents 用虚拟文件系统把大块内容移出 messages,并配合 工具结果淘汰(Eviction) 与 对话摘要 控制 token。
1. 挑战与策略
| 挑战 | 策略 |
|---|---|
| tool 输出巨大 | 写入 /path,消息里只留路径或摘要 |
| 历史过长 | Summarization middleware |
| 重复读盘 | 文件 state + Backend 缓存 |
2. 文件系统工具(语义)
| 工具 | 作用 |
|---|---|
| ls | 列目录 |
| read | 读文件(可带 offset/limit) |
| write | 创建/覆盖 |
| edit | 局部替换 |
均由 Filesystem middleware 注册,底层走 03。
3. 工具结果淘汰(Eviction)
当 tool 返回超过阈值:
- 全文写入虚拟文件
- 返回给模型的改为 短预览 + 文件路径
- 需要时再
read
避免单次 bash/grep 塞满 context。
4. 对话摘要(Summarization)
token 接近上限时:
- 用模型生成 summary 替换古老 messages
- 保留最近 N 轮与关键 system
- 与 LangGraph checkpoint 兼容(摘要后新 checkpoint)
5. 文件状态管理
文件元数据(路径、mtime、hash)可进 graph state,与 Backend 同步;防止模型基于过期内容推理。
6. 实践
- 大日志先
write再让模型grep。 - 敏感文件用 Composite 禁止写真实系统路径。
- 调 eviction 阈值平衡「省 token」与「少一次 read」。
7. 总结
上下文管理三板斧:外置文件、淘汰大 tool、摘要旧对话。