把所有相关文档、代码、日志全塞进 Prompt 里,就像要求学生在考试前把整本书背下来一样:不仅让 Agent 不堪重负,还极易导致“书呆子效应”——虽然“记得”很多,但逻辑却被冗余信息淹没,甚至产生幻觉

Cursor 的做法则是一场“开卷考试”:Agent 不需要强行背诵所有细节,它只需要知道“去哪里查”

预先提供更少的细节,反而能让 Agent 更容易自主提取相关上下文。Cursor 把这套做法叫做 动态上下文发现(Dynamic Context Discovery),与之相对的是把所有信息提前放进上下文的做法——静态上下文

静态上下文怎么了?

一次性输入所需信息在短任务里没什么明显问题,但长任务里,token 会从两头明显涨起来

  • 任务开始时就带着的系统提示、技能说明、工具描述;
  • 调用工具之后不断塞进来的外部信息。

窗口很快撑满是一个问题。

更麻烦的是,信息越多,越容易前后打架,或把关键细节直接淹掉

结果是:Agent 获取到了更多信息,但实际做事却更慢、更容易出错。

Cursor 的策略

很简单:把大部分信息和中间输出保存成文件,让 Agent 需要时自主去检索获取。

这样会带来两个直接好处:

  1. 只在需要的时候加载信息,token 更省;
  2. 上下文里少一些重复、冲突、过期的信息,Agent 更不容易跑偏。

说白了,就是让 Agent 少背包袱,先干活,缺什么再去找

Cursor 团队的 A/B 测试结果也印证了这一策略的有效性:

在会调用 MCP 工具的运行中,这一策略将 Agent 的总 token 消耗减少了 46.9%

怎么用?

五个场景,可以按“输出 → 历史 → 能力 → 工具 → 日志”来理解,覆盖了 Agent 运行的完整生命周期。

1. 长输出先落文件

Shell 命令、MCP 调用返回的内容(往往很长)直接写到文件里,Agent 可以先看末尾,必要时再往前翻,不会一次把上下文占满。

2. 摘要时还能回看历史

上下文满了以后,系统通常会做一次摘要,但摘要多少都会丢细节。

Cursor 会把对话历史存成文件,这样 Agent 如果觉得摘要不够,还能自己回头去查,不至于“总结完就忘了”。

3. Skills 按需加载

Agent Skills 本质上就是一组可以被发现的文件。系统提示里先放个名字和简介,真要用的时候,再去读具体内容。

这样既不会把提示塞太满,也能让 Agent 自己去找对技能。

4. MCP 工具懒加载

很多 MCP 服务器工具多、描述也长,全塞进提示里会很占空间。

Cursor 的处理方式是:先给一个轻量入口,Agent 真要用某个工具时,再去查对应文件。

5. 终端日志同步文件系统

终端输出也一样。

与其把一长串日志贴进对话框,不如直接同步到文件系统里。

Agent 可以直接去 grep,这样定位失败命令、报错信息和服务日志等都会方便得多。

“文件”不一定是最终答案

Cursor 团队在官方博客里也提到了,他们并不确定“文件”是否会成为未来所有 LLM 工具的“最终接口形式”。

但这恰恰是这套方案迷人的地方——它是一种“简单抽象”(Simple Abstraction)

各种精妙、专有交互层(Abstraction Layer)的发明很炫技,但也容易在 Agentic AI 范式演进过程中不小心变成沉重的技术债务。

相比之下,文件系统是目前最安全的选择:通用、耐用,且极其稳健

如果我们构建的是一个面向未来的系统,最好的办法可能是像 Cursor 这样,利用好最朴素的原语,在保证当前效率的同时为未来预留出最宽广的演进空间。

参考:Cursor 官方博客《Dynamic context discovery》(Jan 6, 2026)

更多推荐