目标 entity: Cursor 的 "Dynamic context discovery" 博客 —— 把所有 agent 辅助上下文 (tool output / chat history / MCP schema / skills / terminal) 统一为文件系统上的 惰性加载对象,A/B 显示 MCP-heavy session token 消耗下降 46.9% [blog-dynamic-context-discovery]。 本文把它放进 "long-context agent 的上下文管理" 这一簇 5 篇同行中定位。
这 5 篇全部落在同一个母问题上:**当 agent 反复面对超出 context window 的辅助信息时,
harness 应该如何决定"放什么进窗口、何时取、丢什么"**。它们沿一条从"惰性接口"到
"主动产物"的谱系分布,本博客处在最朴素、最工程化的一端。
| Entity | 与本篇的关系 | 共享的核心机制 |
|---|---|---|
| 2512.24601 (RLM) | 最近的 paradigm 同源 —— 都把 prompt/辅助内容移出窗口、只留 constant-size metadata | 把 $P$ 绑为 REPL 变量、root 只见 metadata [2512.24601],与博客"文件路径 + 按需 read"同构 |
| 2603.28052 (Meta-Harness) | 最强佐证 —— 独立论文用受控消融证明"文件系统暴露全保真 trace + grep/cat 按需取"优于压缩反馈 [2603.28052] | 文件系统作为非 Markov 长期记忆,proposer 用 grep/cat 检索 |
| 2604.14228 (Dive into Claude Code) | 同一生产范式的"对照实现"—— Claude Code 用 5 层 compaction 而非纯惰性文件,代表博客明确反对的路线 [2604.14228] | append-only transcript + context-as-scarce-resource 原则 |
| 2602.22402 (CMV) | 互补的 userland 工具 —— 把会话历史建成 DAG + 三遍裁剪,量化了"惰性持久化 + caching"的经济模型 [2602.22402] | 历史落盘为 JSONL、剥离 tool 输出、保留元数据 |
| 2605.19932 (PEEK) | 反向命题 —— 主张某些场景下"被动惰性取"不够,需要主动维护一个 orientation cache [2605.19932] | context map 常驻 system prompt,与博客的"惰性发现"形成 active vs passive 对立 |
共同祖先问题:博客称之为 context allocation problem(任务未知前就要决定窗口内容
[blog-dynamic-context-discovery]),RLM 称之为 context rot
(窗口未满质量已塌 [2512.24601]),CMV 称之为 autocompaction 摧毁累积理解
(132k→2.3k,98% 损失 [2602.22402])。三种命名指向同一痛点的不同侧面。
不是新协议,就是 LLM 已经会用的 rg/tail/read/jq
[blog-dynamic-context-discovery]。RLM 同样移除窗口内容,但它引入了
一个有状态 Python REPL + 符号递归 sub-call 的重型 scaffold
[2512.24601];博客刻意不要 scaffold,把惰性加载降到"几个标准 shell 工具"。
delta = 零新 API 的采用成本。
时的 chat history、skills、MCP schema、terminal)用同一个 lazy-load pattern 收编
[blog-dynamic-context-discovery]。同行各自只攻一个面:CMV 只管会话日志裁剪
[2602.22402],PEEK 只管 orientation knowledge
[2605.19932],Meta-Harness 只管历史候选 trace
prompt 里只留名字,A/B 测得 46.9% token 下降
[blog-dynamic-context-discovery]。其余 4 篇都没碰 MCP tool explosion 这个具体问题。
$\text{root iterations} \le K/c$ [2512.24601]。博客的"文件路径 + 按需读"
本质是 RLM "metadata-only history" 的弱化、无递归版本 —— 博客是 RLM 思想的产品化降维。
只给 score/summary,median 从 50.0 跌到 34.6/34.9 [2603.28052]。
博客的 46.9% 是生产 A/B 的省钱数字,Meta-Harness 的是质量数字 —— 两者从不同指标轴
互相佐证同一机制。
博客把 summarization 列为三大失败模式之一("摘要降级"会不可逆抹掉细节
[blog-dynamic-context-discovery]),主张用可搜索的全量历史文件取代它。
而 Claude Code 把 5 层渐进 compaction(snip → microcompact → context collapse →
auto-compact)当成核心工程壁垒 [2604.14228],仍以 model 生成 summary
为最后手段。
张力根源:两者部署约束不同。Claude Code 必须维护 append-only transcript invariant +
prompt caching 经济学 [2604.14228],compaction 是在已有 caching 架构
下的不得已优化;博客则把 history 整体外置到文件,用"两级系统(窗口内摘要 + 盘上全量)"
绕开 compaction 的有损性 [blog-dynamic-context-discovery]。
二者在各自约束下都自洽,但博客的表述更激进("summarization 应被视作可恢复而非最终")。
博客默认"agent 需要时自己去 grep/read"即可
[blog-dynamic-context-discovery]。PEEK 的整篇论证恰恰是:对*反复查询同一
大上下文*的工作负载,被动取不够 —— 必须主动蒸馏并常驻一个 constant-size orientation map,
否则每次查询都要重新"认路" [2605.19932]。PEEK 还用消融指出,
即便只是把 raw prefix 塞进 map(最接近"惰性取一段原文")也只 +0.73%,远不如 curated
orientation knowledge [2605.19932]。
矛盾根源 = 工作负载假设不同:博客面向单次、任务多样的 coding session(稀疏访问,
惰性取最优);PEEK 面向同一 corpus 的 n 次重复查询(此时一次性蒸馏可摊销)。两者不互斥,
而是 workload-dependent 的互补(见 §5)。
针对博客的具体断言,逐条质疑:
MCP servers installed" [blog-dynamic-context-discovery],且证据等级仅
MCP token 一项是 Strong,其余四项应用全是 Anecdotal/Engineering judgment
[blog-dynamic-context-discovery]。换言之:**省的几乎全是
MCP schema 注入这一块**,对不装 MCP 的用户该收益趋近于零。CMV 的分布数据正好印证这种
bimodal 性质 —— 纯对话 session 缩减 <5%、只有 tool-heavy session 才有 39%
[2602.22402];惰性化的收益高度依赖 workload 的"膨胀来源"占比。
[blog-dynamic-context-discovery],但把 MCP schema、terminal、chat
history 都同步成文件本身就是一套新的目录约定 + 同步机制。CMV 的经验显示,userland 操作
会话日志会撞上 LLM API 的 tool_use/tool_result 严格配对约束,必须三遍扫描预收集孤儿 ID 才能
避免 validation error [2602.22402]。博客对"惰性读一半 tool
输出"是否会破坏这类配对不变量只字未提 —— 新失败模式并未消失,只是没被记录。
[blog-dynamic-context-discovery]。而同簇论文反复警告:惰性/
压缩取舍直接影响正确性。RLM 证明 compaction 在 dense-access 任务上崩到 0.1
[2512.24601];PEEK 证明"更省"未必"更准",关键看取回的是不是 orientation
knowledge [2605.19932]。博客只报省了多少 token,**没回答"agent 该 grep 时
没去 grep 导致漏读关键信息"的失败率** —— 惰性加载把"该不该取"的决策推给了 model,这本身是
新的错误来源。
[blog-dynamic-context-discovery]。但 RLM 明确发现弱 coder(Qwen3-Coder)
随递归深度退化、syntax error 传播 [2512.24601];让 model 自己用
rg/jq 导航文件同样需要不弱的工具使用能力。"任何 LLM 都会用文件工具"这一前提对 frontier
模型成立,对小模型很可能不成立。
把上下文外置的学术范式由 RLM 系统化(REPL 变量 + 符号递归 + metadata-only history
[2512.24601]);Meta-Harness 把"文件系统 = 非 Markov 长期记忆"做成可消融的
研究对象 [2603.28052]。博客的独特生态位是:**剥掉所有 scaffold,只保留
文件系统这一最小公分母,并在真实产品里 A/B 验证**。它是把研究范式落到 frontier 编码 agent
harness 的"最后一公里"证据。
多模型泛化矩阵 [2605.19932] [2603.28052],博客只有
一个生产场景的统计显著结果。它的可信度来自"真实流量",弱点是"单一指标 + 无开源复现"。
CMV([实现已公开] [2602.22402])和 RLM(公开实现
[2512.24601])在可复现性上反而更强。
Claude Code 代表的 Anthropic 路线 = "minimal scaffolding + 重度 compaction pipeline"
[2604.14228]。两者都信奉"context as scarce resource"
[2604.14228],但在"满了怎么办"上分道:一个外置到盘、一个分层压缩。这是当前
生产级 coding agent 在 context 管理上的两条主流派系,博客是前者最清晰的宣言。
从这一簇的交叉点看,最有价值的 hybrid / adaptive 方向:
博客的纯被动惰性取在"反复查询同一大上下文"时会重复认路;PEEK 的主动 map 在"单次多样任务"时
是浪费 [2605.19932]。一个自适应策略应当:默认惰性(博客),检测到对同一
文件/目录的重复 grep 模式后,自动把"该上下文的 roadmap"蒸馏成一个常驻 PEEK-style map。
博客的文件系统正好是 PEEK Distiller 需要的 execution trajectory 来源
博客的"哪些上下文外置、grep 的粒度多大"目前是手工调的工程判断
[blog-dynamic-context-discovery]。Meta-Harness 证明,把这类
"存什么/何时取"决策交给 coding-agent proposer 在代码空间搜索能超过手工
[2603.28052]。**让 Meta-Harness 直接搜索 Cursor 的 dynamic-context
配置**(per-server 文件夹结构、stub 阈值、何时同步 terminal)是一个现成的 end-to-end 优化对象。
博客把 history 整体外置但没说"窗口内留多少摘要、盘上文件如何组织";CMV 给出了
structurally-lossless 三遍裁剪 + cost model(mixed session 39% 缩减、10 轮 break-even
[2602.22402])。把 CMV 的裁剪规则当成博客"两级历史系统"的盘上层格式,
能让博客那条定性的"summarization 可恢复"主张获得 CMV 式的量化经济学支撑。
没有一篇量化"agent 该取而没取"的漏读率。博客省 token、CMV 省钱、Meta-Harness 提质量,但
缺一个衡量"惰性决策错误"的 benchmark —— 即固定 harness,测 model 在"信息在盘上但需主动
grep"时的 recall。这是把博客 §4 那条未做的形式化(lazy policy 在 sparsity 假设下 dominate
eager 的证明 [blog-dynamic-context-discovery])落到实证的前提。
explosion [blog-dynamic-context-discovery],但这本质是 client 端补丁。
类比 CMV 指出的"API 松绑 tool_use 配对约束后三遍架构壁垒会消失"
[2602.22402]:若 MCP 协议原生支持"惰性 tool 描述 / 按需
schema 拉取",博客这块收益就能标准化到所有 client,而非每家 harness 各自实现。