导语:国内教程还在教“提示词模板七件套”的时候,海外Agent圈已经吵完了一场更大的架:Agent做不好,不是模型笨,是你把上下文喂错了。这场争论从Karpathy一条推文开始,被Manus、Anthropic、Cognition三篇帖子推向高潮,最后落地成一个扎心的结论——打开计费面板看“缓存命中率”,比改一百句Prompt都管用。本文带你复盘这场热议的来龙去脉、拆出可以直接抄的工程军规,并告诉你国内API怎么吃到同样的折扣红利。
导火索(2025年6月):Andrej Karpathy(前OpenAI创始成员、前特斯拉AI总监)在X上发帖,明确表态“+1 for context engineering over prompt engineering"——他认为“提示词工程”这个词已经装不下现代Agent的开发内容了,真正的工作是为每一次LLM调用精心组装上下文:放哪些信息、放多少、以什么格式、放在哪个位置。这条推文在海外圈疯转,“Context Engineering(上下文工程)”从此成了独立工种。
第一篇重锤(2025年6月):Cognition AI(Devin的开发商)发布博客《Don't Build Multi-Agents》,核心观点只有两条原则:
结论很反直觉:先老老实实写单线程线性Agent,别学LangGraph搭多智能体编排。
第二篇重锤(2025年7月):Manus团队(Yichao "Peak" Ji 执笔)发布《Context Engineering for AI Agents: Lessons from Building Manus》,登上Hacker News当日热榜。这篇才是把话题从“理念”打落到“账单”的关键——它直接宣称:KV缓存命中率是生产级长上下文Agent最重要的单一指标。据其博客披露,Manus通过自建基础设施,把Agent运行阶段的命中率做到了90%以上。
第三篇背书(2025年9月):Anthropic官方工程博客发布《Effective context engineering for AI agents》,把“上下文工程”正式纳入官方话语体系,给出压缩(compaction)、结构化笔记、子Agent隔离三种上下文管理手段。至此,这场讨论从推特口水战升级为行业方法论。
光有工程经验还不够,Chroma研究团队2025年7月发布《Context Rot》实验报告补上了数据这一环:他们用多种“大海捞针”变体任务(包括标准NIAH、KV检索、词形变化检索等)测试了18个模型(覆盖GPT-4o、Claude、Gemini、Qwen等主流长上下文模型),核心发现是:
这份报告直接打脸了“长上下文模型一出,RAG和上下文管理都要死”的乐观派:窗口再大,塞垃圾进去就出垃圾。上下文工程不是权宜之计,是长期必修课。
这部分的含金量最高,每条都能直接落到你的Agent代码里:
原理很简单:大模型推理的注意力计算中,前缀相同部分的KV缓存可以直接复用。Anthropic官方定价中,缓存命中的输入token按约0.1倍计价(写入时约1.25倍,之后读取只要1/10);Gemini 2.5系列开启隐式缓存后,命中部分约2.5折(具体折扣以官方价格页为准)。国内方面,DeepSeek API早已上线前缀缓存自动折扣,命中部分大幅降价;据Moonshot AI披露,Kimi K2在模型设计阶段就刻意做了前缀缓存友好优化。同一段系统提示,命中和没命中,账单差出一个数量级。
Manus的原话是设计提示词时遵循一个口号:"Keep it stable"。缓存按前缀逐token匹配,哪怕只差1个token,从那里开始全部作废。检查你的代码里有没有这些杀手:
正确姿势:可变内容全部推到上下文最尾部,头部保持字节级稳定。
Agent循环里最容易犯的错:为了“省token”回头改写旧的工具调用结果、或者把上一步的观测值“更新”成新值。每一次改写都会让该位置之后的所有缓存失效。Manus的做法是日志式追加:历史动作和观测只增不改,哪怕中间有错误也原样保留。
flowchart TB
U["用户指令"] --> A["Agent主循环"]
A --> P["拼装上下文"]
P --> S["稳定前缀层:系统提示+工具schema+示例"]
P --> D["动态尾部层:历史消息+最新观测"]
S --> C{"前缀与上次一致?"}
C -->|一致| H["缓存命中:约0.1倍计价"]
C -->|不一致| M["缓存失效:全价写入"]
H --> L["调用LLM"]
M --> L
L --> O["产出新观测"]
O --> AP["append-only追加,不改旧内容"]
AP --> LEN{"上下文超限?"}
LEN -->|是| CP["压缩旧段+关键状态写入todo.md"]
LEN -->|否| A
CP --> A
直觉做法是“当前用不到的工具就从schema里删掉,省token又防误用”。但删工具会让后续所有工具定义的位置前移,缓存直接全灭。Manus的方案:工具列表永远保持静态,改用状态机控制工具的启用/禁用,在解码阶段用logits masking屏蔽当前不该调的工具名——模型“看得见但点不动”。对用第三方API、拿不到logits的开发者,折中方案是在系统提示里用强约束描述当前阶段允许的动作。
上下文窗口装不下整个任务时,把结构化状态落盘到文件(如todo.md),每次循环开始时重新读入关键部分。更妙的是Manus提到的"recitation(复述)"技巧:让Agent周期性地把目标和进度重写进todo.md——这一动作相当于强迫模型“复读”自己的任务,显式对冲“迷失在几百轮工具调用里”的目标漂移。英文有句谚语"fatigue makes cowards of us all",Agent也一样。
很多人清理上下文时把失败的尝试删掉只留成功路径。Manus的观察相反:保留wrong turns(错误尝试)能让模型在后续更新自己的信念,避免反复跳进同一个坑。真正该清理的是垃圾——那些撞了API限流可以重试的原始错误体、可以换更高效工具实现的冗长动作,才是修剪对象。
另有一个反面警告:少样本陷阱(few-shot rut)。上下文里成功案例的模式重复太多次,模型会过度模仿——见过一次Cron表达式的示例后,哪怕当前任务不需要定时,它也可能硬塞一个调度器进方案。多样性比整齐更重要。
| 阵营 | 代表 | 核心论点 |
|---|---|---|
| 支持派 | Karpathy、Anthropic、Manus、Cognition | Agent失败大多是上下文组织问题而非模型智力问题;缓存是唯一能同时降本和提速的杠杆 |
| 怀疑派 | HN评论区主流质疑声 | "Context engineering就是prompt engineering换了马甲,又造新词卖课" |
| 乐观派 | 部分长上下文信仰者 | 模型窗口继续扩大、注意力机制进化后,这些trick终将过时——但被Context Rot实验数据打脸 |
| 务实派 | 大量中小开发团队 | 别管叫什么名字,打开计费面板看缓存命中率从30%到90%的账单差异,答案自然有 |
HN上还有一个高赞的中间立场值得玩味:“这是提示词工程的超集而不是替代”——提示词工程解决“单次调用怎么问”,上下文工程解决“几十轮循环里每次调用喂什么”,二者叠加才是完整的Agent开发。对每天跑数百万token的团队,这场“造词之争”的最终裁判是财务报表。
| 你以为的 | 别人已经在做的 |
|---|---|
| 优化Agent=改提示词 | 优化Agent=管理上下文+盯缓存命中率 |
| 长上下文模型越大越好 | 窗口越大越贵,Context Rot证明还会退化 |
| 多Agent并行=先进架构 | 单线程线性Agent+共享完整上下文更稳 |
| 删掉不用的工具=省token | 静态工具表+logits masking,删一次毁一次缓存 |
| 清理历史错误=上下文干净 | 保留wrong turns帮模型修正信念 |
| 缓存是API厂商的事 | 缓存命中率是应用层的第一个架构决策 |
cache_read_input_tokens / 缓存命中字段(Anthropic、DeepSeek返回里都有),加进你的日志,先看清现状;本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
