编程基础篇 · 递归与分治

分治:上下文压缩的算法原理

动手实战篇讲过:对话太长装不下时,AI 会做一次 Compaction——把旧对话压成摘要。当时说「像搬家前把杂物打包」,这一课揭开包装纸:它是一个有两千年历史的算法套路,叫分治。上一课的递归是「拆」,这一课补上另一半:「拆完再合」。

亲手压一次 · 3600 token 的装修对话

下面是一段你和 AI 讨论装修方案的完整对话,12 条消息约 3600 token,眼看要把上下文窗口塞爆了。点「开始压缩」,留意三幕动作:先(分成三段)、再(每段各自收成一条摘要)、最后(三条摘要并成一条)——顶部的 token 计数器会告诉你压掉了多少。

当前上下文3600token
切分 → 各段摘要 → 合并,三幕连播
试试打开「保留最近 4 条」再压一次。这正是真实 Agent 的做法:最近几条对话往往就是你正在办的事,最金贵,一个字都不动;只把久远的部分压成摘要。你会看到 token 数没有压到 200 那么狠——保真和省空间,永远在做交换
概念卡 · 归并排序同款套路

刚才三幕动作有个正式名字:分治(Divide and Conquer)。教科书里它最出名的代言人是归并排序——把一列数切成小段、每段排好、再两两合并。归并排序排的是数,Compaction 压的是话,骨架一模一样

✂️ 切成小块

大问题直接解不动,就切成几个小块。归并排序:一列数对半切到只剩单个。Compaction:长对话按话题或轮次切成几段。

🔧 每块各自解决

小块规模小,好办。归并排序:小段各自排好序。Compaction:每段各自摘要——段够短,AI 一口就能读完、总结准。这一步还能并行干,又快一截。

🧩 结果合并

把小块的成果拼回完整答案。归并排序:两段有序数列合成一段。Compaction:几条摘要再合成一条总摘要。段还太多?递归再来一轮——上一课的味道回来了。

为什么不一口气让 AI 总结全文?因为「总结一万字」本身就会把上下文塞爆——这不就是我们要解决的问题吗。分治的聪明处在于:把「解不动的大问题」变成一堆「肯定解得动的小问题」,再花点力气拼装。工程进阶篇 Coding Agent 读大代码库也是这么干的:一个文件一个文件地读、各自记要点、最后汇总。
诚实卡 · 压缩的代价

⚠️ 摘要是有损压缩——细节会丢

原文:「预算 8 万以内」「我特别不喜欢红色,全屋别出现红色
压缩后:「讨论了预算和配色偏好」← 具体数字和红色禁令都没了
压缩后 AI 还知道「聊过预算」,但再问它「我预算多少」它只能猜;下次它给你配个红沙发,你都没处说理。所以动手实战篇反复强调:关键事实(数字、硬性要求、决定)要另外记进长期记忆或文档里,不能指望摘要替你留着。摘要负责「大概聊过什么」,档案负责「铁板钉钉的事」。

✅ 这一课想和你分享的