編程基礎篇 · 遞歸與分治

分治:上下文壓縮的算法原理

動手實戰篇講過:對話太長裝不下時,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 還知道「聊過預算」,但再問它「我預算多少」它只能猜;下次它給你配個紅沙發,你都沒處説理。所以動手實戰篇反覆強調:關鍵事實(數字、硬性要求、決定)要另外記進長期記憶或文檔裏,不能指望摘要替你留着。摘要負責「大概傾過啲咩」,檔案負責「鐵板釘釘的事」。

✅ 這一課想和你分享的