Skip to content

第 3 章 · 上下文管理

模型的能力有上限,但在很多任务里,真正决定上限的不是模型智商,而是它手里有什么材料。本章系统讲解如何给 AI 提供、组织和清理上下文。

本章包含 5 个知识点:

  1. 上下文到底是什么:会话内的全部信息
  2. @ 附加文件与精确行范围
  3. 上下文窗口与信息预算
  4. Compaction(会话压缩)机制
  5. 上下文卫生:何时该清理、何时该重开

知识点 1:上下文到底是什么

① 定位

第 0 章给出了「会话即上下文」的心智模型,本章把它拆开讲透。理解上下文的构成,是后面一切管理动作的前提——你得先知道「AI 此刻到底握着哪些牌」,才能决定该补什么、删什么。

② 是什么(What)

在一个会话中,模型能够看到的信息通常包括:

来源具体内容
系统 / 规则层系统指令、AGENTS.md 中的项目规则(第 4 章)
你说的话每一条用户消息,包括 Prompt 正文
AI 的回答它之前的全部回复
附件你用 @ 附加的文件内容(知识点 2)
工具结果命令输出、读文件结果、搜索结果、Shell 输出
对话顺序谁先说、谁后说,这本身也是信息

一个关键认知:模型没有「会话之外」的记忆。 上个会话聊过什么、你昨天在脑子里想过什么、另一个标签页里发生了什么——当前会话统统看不见。它唯一的世界,就是上面这张表。

③ 怎么做(How)

每次发重要指令前,快速盘点:

  1. 完成这个任务,模型需要的事实是否都已经在会话里
  2. 哪些信息它能自己用工具获取(读文件、跑命令、搜索)?——让它自己拿。
  3. 哪些信息只有你知道(决策原因、线上现象、业务规则)?——必须你给。

④ 为什么这么做(Why)

  • 模型是「无状态」的推理器。 每次生成时,它只依据当次请求携带的全部文本进行预测,不会自动记住任何项目事实。你感知到的「它记得」,其实是历史消息被完整附在了请求里。
  • 信息缺口必然被猜测填补。 当需要的事实不在上下文中,模型不会停下来(除非它选择反问),而是按训练数据里最常见的情况假设——这是「不贴合项目」答案的根源。
  • 会话顺序承载因果关系。 模型能理解「因为上一轮发现了 X,所以这一轮做 Y」,靠的就是消息的排列顺序。打乱或缺失,推理链就断了。
  • 盘点动作把「靠运气」变成「靠设计」。 主动核对上下文,任务所需信息被有意识地备齐,而不是指望模型碰巧知道。

⑤ 这样做的好处

  • 产出贴合实际:项目事实齐备,答案可直接落地。
  • 减少返工与追问:材料一次备齐,沟通轮次下降。
  • 诊断更准确:证据都在会话里,模型基于事实而非空想。
  • 掌控协作全局:你清楚 AI 握着什么牌,对产出质量心里有数。
  • 为上下文管理打基础:知道构成,才谈得上预算和清理。

⑥ 不这么做的问题 / 坏处

  • 以为 AI「应该知道」 → 项目里明明写着的事实它也没用上,因为你没附加、它也没读。
  • 重复提供它能自查的信息 → 浪费窗口,还可能因你转述失真而误导。
  • 关键背景只字不提 → 得到通用答案后还怪 AI 不专业。
  • 忽视历史污染 → 无关旧内容继续影响当前判断,却毫无察觉。

⑦ 举一反三:三个例子

例 1(基础):让 AI 读项目而不是凭空回答

📌 场景:你问 AI「这个项目用什么测试框架」。

❌ 凭空式:直接问——它只能猜一个常见框架。

补上下文:「请查看 package.json(和项目配置),告诉我本项目用的测试框架是什么、测试命令怎么跑。」

🔍 讲解:这个事实项目里就有,让 AI 用工具读取,答案就是权威的。关键意识:区分「该让它查」和「该你说」——文件里写着的,优先让它查。

例 2(进阶):跨会话时重新备料

📌 场景:你在会话 A 里和 AI 详细讨论了支付重试方案;现在你在新会话 B 让它「按上次说的实现」。

做法:不要假设它记得。在新会话中用 @ 附上相关方案文档 / 代码,或简明重述关键决策,再让它实现。

🔍 讲解:「上次说的」对新会话不存在。会话隔离是特性(保护上下文纯净),代价是跨会话必须显式搬运仍需要的信息。理解这一点,就不会对着 AI 的「失忆」恼火。

例 3(挑战):盘点一次复杂任务的全部信息需求

📌 场景:你要让 AI 把一个 REST 接口改造并补齐测试。

盘点结果

text
它能自查:相关路由文件、现有测试、框架用法 → 让它读;
只有我知道:改造原因、必须保持兼容的字段、上线节奏 → 我来写;
需要附加:接口文档、相关类型定义 → 用 @ 附上;
无需提供:与本接口无关的其它模块代码。

🔍 讲解:把信息需求按「谁掌握」分类,是复杂任务不慌乱的关键。这种盘点做几次后会变成本能——高手发指令前脑子里都有一张隐性清单。


⑧ 练习题 ×2

练习 1(巩固型)

📝 题目:列出当前会话中模型可见信息的至少 5 个来源。

💡 思路提示:从规则层往下想到工具结果。

参考答案

text
系统/规则层(含 AGENTS.md)、用户消息、AI 历史回复、
@ 附件内容、工具结果(命令/搜索/读文件)、对话顺序。
(答出任意 5 项即可)

🔍 讲解:能列出这些来源,说明你已经建立了「上下文构成」的完整地图,后续管理动作都挂在这张地图上。

练习 2(迁移型)

📝 题目:迁移到向人类同事交代任务:哪些信息你会写进任务单、哪些让他自己去查、哪些必须口头强调?这和给 AI 备上下文有什么共性?

💡 思路提示:已有文档让他自己看;背景原因、隐性禁忌必须交代。

参考答案(示例)

text
- 让他自查:项目里已有的文档、代码、规范——不必重复转述;
- 必须交代:为什么做、有哪些不成文的禁忌、你观察到的外部现象;
- 附上材料:相关需求文档、设计稿;
- 不用给:与任务无关的其它项目信息。
共性:信息按「谁掌握、何处可查」分工,既避免信息缺失导致猜错,
又避免信息过载淹没重点。给人和给 AI 备料,逻辑完全一致。

知识点 2:用 @ 附加文件与精确行范围

① 定位

上一知识点讲「该补什么」,本知识点讲最常用的补料手段@ 附件。它让你不必粘贴大段代码,就能把文件内容精确地送进上下文,并且可以只送需要的那几行。

② 是什么(What)

在输入框中输入 @,会弹出文件搜索列表;继续打字可按路径 / 文件名过滤,选中后该文件即作为附件加入 Prompt。

三种常用写法:

text
# 附加整个文件
审查 @src/auth.ts 的错误处理

# 附加文件的指定行范围
解释 @src/auth.ts#20-45 在做什么

# 附加后继续写指令
@src/order.ts#40-55 这里为什么可能出现 undefined?
  • @路径:附加整个文件内容;
  • @路径#起始-结束:只附加指定行范围;
  • 可在一条消息中附加多个文件;
  • 附件内容会随消息进入会话,之后模型无需再次读取即可引用。

附加整个文件 vs 让 AI 自己读:显式 @ 附加意味着「这份材料就是本次讨论的核心依据」,模型注意力会聚焦其上;而让它自行读取,主动权在它、读取范围也可能不同。

③ 怎么做(How)

  1. 输入 @,打字缩小搜索范围,用方向键选中文件;
  2. 只需局部时,补 #行号-行号(或相应的单 / 多行写法);
  3. 在附件前后写清楚你要它做什么——附件是材料,指令才是任务;
  4. 大文件优先只附相关片段,避免无关内容稀释重点;

④ 为什么这么做(Why)

  • 粘贴代码既笨重又易失真。 手工复制可能漏行、格式错乱、丢失行号;@ 附件直接从磁盘读取原文,准确且带行号,核对时能精确定位。
  • 行范围控制「信号密度」。 一个上千行的文件里,与任务相关的可能只有 20 行。只附片段,模型注意力全部集中在关键代码上,判断更准、窗口更省。
  • 显式附件是「指定证据」。 让模型「就这段代码回答」,能避免它跑去引用别处、或基于猜测作答——你把讨论范围钉死在了给定材料上。
  • 多附件构建完整证据链。 复杂问题常涉及「类型定义 + 调用方 + 报错点」,分别附加后,模型能交叉对照,而不是只看一隅。
  • 附件可复用为长期模式。 熟练后,你每次提问都会自然地带上相关文件,这是高质量协作的标志性习惯。

⑤ 这样做的好处

  • 准确:原文 + 行号,讨论可核对。
  • 聚焦:只给相关片段,模型不跑题。
  • 省窗口:不把整份大文件塞进上下文。
  • 高效:几个字符完成附料,不必切换窗口复制。
  • 证据权威:以磁盘真实内容为准,排除转述错误。

⑥ 不这么做的问题 / 坏处

  • 口头描述代码 → 模型只能凭你的描述猜,细节一漏方向全偏。
  • 粘贴整份大文件 → 关键信号被淹没,窗口被快速耗尽。
  • 不给行号 / 范围 → 模型可能引用错误位置,你也难以核对。
  • 附错文件不检查 → 它认真分析了你给的错误材料,还显得「很有道理」。

⑦ 举一反三:三个例子

例 1(基础):针对单个文件提问

📌 场景:你看不懂 src/auth.ts 的登录逻辑。

Prompt:「请阅读 @src/auth.ts,解释登录流程:token 在哪里生成、如何校验、失败时返回什么。引用代码请带行号。」

🔍 讲解:附件给材料、正文给三个具体问题、行号要求保核对——三件齐全。模型不需要猜「你关心哪部分」。

例 2(进阶):只附关键行范围

📌 场景:报错精确指向某函数中间几行,你怀疑问题就在该片段与其上下文。

Prompt:「@src/order.ts#35-58 这段在读取 id 时可能为 undefined。请说明该值可能从哪些路径传入、哪条路径缺了字段,给最小修复建议,先不要改。」

🔍 讲解:只附 20 余行而不是整文件,让模型注意力集中在病灶上;同时问题精确到「值从哪些路径传入」,引导它向上游追因而非只看表面。行范围写法是性价比极高的聚焦工具。

例 3(挑战):多附件构建交叉证据

📌 场景:一个类型不匹配问题,涉及类型定义、调用方、接口返回。

Prompt

text
下面三处联合看,定位类型不匹配的根因,先不要改代码:
- 类型定义:@src/types/order.ts#10-30
- 报错调用处:@src/order.ts#40-50
- 接口返回结构:@docs/api.md(相关段落)
请指出是哪一侧的契约与假设不一致,并列出涉及的所有调用点。

🔍 讲解:单看任何一处都可能误判,多附件让模型交叉比对契约,才能发现「定义说有字段、接口实际没返回」这类跨层问题。这体现附件的高阶用法:不是给「代码」,而是给「证据链」。


⑧ 练习题 ×2

练习 1(巩固型)

📝 题目:写出完成下列需求的 @ 写法:(a)附加整个配置文件;(b)只附某文件第 50–80 行;(c)一条消息附两个文件。

💡 思路提示:记住 @路径@路径#起-止 两种基本形态。

参考答案

text
(a) @src/config.ts
(b) @src/app.ts#50-80
(c) 示例:请对照 @src/types/user.ts 和 @src/api/user.ts 的字段是否一致。

🔍 讲解:语法本身简单,关键是养成「提问先想该附哪份证据、附多大范围」的习惯。

练习 2(迁移型)

📝 题目:迁移到做汇报或写论文:为什么引用材料时「精确出处 + 只引相关段落」比「丢一整份资料」好?

💡 思路提示:从读者注意力和可核对性两方面想。

参考答案(示例)

text
- 精确出处(页码 / 行号)让结论可核对、可追溯,增强可信度;
- 只引相关段落,读者注意力集中在证据上,不被无关内容淹没;
- 整份资料丢给对方,等于把「筛选材料」的工作转嫁给读者,
  关键证据反而可能被忽略。
共性:好的引用 = 给「最小充分证据 + 可核对坐标」,与 @ 附件同理。

知识点 3:上下文窗口与信息预算

① 定位

会附文件之后,马上要面对一个硬约束:上下文窗口是有限的。 本知识点建立「信息预算」意识——像管理钱一样管理上下文,知道什么该花、什么该省、什么时候快超支。

② 是什么(What)

  • 上下文窗口(Context Window):模型一次请求能够处理的文本总量上限,通常以 token(词元)计。不同模型窗口大小不同。
  • 预算:窗口空间要同时容纳系统规则、历史对话、附件、工具结果,以及留给新回答的空间——这些共同瓜分同一个窗口。

消耗窗口的几大「支出项」:

支出项何时快速增长
长对话历史会话越聊越长,旧消息不断累积
大附件 / 多附件粘贴大文件、日志
工具输出构建日志、测试输出、大段搜索结果
规则文件AGENTS.md 过长

注意一个反直觉点:窗口「没超限」也可能已经影响质量。 当上下文接近塞满时,模型对中部信息的关注可能下降(「中间遗忘」现象),且留给回答的空间变小。

③ 怎么做(How)

  1. 心里给每类信息设配额:附件只给相关片段,长日志先截取关键部分。
  2. 大输出做摘要或落盘:超长日志让 AI 先提炼,或输出到文件按需查看,而不是整段进会话。
  3. 定期审视会话长度:话题已切换、旧内容不再相关时,考虑压缩或重开(知识点 4、5)。
  4. 为回答预留空间:不要把窗口用材料塞满到模型「没地方写」。

④ 为什么这么做(Why)

  • 窗口是物理硬约束。 模型架构规定了单次输入的最大长度,超出的部分无法同时处理——不是产品小气,是技术边界。
  • 所有内容在竞争同一笔预算。 规则、历史、附件、输出互相挤占;在某一项上挥霍,其他项就得缩减,甚至触发自动压缩丢失早期细节。
  • 注意力并非均匀分配。 上下文越长,模型对处于中间位置信息的利用越不稳定;长不等于全,塞入太多反而损害关键信息。
  • 成本与窗口挂钩。 按 token 计费时,更长的上下文意味着更贵的每次请求,长会话每一轮都在为全部历史付费。
  • 预算意识把问题前置。 主动管理,能在「超限 / 质量下降」发生前就控制住,而不是等模型开始丢三落四再补救。

⑤ 这样做的好处

  • 长任务也能保持质量:关键信息始终留得住、被看见。
  • 费用可控:不为无关历史反复付费。
  • 回答有空间:模型能完整输出而非被截断。
  • 协作节奏稳:主动压缩 / 清理,避免突然超限的混乱。
  • 资源用在刀刃上:窗口服务于当前任务,而非历史噪音。

⑥ 不这么做的问题 / 坏处

  • 日志 / 文件整段灌入 → 窗口迅速见底,关键信息被淹没。
  • 一个会话无限延长 → 早期重要内容被压缩或「遗忘」,AI 前后矛盾。
  • 材料塞满不留余量 → 回答被截断或无法生成。
  • 忽视成本 → 长会话每轮重发全部历史,账单悄悄上涨。

⑦ 举一反三:三个例子

例 1(基础):处理超长测试输出

📌 场景:一次测试失败刷出几百行日志。

❌ 直接把整段输出贴进对话。

做法:「测试失败,输出我先放着。请告诉我你需要看哪部分(报错栈、断言差异、还是汇总)」,或先截取含错误栈与关键断言的 20~30 行附上。

🔍 讲解:几百行里真正有用的往往是错误类型、栈顶和失败断言。按需取料既省窗口,又让模型聚焦,比整段倾倒有效得多。

例 2(进阶):为长任务做中途预算管理

📌 场景:一个复杂重构已经聊了很久,会话里堆了大量被否决的方案。

做法:确认旧方案已无关后,主动压缩会话(<leader>c),把历史浓缩成摘要,为后续重构腾出预算;或在里程碑处新开会话、只带上最终方案。

🔍 讲解:被否决的方案属于「曾经有用、现在是负担」的信息。主动清理能让窗口重新服务于当前阶段,而不是永远背着全部探索史。

例 3(挑战):评估「该不该继续在这个会话里做」

📌 场景:你打算在一个已经很长的会话里再追加一个大需求。

判断

  1. 新需求与现有上下文强相关吗?——是 → 压缩后继续;否 → 新开会话;
  2. 当前会话是否已接近窗口上限?——是 → 优先新开;
  3. 早期内容是否还需要随时引用?——否 → 压缩或新开都可。

🔍 讲解:「继续还是新开」是预算管理的典型决策。核心判据是相关性 × 剩余空间,而不是对旧会话的感情。理性决策能避免「长会话后期质量崩塌」。


⑧ 练习题 ×2

练习 1(巩固型)

📝 题目:列出至少 4 个消耗上下文窗口的「支出项」,并各说一种节省办法。

💡 思路提示:从历史、附件、工具输出、规则四方面想。

参考答案

text
1. 对话历史 → 及时压缩或按任务新开会话;
2. 大附件 → 只附相关行范围;
3. 工具/日志输出 → 先截取关键部分或落盘按需查看;
4. AGENTS.md → 保持精炼,只写长期有效规则。

🔍 讲解:能把支出项与节省办法对应起来,说明预算意识已经可操作,而非停留在口号。

练习 2(迁移型)

📝 题目:迁移到时间 / 金钱管理:为什么「先定预算、再分配支出」比「花到不够再说」好?这和上下文预算有什么共性?

💡 思路提示:超支的代价、主动分配与被动救火的差别。

参考答案(示例)

text
- 先定预算促使你区分「必要支出」和「可省支出」,把资源用在高价值项;
- 花到不够才管,往往伴随中断、返工和更高的紧急成本;
- 预算也鼓励为未来预留余量,避免一次用满、毫无缓冲。
共性:任何有限资源(钱、时间、上下文窗口)都适用同一原则——
主动配给、控制浪费、预留缓冲,远胜于被动超限后救火。

知识点 4:Compaction(会话压缩)机制

① 定位

窗口快满时怎么办?答案是压缩。本知识点讲 Compaction 是什么、什么时候发生、手动如何触发、以及它的代价——它是长任务的「续命器」,但不是无损操作。

② 是什么(What)

Compaction(压缩):把会话中较早的大量消息,浓缩成一段保留关键信息的摘要,用摘要替换原始的冗长历史,从而腾出窗口空间,同时让任务能继续。

需要知道的几个要点:

  • 压缩可能在上下文接近阈值时自动发生,也可以手动触发(默认 Ctrl+XC,即 <leader>c);
  • 压缩保留的是「关键决策、结论、必要事实」,牺牲的是逐字原文、被否决的细节、来回讨论过程;
  • 压缩后会话看起来变短,但任务继续基于摘要 + 近期消息推进;
  • 它是有损的——任何被摘要略去的细节,模型之后就无法引用。

③ 怎么做(How)

  1. 手动压缩时机:长任务进入新阶段、旧探索已收尾、需要为后续腾空间时;
  2. 触发:Ctrl+XC
  3. 压缩前,若有绝不能丢的细节(关键约束、重要结论),先确认它们已写进文件 / AGENTS.md,或在压缩前由你明确强调;
  4. 压缩后快速浏览摘要,确认核心事实是否保留;发现遗漏立即补充;

④ 为什么这么做(Why)

  • 长任务客观存在,窗口却有限。 一个跨多轮的重构 / 排查天然产生大量历史;没有压缩机制,任务只能在窗口用尽时被迫中断。压缩让长链条工作得以续接。
  • 「摘要替换原文」是信息论上的合理取舍。 早期消息中,真正对后续有用的往往只是结论与决策;过程性文字可以高比例压缩而不损失主线——用少量 token 保住高价值信息。
  • 有损性必须被正视。 模型不可能完美判断什么「以后有用」;被它判定为次要而略去的细节,可能恰恰是你后面要引用的。所以关键信息要外置到文件。
  • 手动触发优于被动等待。 在里程碑处主动压缩,你能控制保留什么;自动压缩发生在窗口紧张时,选择余地更小。
  • 压缩与「重开」是互补手段。 同语境续命用压缩,换战场用新会话——理解分工才不会用错。

⑤ 这样做的好处

  • 长任务不断线:里程碑处续命,持续推进。
  • 窗口压力释放:近期工作有充足空间。
  • 主线更清晰:摘要把结论沉淀出来,减少旧噪音干扰。
  • 成本下降:后续每轮携带的历史更短。
  • 节奏可控:主动选择压缩时机与重点。

⑥ 不这么做的问题 / 坏处

  • 拒绝压缩硬撑 → 窗口用尽被迫中断,或自动压缩在最被动的时刻发生。
  • 把压缩当无损 → 丢失关键细节却不知情,后续引用时模型「查无此事」。
  • 关键信息只存在于旧消息 → 一旦压缩即永久丢失,无法恢复。
  • 该重开却只压缩 → 带着无关旧语境进入新任务,偏见依旧存在。

⑦ 举一反三:三个例子

例 1(基础):在阶段里程碑压缩

📌 场景:排查完成、根因已确认,接下来要进入修复阶段,会话已很长。

操作:先确认根因结论明确 → Ctrl+XC 压缩 → 浏览摘要确认「根因 + 修复目标」在其中 → 再让它动手修。

🔍 讲解:压缩前先确保结论清晰,压缩后核对摘要——两步保证「续命」不以丢失方向为代价。

例 2(进阶):把不能丢的约束外置后再压缩

📌 场景:会话中讨论出几条关键约束(如「金额以分为单位」「该接口必须向后兼容」),你担心压缩时丢失。

做法:先把这些约束写进 AGENTS.md(或相关设计文档),再压缩。即使摘要略去细节,规则文件依然稳定加载、约束永久在场。

🔍 讲解:这是「长期规则不依赖会话记忆」原则的实战。任何压缩都可能丢会话内容,但外置文件不受影响——把最重要的东西放进最稳的容器。

例 3(挑战):判断该压缩还是该重开

📌 场景:长会话结束后你要做一个新需求,它与旧任务只有弱关联。

判断:弱关联 + 语境差异大 → 新开会话,只带必要材料;而不是压缩后带着旧语境继续。

🔍 讲解:压缩解决的是「同一任务空间不够」,不是「换任务也能通吃」。带着旧语境做新事,模型容易套用旧假设。正确区分这两个工具,是上下文管理成熟度的标志。


⑧ 练习题 ×2

练习 1(巩固型)

📝 题目:判断对错并说明理由:(a)压缩后早期对话被摘要替换;(b)压缩是完全无损的;(c)关键约束应写进 AGENTS.md 以防压缩丢失。

💡 思路提示:回忆压缩的机制与代价。

参考答案

text
(a) 对:用保留关键信息的摘要替换冗长原文,腾出窗口;
(b) 错:压缩有损,过程细节和被略去内容之后无法引用;
(c) 对:外置到规则文件的信息不依赖会话,压缩也不会丢失。

🔍 讲解:理解「有损 + 关键信息外置」,就掌握了安全使用压缩的核心。

练习 2(迁移型)

📝 题目:迁移到学习与笔记:把「厚书 / 长课程」压缩成笔记时,为什么笔记能帮你「续命」复习?又该如何防止压缩时丢失以后要用的细节?

💡 思路提示:摘要减负 vs 原文细节;重要内容的多副本。

参考答案(示例)

text
- 笔记用少量篇幅保留结论与框架,复习时不必重读全部原文,
  相当于为长期记忆「腾出空间」;
- 但笔记是有损压缩,举例、推导过程可能被略去;
- 防丢失办法:关键公式 / 结论单独标记或做成卡片,重要材料保留原文索引,
  需要时能回到出处(类似把约束写进 AGENTS.md)。
共性:任何「摘要」都在做减负与保真的权衡,高价值信息要多重备份。

知识点 5:上下文卫生:何时清理、何时重开

① 定位

本章收口知识点,也是最能体现「使用素养」的一个。工具你都会了,决定上下文质量的最后一步是纪律:像保持桌面整洁一样,主动清理、果断重开、防止污染。

② 是什么(What)

上下文卫生是一组保持会话「干净、相关、可续接」的习惯,核心包括三条规则:

  1. 一个会话围绕一个任务领域。 话题切换大 → 另开会话,而不是混聊。
  2. 无关信息及时清理。 已收尾的探索、被否决的方案 → 压缩;不再需要的标签 → 关闭。
  3. 重要信息外置。 长期规则进 AGENTS.md,关键结论进文件,而非只留在易被压缩的对话里。

「脏」上下文的典型症状:

  • AI 不断引用旧任务的假设来回答新问题;
  • 回答里混入你没要求的内容;
  • 前后说法矛盾,因为早期信息已被压缩或淹没;
  • 你自己回看时,已经分不清哪些结论仍然有效。

③ 怎么做(How)

建立三个固定动作:

  • 开工前:判断这是「继续旧任务」还是「新领域」——后者直接新开会话。
  • 过程中:旁支小疑问走 /btw;临时后续走排队;无关任务不在本会话展开。
  • 收尾时:结论沉淀进文件;关闭已完成标签;需要续接就起好名字。

④ 为什么这么做(Why)

  • 模型对「语境污染」没有免疫力。 它不会自动声明「这个旧假设已失效」,而是继续受上下文中所有内容影响——包括不该再适用的部分。卫生是你主动划界的手段。
  • 纯度决定判断质量。 干净上下文里,每条信息都服务当前任务;混杂上下文里,模型要在冲突信号中权衡,出错率上升。
  • 卫生降低长期成本。 及时清理让窗口、费用、视觉噪音都保持在低位;拖到混乱后再收拾,成本高得多,甚至只能靠「全放弃、重开会话」。
  • 外置信息对抗有损压缩与遗忘。 对话是易失介质,文件是稳定介质;把重要东西放对地方,才不会在某次压缩后追悔。
  • 纪律把方法变成能力。 单次清理人人都会,长期保持才拉开差距——素养本质是稳定执行正确的小动作。

⑤ 这样做的好处

  • 产出始终贴合当前任务,不被旧前提带偏。
  • 会话可长期信赖:随手续接也不会串味。
  • 窗口与费用长期健康
  • 回顾高效:结构清晰,结论与规则各在其位。
  • 协作体验稳定:AI「表现」的波动更多来自任务而非混乱上下文。

⑥ 不这么做的问题 / 坏处

  • 会话越用越脏 → AI 回答质量随时间神秘下降,还查不出原因。
  • 任务边界消失 → 一个会话里什么都有,压缩后信息损失最严重。
  • 重要结论只留在对话 → 一次压缩或误删即永久丢失。
  • 标签堆积 → 视觉混乱、切换低效,最终放弃多会话优势。

⑦ 举一反三:三个例子

例 1(基础):切换工作领域时新开会话

📌 场景:上午修支付 bug,下午要做文档站改版。

做法:下午直接新开会话处理文档站,不在支付会话里追加。

🔍 讲解:两件事语境毫无交集,混聊只会互相污染。「一事一会」是卫生规则中最基础也最有效的一条。

例 2(进阶):收尾时把结论落盘

📌 场景:一个复杂排查得出了根因和三条修复原则。

做法:把修复原则写进 AGENTS.md / 项目文档,关闭会话标签;日后任何会话都能直接受益。

🔍 讲解:让最有价值的产出离开易失对话、进入稳定文件——这是把一次性劳动变成长期资产的关键动作。

例 3(挑战):给一个已经「变脏」的会话做急救

📌 场景:你接手(或自己造成)一个又长又杂、AI 已开始前后矛盾的会话。

急救顺序

  1. 判断当前真正有效的结论有哪些;
  2. 把它们整理进文件;
  3. 新开会话,附上整理好的文件作为干净起点;
  4. 放弃在旧会话里继续纠偏。

🔍 讲解:当污染已经严重,继续在旧上下文里修,成本高于重开。高手懂得及时止损——把有效结论抢救出来,然后在干净语境重新出发。这不是失败,是高效决策。


⑧ 练习题 ×2

练习 1(巩固型)

📝 题目:默写上下文卫生的三条核心规则和九字口诀。

💡 思路提示:从会话边界、清理动作、信息存放三处想。

参考答案

text
三条规则:
1. 一个会话围绕一个任务领域,话题大切换就另开;
2. 无关信息及时压缩清理,完成的标签及时关闭;
3. 重要信息外置到 AGENTS.md / 文件,不只留在对话里。
口诀:一事一会、用完即清、重要落盘。

🔍 讲解:能默写并真正执行,上下文管理就从「知识」变成了「习惯」。

练习 2(迁移型)

📝 题目:迁移到现实环境:整洁的办公桌 / 电脑文件系统 / 收件箱分别如何体现「分区、清理、重要归档」?这对效率有什么影响?

💡 思路提示:在用区域 vs 归档区域;定期清空带来的认知放松。

参考答案(示例)

text
- 办公桌:当前项目摊在桌面,做完归档进柜子,桌面只留进行中事项,
  找东西快、心不乱;
- 电脑文件:进行中的工作放固定工作目录,完成后归整到归档目录,
  桌面 / 下载目录定期清空;
- 收件箱:定期清空,需行动的转任务、仅供参考的归档、无用的删除。
共性:「活跃区保持少量纯净 + 重要物归档到稳定位置 + 定期清理」,
减少视觉与认知噪音,把注意力释放给真正重要的事——上下文卫生同理。

🔍 讲解:上下文卫生本质是数字工作台的整洁习惯。你在现实中认同的整理逻辑,完全可以平移到 AI 会话管理中。


本章小结

知识点一句话核心
1. 上下文是什么模型的唯一世界 = 规则 + 消息 + 附件 + 工具结果
2. @ 附件@文件 给材料,#行范围 控聚焦,多附件建证据链
3. 窗口与预算有限资源主动配给,省窗口、留余量、控成本
4. Compaction有损续命:摘要换空间,关键信息先外置
5. 上下文卫生一事一会、用完即清、重要落盘

下一章进入规则沉淀层:《AGENTS.md 持久化规则》——如何把你的规范、偏好与禁区写下来,让每个会话自动遵守,把个人经验变成可复用的团队资产。