本节摘要:本节给出全书的核心分类法。窗口里的内容看似杂乱——系统提示、历史、检索片段、工具 schema、文件内容、命令输出——但用三问就能全部归位:这段内容是谁产生的?它多久有效?超预算时谁负责裁剪它?答案把一切内容分成四种成分:指令(开发者写,告诉模型"要做什么、规矩是什么",全程常驻)、记忆(系统累积,告诉模型"之前发生过什么",跨轮跨会话)、工具(开发者定义,告诉模型"你能做什么",每轮常驻)、素材(运行时取自外部世界,告诉模型"世界现在什么样",时效最短)。指令 + 工具构成常驻层("常驻税",设计期裁剪),记忆 + 素材构成动态层(唯一会无限增长的部分,运行时策略裁剪)——两者零和互挤。文末与 Anthropic 的四分法及 LangChain 的记忆模型对照,确认分类法与业界共识同构。
阅读完本节,你应当能够:
预算恒等式(1.1 节)告诉你窗口里有五笔开销,但没告诉你每一笔的性质。没有分类法的后果是治理错位:用写文案的方式治理工具 schema(该裁不裁),用截断的方式治理系统提示(不该裁乱裁)。
分类法只需要三问,对窗口里任何一段文本都成立:
三问的答案组合恰好穷尽四种成分——不多不少,这就是分类法的完备性来源:产生者只有三种(开发者 / 系统 / 世界),其中开发者的产出按"约束行为"还是"供能行动"分为指令与工具,系统与世界的产物按时间跨度分为记忆与素材。
| 成分 | 回答的问题 | 谁产生 | 多久有效 | 谁负责裁剪 | 典型例子 | 深入章节 |
|---|---|---|---|---|---|---|
| 指令 instruction | 要做什么、规矩是什么 | 开发者(设计期) | 全程常驻 | 开发者 | 系统提示、输出契约、红线约束 | 3.1 |
| 工具 tools | 你能做什么 | 开发者(设计期) | 每轮常驻 | 开发者 | 工具 schema(名称 / 参数 / 描述) | 3.2 |
| 记忆 memory | 之前发生过什么 | 系统(运行时累积) | 跨轮至跨会话 | 运行时策略 | 对话历史、用户偏好、会话存档 | 第 4 章(后半) |
| 素材 material | 世界现在什么样 | 外部世界(运行时获取) | 即时至短时效 | 运行时策略 | 检索片段、文件内容、工具结果、环境状态 | 第 5 章(后半) |
一句话记忆法:指令管"要做什么",工具管"能做什么",记忆管"发生过什么",素材管"现在是什么"。
指令是开发者意志的直接表达,模型对它近似逐字服从——所以它改一个字都值得评审(3.1 节的版本化管理由此而来)。它全程常驻、占据最靠前的位置(2.2 节会讲这个位置的价值),是窗口里唯一"设计期定型、运行期不变"的成分。常见错误:把动态信息(当前时间、今日库存)写进指令——那是素材的职责,写死在指令里只会过期。
工具 schema 是给模型读的 API 文档,每轮随请求自动注入——很多人算预算时根本想不起它。它的规模由开发者决定,且存在"越多越差"的反直觉权衡(3.2 节详述)。常见错误:工具集只增不减,三年攒下 40 个工具,模型在错误的名字之间犹豫。
对话历史是记忆的最小形态;往上是跨会话的用户偏好、项目约定、会话存档(第 4 章的三层)。记忆的裁剪不能靠人——会话进行中没有人盯着——只能靠运行时策略:压缩、摘要、分层归档。常见错误:历史只进不出,直到撞上限被 API 硬截断,截掉的恰好是最早的任务目标。
检索片段、文件内容、命令输出、数据库查询结果——素材回答"世界现在什么样",下一轮就可能过期(文件改了、库存变了)。它是四成分里总量最大、增长最快、也最该按需供给的成分:RAG 与 repo map 的全部意义就是"把素材从预装改成按需取"(第 5 章,后半)。常见错误:把素材当记忆长期留在窗口里——三天前 grep 到的输出如今一文不值,却还占着两万 token。
四成分共享一个窗口,是零和游戏。两个结构性事实:
常驻层(税) 动态层(变量) ┌──────────────────┐ ┌──────────────────┐ │ 指令 设计期定型 │ │ 记忆 运行时累积 │ │ 工具 设计期定型 │ 零和 │ 素材 运行时获取 │ │ → 每轮全额支付 │ ◄──────► │ → 唯一无限增长 │ └──────────────────┘ └──────────────────┘ 设计期裁剪 运行时裁剪 (第 3 章的主题) (第 4~6 章的主题)
💡 三问的第四种用法——调试:模型行为反常时,把窗口内容逐段过三问,往往一眼看到错位:该当素材的进了指令(写死的"今日"日期)、该当指令的沉在素材里(红线约束只在一周前的历史里出现过一次)。
四成分不是自造词,它与两套业界框架同构:
| 业界框架 | 其口径 | 与四成分的映射 |
|---|---|---|
| Anthropic 长文(官方,2025-09) | 系统提示、工具、检索到的文档、对话历史 | 指令 ←→ 系统提示;工具 ←→ 工具;素材 ←→ 检索文档;记忆 ←→ 对话历史。差异:Anthropic 未单列"输出预留",本书按 1.1 节补上 |
| LangChain / LangGraph(官方,2026) | state(短期记忆)、store(长期记忆)、runtime context(静态配置) | 记忆 ←→ state + store;指令 + 工具 ←→ runtime context。LangChain 进一步把治理动作提炼为 write / select / compress / isolate 四类策略,分别对应记忆写入、供给选择、压缩与子 Agent 隔离 |
对照的用处:读到任何框架文档,先把它的组件翻译成四成分语言,再套预算恒等式——两步之后,任何框架的上下文管理都不再是黑盒。
科目表有了,接下来的问题自然是:这笔预算怎么分?超了先砍谁?砍完的东西按什么顺序摆?下一章讲分配。