深度代理(deep agents)的一个关键特性是它们可以访问一组文件系统工具。深度代理可以使用这些工具来读取、写入、编辑、列出和搜索其文件系统中的文件。
在这篇文章中,我们将探讨为什么我们认为文件系统对于代理来说很重要。为了理解文件系统如何有助于代理,我们应该首先思考代理可能在哪里失败。它们可能由于以下两个原因失败:(a)模型不够好,或者(b)它们没有访问正确的上下文。上下文工程是“填充上下文窗口以便为下一步提供恰好合适的信息的微妙艺术和科学”(“delicate art and science of filling the context window with just the right information for the next step”)。了解上下文工程及其可能的失败方式对于构建可靠的代理至关重要。
一种观察现代代理工程师工作的方式是通过上下文工程(context engineering)的视角。代理通常可以访问大量的上下文(所有支持文档、所有代码文件等)。为了回答一个传入的问题,代理需要一些重要的上下文(其中包含回答问题所需的上下文)。在尝试回答该问题时,代理检索一些上下文(以将其拉入其上下文窗口)。

从这个视角来看,有很多方式可以使代理的上下文工程“失败”:
作为代理工程师,我们的工作是使检索的上下文与所需的上下文相匹配(确保代理检索的上下文是所需信息的最小超集)
在寻找适当的上下文时,会出现一些特定的挑战:
这些都是常见的障碍,我们大多数人以前都面临过不同版本的这些问题!
用简单的话来说:文件系统提供了一个单一的接口,代理可以通过它灵活地存储、检索和更新无限量的上下文。
让我们看看这如何帮助上述每种情况。
令牌过多 (检索的上下文 >> 所需的上下文)
代理不必使用对话历史来存储所有工具调用结果和笔记,而是可以将它们写入文件系统,然后在需要时选择性地查找相关信息。Manus是第一个公开讨论这种方法的人(publicly talk about this approach)- 下面的图表来自他们的博客文章。

让我们考虑第一个例子,使用网页搜索工具。我运行网页搜索,并从工具中获取10k个令牌的原始内容。大部分内容可能并不总是必要的。如果我将其放入消息历史中,那么所有10k个令牌都将在整个对话过程中存在,增加我的Anthropic账单。但是,如果我将这个大型工具结果卸载到文件系统中,代理可以智能地使用grep搜索某些关键字,然后只读取必要的上下文到我的对话中。
在这个例子中,代理有效地使用文件系统作为大型上下文的临时存储。
需要大量上下文 (所需的上下文 < 支持的上下文窗口)
有时,代理需要大量上下文来回答问题。文件系统为LLM提供了一个很好的抽象,允许它们动态存储和检索更多信息。这种情况的例子包括:
找到细致的信息 (检索的上下文 ≠ 所需的上下文)
语义搜索是检索上下文的最流行方法之一。它在某些用例中可能有效,但取决于文档类型(例如技术API参考、代码文件),语义搜索可能由于缺乏语义信息而效果很差。
文件系统提供了一个替代方法,允许代理使用ls、glob和grep工具智能地搜索上下文。如果您最近使用过Claude Code,您就会知道它严重依赖glob和grep搜索来找到所需的上下文。这种技术成功的原因有几个:
由于这些原因,在某些情况下,使用文件系统(以及文件系统提供的搜索功能)可以产生更好的结果。
请注意,语义搜索仍然可以很有用!并且可以与文件系统搜索一起使用。Cursor最近写了一篇博客,强调了同时使用两者的好处。
随时间学习 (总上下文 ≠ 所需的上下文)
代理出错的一个主要原因是它们缺乏相关的上下文。改进代理的一种好方法通常是确保它们可以访问正确的上下文。有时这可能看起来像添加更多的数据源或更新系统提示。
更新系统提示的常见做法是:
通常,终端用户实际上是最好的主题专家。通过与代理的对话,他们可能会提供重要的线索(隐式或显式),表明正确的相关指令是什么。因此,考虑到这一点 - 是否有办法自动执行上述步骤中的第三步(使用这些指令更新提示)?
通常情况下,终端用户实际上是最好的领域专家。通过与代理的对话,他们可能会提供重要的线索(隐式或显式),以确定正确的相关指令。因此,考虑到这一点 - 是否有办法自动执行上述第三步(使用这些指令更新提示)?
我们认为代理的指令(或技能)与它们可能想要合作的任何其他上下文没有区别。文件系统可以作为代理存储和更新其自身指令的地方!
用户反馈一旦给出,代理就可以写入其自身的文件并记住一条重要信息。这对于快速、一次性的事实尤其有用,特别是可能为用户定制的内容,如其姓名、电子邮件或其他偏好。
这仍然是一个未完全解决的问题,并且是一个正在出现的模式,但这是LLM(大型语言模型)的一种令人兴奋的新方式,可以随着时间的推移增长其自身的技能和指令,确保在未来迭代中拥有必要的上下文。
我们有一个开源仓库,称为Deep Agents(Python、TypeScript),它允许您快速构建一个具有文件系统访问权限的代理。许多使用文件系统的上下文工程技巧都内置其中!可能会出现更多的模式 - 尝试Deep Agents并告诉我们您的想法!