一个被广泛引用、却从未被正式定义的工程经验法则。本报告把它拆成三条可测量的边界——能力边界、行为边界、经济边界——并用 2024–2026 年的受控实验与厂商一手评测数据,回答“边界在哪里”“为什么在那里”“该怎么用”。
如果把这篇报告压缩成一页,只需读这十条。每条都可以被证伪,括号内标注了它主要依赖的证据类型。
2025 年 6 月,HumanLayer 创始人 Dex Horthy 在 AI Engineer World's Fair 的演讲《No Vibes Allowed: Solving Hard Problems in Complex Codebases》中提出 Smart Zone / Dumb Zone:上下文用量超过约 40% 后输出质量明显下滑。同一圈子(2025 年 4 月《12-Factor Agents》)也是 “context engineering” 一词的源头。这个概念没有对照实验支撑——但它指出的方向被随后一年内的一批受控研究反复证实。实践经验
RULER(NVIDIA,COLM 2024)定义了 effective context length;NoLiMa(Adobe,ICML 2025)把它再砍掉一半以上;Chroma《Context Rot》(2025-07)证明长度本身就足以造成退化;arXiv 2510.05381(EMNLP 2025)证明在完美检索条件下性能仍下降 13.9%–85%。所谓 smart zone 应被理解为一个任务×模型×位置相关的曲面,而不是一条固定水位线。受控实验(多篇)
LOCA-bench(HKUST,2026)是首个可控“环境状态膨胀”的 agent 级基准。Claude-4.5-Opus 在环境描述 8K 时准确率 96.0%,64K 时 65.3%,128K 时 34.0%,256K 时 14.7%。若按 40% 规则,这个 200K 窗口的“安全线”是 80K——而实测 64K 时已经掉了 30 个百分点。40% 是上限,不是安全线。受控实验(n=525)
OpenAI 官方 MRCR v2 8-needle 分桶数据:GPT-5.4 在 256K–512K 段掉到 57.5%、512K–1M 段掉到 36.6%;GPT-5.5 同一区间是 81.5% / 74.0%——同一模型族在数月内把长尾段提升了 +37.4 个百分点。Claude Opus 4.6 在 1M 上是 76%,而其同族 Sonnet 4.5 只有 18.5%。边界每隔几个月就被厂商重画一次,任何固定百分比都在过期。厂商官方评测
Cognition 在 2025 年 9 月为 Claude Sonnet 4.5 重写 Devin 时命名了 context anxiety(上下文焦虑):模型感知到接近窗口上限时,会提前收尾、跳过子任务、下更草率的决定。MIT 团队在 ICML 2026 论文中首次系统测量:出现焦虑的模型对自身所需 token 的估计偏差 24%,这预测了 15% 的准确率下降与 54% 的 token 浪费。它与“变笨”是两回事,缓解手段也完全不同。受控实验 + 一手工程报告
Anthropic 官方《Explore the context window》给出的代表性会话:启动阶段(系统提示、CLAUDE.md、自动记忆、技能清单、MCP 工具名)合计约 7,850 token;而 4 次文件读取就占整场会话的约 31%,用户自己输入的内容只占约 1%。管理上下文 ≈ 管理文件读取与工具输出。厂商官方文档(示意值)
失败尝试留在轨迹里会形成复利:Horthy 的 trajectory 论证、Anthropic 官方“同一问题纠正超过两次就 /clear 重开”的建议、Cline/Cursor 用户报告的“压缩后忘记刚才的编辑”,是同一现象的三个侧面。上下文里最贵的不是无关文件,是失败的路径。官方文档 + 工程共识
压缩派(Claude Code / Codex / Cline / Cursor / OpenCode):分层渐进、成本递增、增量摘要;换线程派(Amp):拒绝递归摘要,改用 handoff;外置派(Manus / Anthropic memory tool):把文件系统当内存;隔离派(subagent):独立窗口只回摘要。Anthropic 自己承认 harness 假设会过期——为 Sonnet 4.5 加的 context reset 在 Opus 4.5 上“变成了纯开销,还会导致缓存被错误丢弃”。厂商一手工程报告
Claude Opus 4.6 对超过 200K token 的请求收 $10 / $37.50(约 2 倍溢价);GPT-5.4 超过 272K 按 2 倍计费;Manus 实测 KV-cache 命中与未命中成本差 10 倍($0.30 vs $3.00 / MTok),而 agent 负载的输入输出比高达 100:1。smart zone 的下界由价格和延迟决定,不只是准确率。厂商定价页 + 一手工程博客
把上下文压到任务真正需要的量、给模型看得到的剩余空间、把状态外置成文件、把探索外包给子智能体、每个任务从干净会话开始——这些动作在 2024 与 2026 的模型上都有效,而任何具体的百分比都会随版本失效。优化的目标不是“保持在某个百分比内”,而是“让窗口里只剩高信号 token,并让模型知道自己还有余量”。本报告判断
在中文技术社区里,“smart zone”常被直接译成“智能区 / 黄金上下文区间”,并被当作模型的一个固有属性来讨论。这个用法有双重偏差:它既高估了概念的严谨性,又低估了它的实用价值。先把三个被混为一谈的含义拆开。
模型还能不能准确推理。由注意力机制与位置编码的架构约束决定,可用 MRCR v2 / RULER / LOCA-bench 测量。特征是平滑退化 + 局部断崖,不随使用者的操作改变,只随模型版本改变。
模型愿不愿意把活干完。当它判断自己“空间不够”时会提前收尾。这是行为模式的切换,不是能力下降,触发阈值与真实余量无关。缓解手段是让模型看到余量,而不是压缩上下文。
用得起、等得起的规模上限。由分层定价(超阈值 2 倍计费)、KV-cache 命中率、首 token 延迟共同决定。它在能力边界之内很远处就可能已经生效。
Horthy 最初的 40% 说法,实际上是三条边界的一个粗略上界——他观察的是“什么时候开始不值得继续在这个会话里干”。把它当成模型的物理常数,是后续所有误用的根源。
需要先纠正的一处流行误引。中文与英文社区中流传着“Horthy 分析了 10 万+ 开发者会话,得出 40% 拐点”的说法(例如 npm 上的若干上下文状态栏插件页面)。没有任何一手材料支持这一表述。40% 是演讲中的口头经验值,演讲中明确说“40% 不是绝对数字,随任务复杂度变化”。“10 万+”这一数量级很可能来自与大型行业调查(DORA 类)的混淆——那类调查问的是 AI 使用与返工,与“上下文利用率拐点”不是同一件事。本报告凡引用 40%,都按“经验法则”而非“实验结论”处理。
以下六个词在日常讨论中几乎被当作同义词,但它们的测量方式、责任方和修法完全不同。分不清它们,就会用错药。
| 概念 | 回答的问题 | 怎么测 | 看到它会怎么做 |
|---|---|---|---|
| Context Window 标称容量 | 最多能塞多少 token | 厂商规格表 | 决定“能不能一次装下”,不决定“装下后能不能用” |
| Effective Context Length 有效长度 | 在多长输入内仍能达标 | RULER / NoLiMa 曲线 | 作为容量规划的真实分子;低于标称 50%–65% 是常态 |
| Context Rot 上下文腐烂 | 长度本身是否伤害性能 | 固定任务复杂度、只变动长度 | 承认“更多 token 不是免费的”,主动压缩与精选 |
| Lost in the Middle 位置效应 | 信息放在哪里会被忽略 | 针位扫描(首 / 中 / 尾) | 重排而非压缩:关键约束放开头与结尾 |
| Dumb Zone / Smart Zone 经验水位线 | 什么时候该重开一个会话 | 无受控测量;实践观测 | 作为操作触发条件使用,不作容量依据 |
| Context Anxiety 行为切换 | 模型是否在自我误判余量 | 轨迹分析 + 焦虑检测协议 | 给模型可见的余量、加反提前收尾提示、而非压缩 |
把上面这些收敛成一个可操作的判断:一个任务是否处在 smart zone,取决于两个量的比值,而不是绝对 token 数。
信号密度 = 任务相关 token ÷ 窗口内总 token
余量可见性 = 模型能感知到的剩余空间 ÷ 它完成任务所需的估计空间
这个判别式的价值在于:它把“我该不该 /clear”从“我现在几 % 了”变成“我窗口里有多少东西跟当前任务无关”。后者才是可执行的。
“上下文变长会变笨”不是玄学,它有明确的机制来源。理解机制的回报是:每条机制都能直接推导出一个工程动作。反过来,如果你听完一段解释仍不知道明天该改什么,那段解释就是没用的。
Transformer 让每个 token 与其它所有 token 建立联系,n 个 token 对应 n² 组两两关系。当上下文从 10K 涨到 100K,模型需要处理的关系数量从 1 亿涨到 100 亿。Anthropic 在《Effective context engineering for AI agents》中把这表述为一个注意力预算(attention budget):每引入一个新 token,都会消耗掉一部分预算。这不是容量问题——容量还在,是每个 token 能分到的注意力被稀释了。
这也解释了一个反直觉的实验结果:Chroma 在 18 个模型上发现,结构连贯的文本作为“大海”时表现更差,打乱句子顺序反而更好。因为连贯的结构让无关内容看起来更有相关性,从而更有效地参与竞争那份固定预算。
模型的长上下文能力大量依赖位置编码外推(如 RoPE 缩放 / YaRN)。这意味着超出训练分布的长度上,模型对“这个 token 排在第几位”的理解本身就是含噪的。结果是经典的首尾偏好:开头与结尾被认真处理,中间被系统性低估。这就是 Lost in the Middle(Liu et al., arXiv:2307.03172)。
关键区别:位置效应是“重排问题”,长度效应是“容量问题”。把关键约束从中间挪到结尾,不需要减少一个 token 就能拿回大部分损失;而减少总长度则要动别的手段。两者常被混为一谈,导致人们用压缩去解决本可以靠重排解决的问题。
arXiv:2510.05381(EMNLP 2025 Findings)做了一组很干净的实验:在数学、问答、编程任务上,先保证所有相关信息 100% 被检索到,只改变无关内容的多少。结果性能仍随长度下降 13.9%–85%。更关键的两步:把无关 token 换成干扰极小的空白,仍至少掉 7%;把无关 token 全部掩码、强制模型只看相关 token,仍至少掉 7.9%。
这条结论的工程含义非常硬:“检索做好了就没问题了”是错的。任何以“把全部相关文件都塞进去,让模型自己挑”为核心的设计,都在为一个无法通过检索优化消除的损耗付费。该研究给出的缓解手段本身也很朴素——让模型先复述检索到的证据,再解题,在 RULER 上让 GPT-4o 提升了约 4 个百分点。
模型是在“短序列远多于长序列”的数据分布上训练出来的,因此针对长程依赖的专门参数更少、经验更少。这一条解释了两件工程上很常见的事:为什么长上下文能力在不同任务族上退化速度不同(检索慢、多跳快);以及为什么厂商能把长尾段做好——它更多是训练与推理栈的工程问题,而不是不可逾越的架构墙。
| 机制 | 直接推出的工程动作 |
|---|---|
| 注意力预算被稀释 | 删掉与当前任务无关的一切:陈旧文件、上一轮任务的轨迹、未被使用的工具 schema |
| 位置外推导致位置理解退化 | 关键约束放开头与结尾;把任务指令在长上下文的末尾再复述一次 |
| 长度本身交税(与检索无关) | 不要靠“全塞进去 + 让模型挑”;把选取动作前移到检索层或代码层(programmatic tool calling) |
| 长序列训练样本更少 | 不要假设“更大的窗口会自然变得一样好”;对每个模型每一档长度实测,不要信规格表 |
| 失败路径会自我强化 | 同一问题纠正两次以上即 /clear 重开,不要在同一条轨迹里继续修 |
把第 1 节拆出的三种含义放到同一根坐标轴上,就能看出为什么“smart zone 是 40%”这句话既不算错、也几乎没用:四条不同性质的边界落在不同位置,而真正的可用区间是其中最靠左的那一条决定的。
| 边界 | 参考位置 | 依据 | 证据强度 |
|---|---|---|---|
| 经济边界 | 20% | Anthropic 对 Opus 4.6 超过 200K token 的请求提价至 $10 / $37.50(1M 窗口的 20%);OpenAI 对 GPT-5.4 超过 272K 按 2 倍计费。KV-cache 命中与未命中的成本差约 10 倍。 | 厂商定价页 |
| 能力边界 | 16–24% | LOCA-bench 实测:Claude-4.5-Opus 在环境描述 32K 时 84.0%、64K 时 65.3%(200K 窗口的 16% / 32%)。拐点出现在 32K 附近,而非 80K。 | 受控实验 |
| 行为边界 | ~30% | 一份生产观测:Kiro 的用量表显示 30%,同一会话中的模型声称“已没有空间继续”。单点观测,但方向与 Cognition 的发现一致——触发条件是模型自己的估计,不是真实余量。 | 单一案例 |
| 40% 经验线 | 40% | Horthy 的演讲经验值(2025-06)。用于回答“什么时候该重开会话”,不是容量规划依据。演讲中明确说明该比例随任务复杂度变化。 | 实践经验 |
工程讨论通常只盯准确率,但还有两个机制会提前把可用区间压窄,而且它们的作用是乘法的:
讨论“smart zone 是不是 40%”时,真正的分歧往往不在数字,而在参照系:说 40% 的人关心的是“什么时候质量开始掉”;说 20% 的人关心的是“什么时候开始不划算”;说“32K 就腰斩”的人关心的是“agent 在真实任务里什么时候开始丢要求”。三者可以同时为真。可执行的结论只有一句:以最靠左的那条边界为准做规划,把 40% 当作“最迟必须动手”的告警线。
这一节回答一个模型层面的问题:宣称的窗口,有多少是真正能用的?四组研究给出的答案高度一致——多数模型的有效上下文只有标称的一半甚至更少,而且这个折扣无法通过“把检索做得更好”来抹平。
NVIDIA 的 RULER(arXiv:2404.06654,COLM 2024)用 13 个合成任务覆盖四类能力——检索、多跳追踪、聚合、长文档问答,长度 4K 到 128K,每个长度 500 个样本。它定义一个模型在某个长度上“达标”的门槛是 Llama-2-7B 在 4K 时达到的 85.6%,然后把“仍能达标的最长长度”称为有效上下文长度。
结果是:在被评估的 17 个宣称 32K 以上窗口的模型中,只有 4 个在 32K 上仍维持达标水平。有效长度普遍落在标称值的 1/2 到 1/4 之间。
RULER 之后最有力的推进来自 Adobe Research 与 LMU 慕尼黑合作的 NoLiMa(arXiv:2502.05167,ICML 2025)。它指出 NIAH 类测试的一个致命漏洞:问题与“针”之间存在字面重合,模型其实可以靠关键词匹配过关。NoLiMa 重新设计了针集,让问题与针几乎不共享词汇,必须依赖潜在关联(例如问“哪个角色去过赫尔辛基”,而针是“Yuki 住在 Kiasma 博物馆附近”——你得知道 Kiasma 在赫尔辛基)。
在 13 个宣称支持 128K 以上上下文的模型上:
公平起见的另一面:Chroma 在《Context Rot》中对 NoLiMa 提出了方法论质疑——NoLiMa 中约 72.4% 的问题-针对需要外部世界知识,因此它实际测的是“检索 + 外部知识推理”两个任务,而不是纯粹的语义检索。这个批评成立。但结论方向未被推翻:一旦取消字面匹配的便利,退化会早得多、陡得多。
2025 年 7 月,Chroma 的 Kelly Hong、Anton Troynikov、Jeff Huber 发布了 18 个模型(含 GPT-4.1、Claude 4、Gemini 2.5、Qwen3)的受控实验,方法是固定任务复杂度、只改变输入长度,从而把“长度效应”与“任务变难”分离开。主要发现:
| 发现 | 内容 |
|---|---|
| 退化是普遍的 | 每一个被测模型、每一个长度增量上都出现性能下降,无例外。 |
| 结构连贯反而有害 | 把“大海”的句子随机打乱之后,全部 18 个模型表现都变好。连贯的结构让无关内容看起来更相关,更有效地参与注意力竞争。 |
| 干扰项的影响会放大 | 单个干扰项即造成下降,四个干扰项进一步加剧;且影响在不同模型间高度不均匀。 |
| 不同厂商的失败方式不同 | Claude 系列幻觉率最低、倾向保守弃权(明确说“找不到”);GPT 系列在存在干扰项时幻觉率最高,常生成自信但错误的答案。 |
| 最简任务也会崩 | “复制一串重复单词并在指定位置插入一个异类词”这种任务,也随长度持续退化。Opus 4 是衰减最慢的,但也是唯一会拒绝执行的(2.89%)。 |
| 聚焦提示远优于全量提示 | 在 LongMemEval 上,只给相关片段的“聚焦输入”显著优于 113K 全量输入,Claude 系列的差距最大。 |
需要标注的利益相关:Chroma 是向量数据库厂商,其商业利益与“检索优于全量塞入”的结论一致。但该报告公开了完整实验代码、采用固定复杂度对照设计,且结论与 NoLiMa、RULER 相互独立地指向同一方向,因此仍按受控实验使用。全实验的拒绝率仅 0.035%(194,480 次调用中 69 次),说明这不是“模型不配合”造成的伪像。
arXiv:2510.05381(EMNLP 2025 Findings)是这条证据链上最干净的一环。作者在 5 个开源与闭源模型、数学 / 问答 / 编程三类任务上,先保证相关信息 100% 被检索到,然后只改变无关内容的数量。三档对照:
| 条件 | 性能变化 | 说明 |
|---|---|---|
| 完美检索 + 正常无关文本 | −13.9% ~ −85% | 输入变长本身即造成大幅退化,且仍远在标称窗口内 |
| 无关 token 替换为空白 | ≥ −7% | 干扰已降到最小,退化依旧存在 |
| 无关 token 全部掩码 | ≥ −7.9% | 强制模型只关注相关 token,退化依旧存在 |
作者给出的缓解手段也很朴素:让模型先复述检索到的证据,再解题,把长上下文任务改造成短上下文任务——在 RULER 上让 GPT-4o 提升约 4 个百分点。这与 Manus 的 “recitation” 实践(不断重写 todo.md 把目标推回注意力热点)在原理上是同一件事。
这一节的净结论:“把上下文做厚”与“把上下文做准”是两条独立的技术路线,而后者在 32K 之后就已经开始显著占优。不要指望更好的检索来拯救长上下文;要用更短的上下文来让它不需要被拯救。
上一节测的是“一次调用能处理多长输入”。但编程助手不是一次调用,它是一个循环:探索、读文件、跑命令、看报错、再改。这个循环里的上下文是自己长出来的。2026 年出现的第一个可控基准,给出的答案比单次推理层更悲观。
HKUST 的 LOCA-bench(arXiv:2602.07962,Zeng / Huang / He)解决了长期困扰这个领域的一个混淆:在真实 agent 任务里,上下文变长往往也意味着任务变难,因此无法判断退化来自长度还是难度。它的做法是自动放大环境状态、同时保持任务语义完全不变——例如把待处理的邮件、表格、数据库记录成倍增加,但“把 A 表按 B 规则汇总”这个指令一个字都不改。
方法细节:15 个种子任务(改编自 Toolathlon),280 个工具,7 档环境描述长度(8K / 16K / 32K / 64K / 96K / 128K / 256K),每档 5 个随机种子,共 525 个样本,统一使用 ReAct scaffold,模型在各自最大上下文内运行。
把 LOCA-bench 的数字换算成窗口占比,就能直接检验 40% 规则:
| 模型 | 标称窗口 | 8K 准确率 | 32K(16%) | 64K(32%) | 能力拐点 |
|---|---|---|---|---|---|
| Claude-4.5-Opus | 200K | 96.0% | 84.0% | 65.3% | 约 32–48K(16–24%) |
| GPT-5.2-Medium | 400K | 72.0% | 60.0% | 52.0% | 约 32K(8%) |
| Gemini-3-Flash | 1050K | 64.0% | 40.0% | 36.0% | 约 32K(3%) |
| DeepSeek-V3.2-Thinking | 130K | 78.7% | 61.3% | 45.3% | 约 96K(74%) |
结论有两层:
GPT-5.2-Medium 的 8K 起点(72.0%)明显低于 Claude-4.5-Opus(96.0%),但它的曲线更平缓,在 128K 处反超(38.7% vs 34.0%)。“短上下文更强”与“长上下文更稳”是两个独立属性。选型时如果不区分,很容易把“在小任务上更聪明”误当成“在大任务上更可靠”。
LOCA-bench 记录的不只是准确率,还有轨迹长度、工具调用次数与工具输出量。一个重要发现是:随着环境变大,这些量先上升、然后趋于平台。作者的解释是——面对过长的上下文,模型会减少探索。这正好与 context anxiety 的机制吻合:不是能力不够,是行为收窄。论文归纳出四类被长上下文放大的失败模式:
| 失败模式 | 表现 |
|---|---|
| 复杂推理退化 | 无法把多来源信息合并,或漏掉中间查询,导致任务不完整或错误 |
| 指令遵循变弱 | 漏掉显式约束、输出格式不合规(例如 CSV 列名写错) |
| 探索不足 | 把部分证据当成全面证据,提前收尾——例如工具返回分页结果时不翻页 |
| 类幻觉的不一致 | 在后续推理或生成代码时,窜改或编造之前已检索到的事实 |
论文还测试了六种上下文工程策略在同一环境(128K)下的效果:工具结果清除、思考块清除、上下文压缩、上下文感知(实时告知余量)、记忆工具、程序化工具调用(让 agent 写代码来编排工具,只把最终结果返回给模型)。结论是:程序化工具调用效果最稳定、最显著,同时缩短轨迹长度;而记忆工具与上下文感知对 Gemini-3-Flash、GPT-5.2-Medium 有帮助,却反而伤害了 DeepSeek-V3.2-Thinking。这是一个很实用的警告:上下文工程手段不是通用药,对部分模型会有负作用,必须实测。
论文自陈的局限:任务域仅限电商与教育场景;策略是规则式的;只测到 256K;环境描述中包含较多脚手架,绝对数值可能偏悲观。作者认为模型间的相对排序仍可信,因为造成退化的机制(位置偏置、注意力稀释、softmax 锐化)是架构级的、所有模型共享。
arXiv:2602.16069《The Limits of Long-Context Reasoning in Automated Bug Fixing》提供了一个很实用的对照数据。作者统计了在 SWE-bench Verified 上运行 agent 的完整对话长度:
在所有被测模型上,完整对话一般不超过 20K–30K token。而且成功的解倾向于用更短的上下文;上下文更长的样本,解决率反而更低。作者谨慎指出这可能是“更难的问题本身需要更长推理”造成的混淆,但方向的启示是明确的。
作者构造了保证 100% 召回(所有需要的文件都在上下文里)的 64K 数据集,结果:Qwen3-Coder-30B-A3B 解决率 7%,GPT-5-nano 0%。失败模式包括 diff 头行号错误、指向不存在的文件。“检索 100% 正确”与“能改对 bug”之间隔着一整条鸿沟。
Anthropic 在多智能体研究系统的复盘中给出了一组常被引用的成本比例(经二次来源转述):单智能体消耗约为普通对话的 4 倍,多智能体约为 15 倍;并且在 BrowseComp 评测中,token 使用量解释了约 80% 的性能方差,工具调用次数与模型选择是额外因素。
这组数字的含义是双面的:它说明长任务的上限确实与“能消耗多少上下文”强相关,因此 subagent 隔离不只是省钱手段,也是能力手段;同时它也说明,多智能体是一种昂贵的能力购买,只在任务价值足以覆盖 15 倍成本时才成立。
这一节只用厂商官方发布的评测数据(OpenAI、Anthropic、Google DeepMind 的模型页与模型卡)与同行评议论文数据,不用聚合站的二手整理。原因很简单:长上下文这个指标上,二手数据的偏差极大——同一个模型在不同来源里的“有效上下文”可以差一倍以上。
关于数据源的一条硬规则。本报告在调研中遇到多份聚合站表格,给出诸如“GPT-5.5 可用 512K(50% 有效率)”“Claude Opus 4.6 可用 500K”“Gemini 3.1 Pro 可用 128K(13%)”这类“有效率”数字。这些数字没有可追溯的测量方法(不知道用什么基准、什么阈值、几个 needle、什么位置分布),且彼此矛盾。这类表格可以当线索,不能当依据。下面每个数字都标注了它来自哪个官方评测的哪一档。
MRCR(Multi-Round Coreference Resolution)最初来自 Google DeepMind 的 Michelangelo 评测套件,OpenAI 在 2025 年 4 月把它公开化:在长合成对话中插入多个近乎相同的请求(2 / 4 / 8 个),要求模型取回“第 3 首关于貘的诗”这种需要区分同形项的结果。它比大海捞针难得多——因为所有针都是同一个模型写的,彼此高度相似,靠关键词匹配无法区分。它测的是检索 + 实体区分 + 序列定位,接近“在 500K 行的 PR 里找第 4 版实现”这种真实需求。
| 评测 | ≤8K | 16K | 32K | 64K | 128K | 256K | 512K | 1M |
|---|---|---|---|---|---|---|---|---|
| GPT-5.4 · MRCR v2 8-needle | 97.3 | 91.4 | 97.2 | 90.5 | 86.0 | 79.3 | 57.5 | 36.6 |
| GPT-5.5 · MRCR v2 8-needle | 98.1 | 93.0 | 96.5 | 90.0 | 83.1 | 87.5 | 81.5 | 74.0 |
| GPT-5.4 · Graphwalks BFS | 93.0(0–128K 合计) | 21.4(256K–1M 合计) | ||||||
| GPT-5.5 · Graphwalks BFS | — | — | 73.7 | — | 45.4 | |||
| Gemini 3.1 Pro · MRCR v2 | — | 84.9 | — | — | 26.3 | |||
数值单位皆为百分比。GPT-5.4 / GPT-5.5 数据来自 OpenAI 官方模型页;Gemini 3.1 Pro 的 128K(84.9%)与 1M(26.3%)来自 Google DeepMind 的 Gemini 3.1 Pro 模型卡。注意 Gemini 的一行里,1M 分数与它的前一代 Gemini 3 Pro 完全相同(26.3%)——这一代在长上下文检索上没有改进。
Anthropic 在 2026 年 2 月发布 Claude Opus 4.6 时给出了一个很有说服力的对照:在 MRCR v2 的 8-needle 1M 变体上,Opus 4.6 得 76%,而同一家族的 Sonnet 4.5 只有 18.5%。Anthropic 的表述是这代表了“模型实际可用上下文长度的一次质变”。
这句话值得认真对待。它说明“1M 窗口”这个规格本身早已不是区分度——真正的区分度是在 1M 处还能不能干活。同一个产品线内的两个模型在这项指标上相差 4 倍,意味着任何按“窗口大小”做的选型都是无效的。
另外一个值得注意的信号是:Anthropic 在 Opus 4.6 上明确把 context compaction 写进了评测方法——Humanity's Last Exam 的测试中压缩在 50K token 处触发、累计跑到 3M;BrowseComp 中同样 50K 触发、累计跑到 10M。这等于厂商自己在承认:“长上下文能力”的正确形态是“压缩 + 长任务的组合能力”,而不是一次性塞入的能力。
2026 年 4 月的 SWE-bench Verified 榜单前五名:Claude Opus 4.5(80.9%)、Claude Opus 4.6(80.8%)、Gemini 3.1 Pro(80.6%)、MiniMax M2.5(80.2%)、GPT-5.2(80.0%)。前五名相差不到一个百分点,排名会随脚手架选择而月度重排。
与此同时,同一批模型在长上下文指标上差异巨大:Gemini 3.1 Pro 的 SWE-bench Verified 是 80.6%,与 Opus 4.6 几乎持平;但它在 MRCR v2 的 1M 上是 26.3%,远低于 Opus 4.6 的 76%。短任务能力趋同、长任务能力分化——这正是“smart zone”在 2026 年重新变得重要的原因。
| 模型 | SWE-bench Verified | Terminal-Bench 2.0 | MRCR v2 长尾端 |
|---|---|---|---|
| Claude Opus 4.6 | 80.8% | 65.4% | 76.0%(1M) |
| Claude Opus 4.5 | 80.9% | — | — |
| Gemini 3.1 Pro | 80.6% | 68.5% | 26.3%(1M) |
| GPT-5.4 | — | — | 36.6%(512K–1M) |
| GPT-5.3-Codex | 56.8%(Pro) | 77.3% | — |
SWE-bench 与 Terminal-Bench 数据来自各厂商发布材料与榜单聚合;跨厂商比较存在脚手架差异,仅用于说明“短任务趋同”。Terminal-Bench 2.0 与 SWE-bench 的难度、口径不同,不可横向互推。
不存在“2026 年的通用 smart zone 百分比”。存在的是每个模型在每个任务族上的一条衰减曲线,而且这条曲线每几个月就被厂商重画一次:GPT-5.4 → GPT-5.5 在 512K–1M 段提升了 37.4 个百分点;Opus 4.5 → 4.6 在 1M 段从“不可用”级别跃升到 76%。任何写死在代码或规范里的窗口百分比阈值,都会在下一个模型版本上过期。
“模型能力”只是上限的一半。同一个模型放进不同 harness(脚手架),长任务表现可以差出数倍。这一节对比各主流 agent 的上下文机制——重点不是谁做得更好,而是它们对“上下文为什么会坏”给出了四种互不兼容的诊断,且都能跑通。
| 工具 | 窗口与触发 | 主要手段 | 隔离与可观测 |
|---|---|---|---|
| Claude Code Anthropic |
自动压缩按 token 窗口而非比例配置,autoCompactWindow 可取 100K–1M,用 /autocompact 500k 设定 |
三层:microcompact(零模型调用,把旧工具输出归档到临时文件并替换为路径引用;触发条件为总量 >40K 且可省 >20K,保留最近 3 个工具结果)→ auto-compact(接近上限时摘要)→ /compact [焦点指令] 手动。另有 /clear、/rewind 的“从这里/到这里总结”、/btw(答案不进历史) |
subagent 是官方首推的上下文工具:官方模拟中研究子智能体在自己的窗口里读了 6,100 token 的文件,主会话只收到 420 token 的摘要。/context 可查当前占用 |
| Codex CLI OpenAI |
默认 272K,长上下文模式至约 1.05M | 压缩时分三步:跳过最近 2 轮用户对话 → 保护最近 40K 的工具输出不动 → 更老的工具输出用时间戳标记为“已压缩”,模型只看到占位符 [Old tool result content cleared](数据仍在库中) |
有 context compaction;用户报告压缩后可能丢失细节(例如忘记早前指定的运行环境版本) |
| Cursor Anysphere |
超出模型窗口时自动压缩旧消息,并提示用户开启带摘要的新对话 | Dynamic Context Discovery(官方博客):长工具响应写入文件、由 agent 用 tail 按需读取;聊天记录作为文件引用以提升摘要质量;集成终端会话全部当作文件同步到本地;MCP 工具描述同步进文件夹,只注入工具名 |
Canvas 内的 Context Explorer 细分 token 去向(系统提示 / 工具定义 / rules / skills),并内置 “Debug with Agent” 按钮让 agent 主动找压缩机会 |
| Cline | 按 utilizationRatio 触发,支持固定预留或百分比阈值;未提供模型信息时默认 128K |
压缩流水线两种策略可选:basic(裁掉最老消息,保留 system prompt 与最近若干轮)与 agentic(用第二个 LLM 生成摘要);手动压缩默认目标比例 0.5。v3.25 起提供 /smol(别名 /compact)手动压缩 |
Focus Chain 待办清单可穿越压缩存活,充当进度锚点 |
| GitHub Copilot | CLI 以 128K 为限;Agent 模式窗口取决于所选上游模型 | /compact 摘要历史、/clear 硬重置。/usage 给出三类 token 分解:对话历史、@ 引用注入的文件、系统指令 |
/context 显示占用百分比;@file 优于 @folder 是官方推荐的省上下文方式 |
| Amp Sourcegraph |
历史上不做自动压缩;2026 年 Neo CLI 加入 90% 用量时的自动管理 | 立场鲜明地拒绝递归摘要(引用 OpenAI 内部研究称递归摘要会导致性能逐步衰减),改用 /handoff:把当前线程要点打包进一个新线程,用户可在交接前审查并编辑带过去的内容 |
线程是一等公民,可用 @@ 引用其他线程、用 threads: map 可视化线程关系 |
| OpenCode | 未公开固定阈值 | 两步:Prune(用时间戳标记隐藏,而非真删,数据可恢复)+ Summary(五段式结构化摘要:目标 / 指令 / 发现 / 已完成 / 相关文件),并自动回放用户最后一条消息——让模型从你最近的指令继续,而不是从摘要文本继续 | 给模型看的详细摘要与给用户看的短摘要分离 |
Claude Code、Cursor、Cline 的部分机制来自各自官方文档与官方博客;Codex、OpenCode、Amp 的细节来自一份六家横评的技术分析(二手转述,未获官方文档逐一验证),已按“参考”而非“事实”对待。
把这些机制放回第 1 节的三条边界,可以看出它们其实是在治不同的病:
Claude Code / Codex / Cline / Cursor / Copilot / OpenCode。核心动作是把旧内容变小:工具结果清除 → 摘要 → 上下文重置。分层渐进、成本递增。这一派最成熟,也最容易过度设计。
Amp。认为递归摘要会带来累积语义漂移,因此坚持用“一系列有焦点的短线程”取代一个逐渐退化的长线程,并把交接内容交给人类审查。代价是人工成本,收益是可预测性。
Manus、Anthropic 的 memory tool、Cursor 的文件化策略。把文件系统当作无限、可还原的外部上下文;压缩必须保留指针(URL、文件路径),否则就是不可逆的信息损失。
所有家的 subagent 机制。核心不是省钱,是让探索过程不进入主会话。Anthropic 的说法很直接:“既然上下文是根本约束,subagent 就是最有力的工具之一。”
这是本报告里最重要的一条组织性教训,来自 Anthropic 的工程博客《Scaling Managed Agents》与《Harness design for long-running application development》:
Sonnet 4.5 会出现 context anxiety。Anthropic 为此在 harness 里加入了 context reset——清空窗口、开一个新 agent,同时传入结构化的交接材料。
换到 Opus 4.5 之后,这个行为消失了。于是这批 context reset 变成“纯开销”,还会带来额外延迟,并“在某些情况下导致缓存被错误丢弃”,反而在损害性能。
Anthropic 的总结:harness 编码的是“模型做不到什么”的假设;这些假设会随模型改进而过期。当模型变了而 harness 没变,agent 就会变差。
他们由此提出的架构解法是把“brain”(模型 + harness)与“hands”(沙箱与工具)以及 session(append-only 事件日志)解耦:上下文窗口是 session 日志的一个视图,而不是日志本身。这样压缩策略可以放在平台层,模型改进时不必重写 harness。
对自建 agent 产品的团队,这条教训可以直接翻译成一个工程要求:把“为当前模型缺陷打的补丁”显式登记成一份清单,并在每次换模型时逐条复验。不登记,它们就会变成没人敢删的死代码,并且持续拖慢系统。
| # | 原则 | 含义 | 来源 |
|---|---|---|---|
| 1 | 分层渐进,不一刀切 | 定义多个水位线,越接近上限手段越激进,系统始终在做小幅维护,避免悬崖式塌方 | 跨厂商分析 |
| 2 | 成本严格递增 | 便宜的(字符串截断、占位符替换)先做,贵的(调 LLM 摘要)最后做;能用 0 成本释放的空间绝不花钱买 | 跨厂商分析 |
| 3 | 增量摘要优于全量摘要 | 维护一份“活的摘要”,每次只合并新增部分,避免“摘要的摘要的摘要”造成语义漂移;同时单次摘要更便宜也更准 | 跨厂商分析 |
| 4 | 压缩必须可还原 | 丢内容可以,丢指针不行。保留 URL、文件路径、行号,让模型能自己取回原文(Manus、Cursor、Codex 的做法一致) | 工程实践 |
| 5 | 状态外置为文件 | 计划、进度、决策写进仓库里的文件,而不是依赖会话历史。这是跨会话连续性的唯一可靠载体 | 工程实践 |
| 6 | 先治污染,再治容量 | 失败轨迹、已被否决的方案、重复读取的文件,优先级高于“总量超了”。前者对推理的伤害是不成比例的 | 本报告综合 |
前面的证据说明“不能用满”。这一节回答“那到底花在哪了”。结论有点出人意料:在一次正常的编程会话里,聊天内容几乎不占预算,真正的开销是启动固定值、文件读取和工具 schema。
Anthropic 在 Claude Code 文档里放了一个可交互的上下文窗口模拟器,给出了一份“代表性会话”的 token 成本(官方标注为示意值)。它在设计上有两个用途:让你知道启动阶段并非免费;以及让你意识到——一个调试细节的代价,可能等于一整套工具链的启动成本。
把启动开销放回整场会话,官方同一份材料给出的比例是:
启动固定开销
系统提示、CLAUDE.md、记忆、技能清单、MCP 工具名
4 次文件读取
文件读取是上下文的主要消耗者
你自己的输入
命令与搜索输出约 8%
这三行数字加起来就能推出大部分“最佳实践”。既然聊天只占 1%,那么“少说两句”几乎没有收益;而“少读 3 个无关文件”能省下接近 25% 的预算。“用 @path 直接给文件,而不是让模型自己找”之所以有效,是因为它把“可能读 10 个文件”变成“确定读 2 个”。
工具定义(JSON schema)会被注入上下文,且与你是否调用它无关。围绕它流传着一批差异极大的数字。把它们并列之后你会发现:区间之宽本身就是结论。
关于成本量级,还有两个可直接采用的估算:简单工具约 300–400 token,复杂工具约 800–1,200 token;主流生态里开发者平均连接 4–7 个 MCP server。用这两个数乘一下,就能在接入任何 MCP 之前先算清楚代价。
把上面所有约束落在同一张表上。注意最后一行的“余量”不是浪费——它同时服务三件事:真实的能力缓冲、context anxiety 的安抚、以及出错时的回旋空间。
| 组成 | 预算 | 说明 |
|---|---|---|
| 系统提示 + 工具 schema | ≤ 4K | schema 一律延迟加载;不用的 MCP 直接不挂 |
| 项目规则(CLAUDE.md / rules) | ≤ 3K | 官方建议 200 行以内;参考性内容移到按需加载的 skill |
| 当前任务相关文件 | ≤ 40K | 单文件超过 5K 只给路径引用;用 @path 指定而不是让模型搜 |
| 工具输出累计 | ≤ 30K | 超过即清旧结果(保留指针,不保留内容) |
| 对话历史 | ≤ 20K | 跨任务用 /clear;同一任务出界用带焦点的压缩 |
| 输出预留 | ≥ 16K | 多数 API 的输入与输出共享同一窗口;Opus 4.6 最大输出 128K,Gemini 3.1 Pro 为 64K |
| 余量(不分配) | ≥ 80K | 这是 40% 规则唯一正确的用法——不是“用到 40% 就停”,而是“始终留出 40%” |
把 40% 从“使用上限”改读成“保留余量”,前面所有看似矛盾的证据就同时成立了:
Anthropic 的官方模拟会话只用了窗口的 11%(远在余量线之内);LOCA-bench 显示 16%–32% 处质量已经开始掉(说明 40% 作为使用上限太晚);Cognition 发现给模型更大的窗口但限制实际使用能治好 context anxiety(说明余量必须被模型感知到)。
三者指向同一件事:把窗口当预算,先划掉不用的 40%,再在剩下的 60% 里按任务分配。
前面的证据都指向同一个动作序列:先删无用的,再隔离探索,然后才压缩,最后才考虑换模型。下面按“个人日常 / 团队工程 / Agent 产品”分三层给出具体动作,每一条都能追溯到前文的一条证据。
| # | 动作 | 为什么 / 依据 |
|---|---|---|
| 1 | 一任务一会话,切换任务就 /clear | 官方明确:“长会话里充满无关上下文会降低性能”。切换任务时 /clear 比压缩更彻底也更便宜 |
| 2 | 两次纠正规则:同一问题纠正超过两次就停手重开 | 官方原话:此时上下文里已堆满失败方案,用更具体的提示重开,“几乎总是优于”继续修下去 |
| 3 | 直接给文件:用 @path 指定,而不是让模型搜索 | 文件读取占会话约 31%,用户自己的输入只占约 1%。让模型找 10 个文件 vs 你给 2 个,差 20 多个百分点 |
| 4 | 探索走 subagent | “我需要先搞清楚 X 怎么跟 Y 通信”这类任务最烧上下文,而结论往往只有几百 token |
| 5 | 压缩要带焦点:/compact focus on the auth bug fix | 自动压缩的摘要由模型猜什么重要;带焦点时由你决定保留什么 |
| 6 | 只在同一任务续做时压缩;跨任务一律 /clear | 压缩保留连续性,代价是摘要的信息损失;跨任务不需要连续性,也就没必要付这个代价 |
| 7 | 快速确认用 /btw,不让答案进入历史 | 查一个细节不该永久占用预算 |
| 8 | 动手前先出计划(计划模式) | 设计阶段不产生工具输出与长日志,避免大段内容在实现之前就占满窗口 |
| 9 | 定期 /context 看构成 | MCP 与技能清单的开销常常超出预期;第一步是看清,不是优化 |
| 10 | 换模型后重新校准,不要沿用上一代的手感 | GPT-5.4→5.5 在 512K–1M 段提升 37.4 个百分点;旧经验可能已经错的离谱 |
| # | 动作 | 为什么 / 依据 |
|---|---|---|
| 1 | CLAUDE.md 控制在 200 行内 | 官方判定标准:“删掉这行会不会导致模型犯错”。臃肿的规则文件会让模型忽略你的真实指令 |
| 2 | 参考性内容外移到 skill,但关键规则必须放项目根 CLAUDE.md | 带 paths: 前置声明的规则与嵌套 CLAUDE.md 在压缩后会丢失,需要匹配文件被再次读取才回来;技能清单在压缩后不再重新注入 |
| 3 | 在 CLAUDE.md 里写明压缩保留项 | 例如“压缩时始终保留已修改文件清单与测试命令”,把保留策略从模型的猜测变成你的规定 |
| 4 | 确定性约束用 hooks,不用提示词 | hooks 以代码形式运行、不占用上下文;提示词是建议性的,且每一轮都在付费 |
| 5 | MCP 治理:schema 延迟加载 + 描述瘦身 + 工具白名单 + 季度审计 | 工具定义占用区间可从 1.6% 到 80%;这是架构选择,不是宿命。生态里开发者平均连接 4–7 个 server |
| 6 | 用 subagent 做对抗性审查 | reviewer 在独立窗口里比对 diff 与规格,发现直接回到实现会话,不用你手工搬运。注意提示它只报影响正确性的缺口,否则会过度设计 |
| 7 | 把上下文指标纳入可观测性 | 需要采集:每会话 token 用量与曲线、压缩触发次数与时机、压缩后任务失败率、工具定义的 token 占比 |
| 8 | 登记“模型缺陷补丁”清单,换模型时逐条复验 | Anthropic 的教训:为 Sonnet 4.5 加的 context reset 到 Opus 4.5 变成纯开销,还破坏缓存 |
| # | 动作 | 为什么 / 依据 |
|---|---|---|
| 1 | 分层渐进压缩,成本严格递增 | 字符串截断 / 占位符替换(0 成本)先做,调 LLM 摘要(有成本、有损失)最后做 |
| 2 | 增量摘要,维护一份“活的摘要” | 避免“摘要的摘要的摘要”造成语义漂移;同时单次摘要输入更短,更便宜也更准 |
| 3 | 压缩必须可还原:丢内容可以,丢指针不行 | 保留 URL、文件路径、行号;Manus、Cursor、Codex 三家独立收敛到同一做法 |
| 4 | 状态外置为文件(进度文件 + git 历史) | Anthropic 的长任务 harness 用 init.sh + 进度文件 + 初始 git commit,让新会话能快速理解现状 |
| 5 | 让模型看到余量 | Cognition 的做法:开启更大的窗口但限制实际用量,模型相信自己有余量后行为恢复正常。也可显式告知剩余 token |
| 6 | session 日志与上下文视图分离 | append-only 日志是真相,覆盖窗口是它的一个视图。上下文策略可以放在平台层随模型更新,不必改 harness |
| 7 | 策略按模型实测,不跨模型照搬 | LOCA-bench:记忆工具与上下文感知对 Gemini-3-Flash、GPT-5.2 有帮助,却反而伤害 DeepSeek-V3.2-Thinking |
/clear 和 subagent,但没有“每个模型在哪个长度开始退化”的实测数据,因此每次换模型都要重新交学费。| 阶段 | 动作 | 可验收的产出 |
|---|---|---|
| 第 0–30 天 看清 |
全组统一 /context 与用量观测;审计现有 MCP 与规则文件的 token 占用;把 CLAUDE.md 压到 200 行内 |
一份“启动开销清单”(每项多少 token)+ 一份瘦身后的规则文件;MCP schema 改为延迟加载 |
| 第 31–60 天 控制 |
推行一任务一会话、两次纠正规则、探索走 subagent、压缩带焦点指令;建立按任务的上下文预算表 | 预算表进入团队规范;压缩保留项写进 CLAUDE.md;子智能体审查纳入交付流程 |
| 第 61–90 天 度量 |
用真实仓库跑分档长度测试,画出自家代码库上的衰减曲线;建立 harness 补丁清单与换模型复验流程 | 每个在用的模型一份“有效长度参考值”;换模型 checklist;压缩后任务失败率进入看板 |
为什么要自己测。第 5 节那位作者对 LOCA-bench 的评价适用于所有公开基准:绝对数值会随任务域与脚手架大幅变化,但相对排序通常是稳的。你的代码库有自己的文件大小分布、工具链与失败模式。公开榜单是先验,不是你的测量结果。第 90 天的交付物不是“我们读了最新的模型评测”,而是“我们知道在我们自己的仓库上,用哪个模型、在多少 token 处、什么任务类型开始变差”。
每一条都对应前文的一条证据。分三层:战略层决定方向,工程层决定日常效率,治理层决定这套东西能不能活过下一次模型换代。
| 反模式 | 症状 | 修正 |
|---|---|---|
| 按窗口大小选型 | “选 1M 的那个模型”;上线后发现长任务照样丢要求;账单还更高 | 按目标长度处的准确率选型。至少要问:在 128K / 512K / 1M 处分别是多少?出处在哪一档? |
| 把 40% 当物理常数写进规范 | 代码里出现 0.4 * context_window;换模型后规则自动失效却没人发现 |
改成两层:“始终预留 40% 余量”(不变)+ “每个模型的告警阈值单独配置”(随版本更新) |
| 用评测分数代表长任务可靠性 | SWE-bench Verified 前五名只差 1 个百分点,却据此排定优先级;忽略了同批模型在长上下文指标上差 4 倍 | 把长上下文鲁棒性单列为一个选型维度。短任务分数已经饱和,区分度不在那里 |
| 用“换更大的窗口”解决上下文不足 | 窗口从 200K 换到 1M,agent 还是在第 40 轮开始重复自己 | 先治信号密度与污染,再谈容量。窗口变大只会让“往里面乱塞”的代价更晚暴露、总额更高 |
| 信二手聚合站的“有效率”表格 | 表格里写着“模型 X 可用 500K(50% 有效率)”,但没有测量方法,且不同站点彼此矛盾 | 只用两种数据:厂商官方发布的评测分档,或你自己在真实仓库上跑出来的曲线 |
| 反模式 | 症状 | 修正 |
|---|---|---|
| 全量前置加载工具 schema | 一句“git status”之前,工具定义已经吃掉窗口的 27%–80% | 延迟加载(只注入工具名)+ 描述瘦身 + 工具白名单。三件一起做,才能从 26% 降到个位数 |
| 用压缩替代重排 | 为了省 token 删掉了放在中段的硬约束,然后奇怪模型为什么不遵守 | 顺序很重要:先重排(关键约束移到开头与结尾)→ 再删无用 → 最后才压缩 |
| 压缩不可还原 | 压缩后连“改过哪些文件”都说不清;模型开始重复已完成的修改 | 丢内容可以,丢指针不行。保留文件路径、行号、URL;把保留策略写进 CLAUDE.md |
| 递归全量摘要 | 摘要的摘要的摘要,语义逐步漂移;模型信心十足地执行一个已经变形的需求 | 增量摘要:维护一份“活的摘要”,每次只把新增部分合并进去,不重写历史 |
| 让模型自己找文件 | 一句开放式指令触发十几次搜索与读取,占掉整场会话三分之一预算 | 用 @path 直接指定。文件读取与启动开销合计占会话约 66%,你自己的输入只占 1%——优化后者是徒劳 |
| 在同一条轨迹里反复纠正 | 对话越来越长,模型越来越差;每一次纠正都成为下一轮的“先例” | 两次纠正规则:超过两次就停手,/clear,用吸收了经验的新提示重开 |
| 状态只存在会话历史里 | 换会话、崩一次、压缩一次,进度就没了;新会话从猜开始 | 进度、决策、计划写成仓库里的文件(progress 文件 + git 历史),并作为初始化的标准动作 |
| 忽略输出预留 | 输入塞到接近上限,输出被截断在半句代码上 | 多数 API 的输入输出共享同一窗口。至少预留 16K;Opus 4.6 最大输出 128K、Gemini 3.1 Pro 为 64K |
| 用提示词做确定性约束 | “绝对不要动 migrations 目录”这类规则时灵时不灵,还要每轮付费 | 用 hooks。它们以代码运行、不占上下文、保证触发。提示词留给判断性的事 |
| 反模式 | 症状 | 修正 |
|---|---|---|
| 失败经验以“权威说法”形式传播 | “Horthy 分析了 10 万+ 开发者会话得出 40%”被反复引用;无人能给出出处 | 给每条经验标证据强度。经验法则就写“这是经验法则”,不要包装成实验结论 |
| 不为模型缺陷补丁登记清单 | harness 里堆着一批没人敢删的 workaround;它们开始拖慢系统、破坏缓存 | 每条补丁记录:为什么加、针对哪个模型行为、什么条件下可以删。换模型时逐条复验 |
| 不度量上下文 | 只知道“这个月 token 涨了”,不知道是哪个会话、哪个阶段、哪次压缩造成的 | 采集四类指标:每会话 token 曲线、压缩触发时机与次数、压缩后任务失败率、工具定义占比 |
| 跨模型照搬上下文策略 | 把给 A 模型调好的记忆工具与上下文感知直接用在 B 上,效果反而变差 | 策略按模型实测。LOCA-bench 已经证明同一套策略对不同模型可以是正收益或负收益 |
| 只看 token 成本、不看延迟 | 成本可控,但多步 agent 任务因为每步都在等首 token 而变得不可用 | 把延迟纳入预算:128K 上下文首 token 约 15 秒、1M 约 1 分钟(厂商公开数据)。多步任务里它会复利 |
以下内容中,凡是标注为“判断”的,是本报告基于前述证据的推论,不是行业共识,也不来自任何单一来源。
它回答的是“什么时候该停下来重开一个会话 / 换一种做法”,这部分非常有价值。它没有回答“模型在多少 token 处开始退化”——这需要按模型、按任务族实测。把前者当后者用,是几乎所有误用的来源。本报告给出的替代方案是把它重读为“始终保留 40% 余量”,这样它同时与官方模拟数据(健康会话只用 11%)、LOCA-bench 的早期拐点(16%–32%)、以及 Cognition 的焦虑缓解方案(给模型可见余量)三者自洽。
窗口在两年内从 8K 涨到 1M,而有效上下文只是从“一半”涨到“一半以上”。同时,agent 的真实健康轨迹依然在 20–30K 量级(SWE-bench 统计),并且 64K 完美检索条件下的单次修复成功率可以低到 0%–7%。决定产出的是窗口里那一小撮 token 的质量,而不是窗口的容量。
SWE-bench Verified 前五名相差不到一个百分点,而同一批模型在长上下文的 1M 端点相差 4 倍;同一套模型放进不同 harness,token 消耗可以差 4–5 倍而代码质量几乎无差别。当模型能力趋同,harness 与上下文策略就是唯一还有杠杆的地方——这也正是 Horthy 所说“coding agent 能力会商品化,差异化转移到团队与工作流适配”的经验版本。
| 判断 | 理由与可观察信号 |
|---|---|
| “窗口百分比”类经验的半衰期会继续缩短到 3–6 个月 | GPT-5.4 → GPT-5.5 在 512K–1M 段 +37.4 个百分点;Opus 4.5 → 4.6 在 1M 段从小几十个点跃升到 76%。任何写死的阈值都会在下一个版本失效。可观察信号:厂商开始主动在模型页发布分桶成绩,而不是单一“1M 可用” |
| context anxiety 会从“提示词技巧”变成训练层修复 | ICML 2026 的《Lost in Context》已经证明:轻量 SFT 可以让焦虑下降超过 50%,说明这是行为可变的,而不是能力不足。Anthropic 的实践也印证了同一路径(Opus 4.5 上该行为自行消失)。可观察信号:新模型开始发布“长任务完成率”而非仅“检索准确率” |
| “压缩 + 长任务”的组合可靠性会成为新的评测战场 | Anthropic 已经把 compaction 写进评测方法(HLE 累计 3M、BrowseComp 累计 10M token),这是在为“单次塞入”之外的能力建标准。可观察信号:出现以“跨 N 次压缩后的任务完成率”为主指标的公开基准 |
| 上下文观测工具会从“显示百分比”进化为“预测拐点” | 当前工具(Claude Code 的 /context、Cursor 的 Context Explorer、各类状态栏插件)都只显示占用。真正的需求是在任务变坏之前报警。可观察信号:出现基于轨迹特征(重复读取、工具调用平台化、输出变短)而非单纯 token 数的预警产品 |
| 角色 | 如果只做一件事 |
|---|---|
| 日常使用者 | 执行“两次纠正规则” + 任务之间 /clear。这两个动作几乎零成本,且直接命中上下文里最贵的那部分——失败轨迹。 |
| 团队技术负责人 | 把 CLAUDE.md 压到 200 行以内,并把 MCP schema 改成延迟加载。这两件事同时降低每一轮的固定成本,且不依赖任何模型特性。 |
| Agent 产品开发者 | 把 session 日志与上下文窗口解耦,然后建立“模型缺陷补丁清单 + 换模型复验流程”。这是唯一能让你在模型每三个月换代一次的节奏下不被拖死的架构选择。 |
按证据类型分组。本报告的原则是:中文二手转述只用于线索发现,所有引用数据回溯一手来源;引用前做数量级反推自洽性检查。
/clear、/compact 焦点、subagent、rewind 检查点、常见失败模式);Explore the context window(启动开销示意值、压缩生存表、/autocompact 窗口);Claude Code on the web(云端自动压缩在窗口中点触发)。/context、/compact、/clear、/usage 的三类 token 分解;128K 限制。autoCompactWindow 100K–1M)配置,未公布百分比。一份针对未公开环境变量的第三方分析给出约 78%;另有实践者博客称约 95%。本报告不采用任何单一比例,只采用“按 token 窗口而非比例配置”这一官方事实。