把"长 context"卸载到外部存储——message 里只留索引与摘要,实际内容存在"文件系统"里。最朴素也最有效的 long-horizon 应对。
建议先读《Planning / write_todos 模式》;如果你是跳读,至少先看本章索引与本页 TL;DR。
课程中段的能力层,用来回答“一个 harness 为什么需要这些补丁”。
把"长 context"卸载到外部存储——message 里只留索引与摘要,实际内容存在 "文件系统" 里。最朴素也最有效的 long-horizon 应对。
先看失败模式,再看能力补丁;能力不是越多越好,而是要能对症下药。
课程主线:稳定能力抽象 + 官方机制 + 跨框架共性。
read_file / write_file / ls 三个 tool,由 LLM 自己决定什么时候 read、什么时候 write、什么时候 ls。"文件系统"可以是 内存字典(Deep Agents 默认)也可以是 真实磁盘(Claude Code / Cursor / Codex / Aider)。设想一个研究 agent 接到任务:"搜 2024-2025 年关于 multi-agent collaboration 的论文,整理一份综述。"
search_papers 拿到 50 个候选,每个含标题 + 摘要 + URL,这一段 message 已经 8000 token。fetch_paper(url) 拿到全文,每篇 ~6000 token——前 10 篇全文塞进去就 60000 token,message 历史全是论文原文。context_length_exceeded,或者 silently 截断了开头(user 的原始任务被丢了)。VFS 把这个故事改写成:每篇全文 fetch 后立刻 write_file 落盘,message 里只留 "已存到 papers/multi_agent_2024_smith.md(约 6k token,关键观点:联邦学习 + 角色分配)"。第 11 轮决定要写综述时,按需 read_file 拉回需要的段落即可。
| 内存字典 VFS | 真实文件系统 VFS | |
|---|---|---|
| 底子是什么 | files: dict[str, str] 一个字段 |
真实磁盘 / 沙箱内 mount 点 |
| 序列化 | 跟 graph state 一起 pickle / JSON | 独立于 agent state |
| 副作用 | 无(重启即没) | 真实写盘 → 可被外部工 |