LLM Bento · Podcast
用聽的學習路徑
一集一集的短篇節目,談語言模型怎麼運作,以及「它竟然能運作」這件事代表什麼。從哪一集開始都可以,播完會自動接下一集。 旁白的聲音是 AI,它也以 AI 的身分說話。
上下文工程
Context Engineering
上一集,我們再看了一次那兩個袋子,發現整個 harness 裡最大的一件就在裡面:什麼要放在模型面前,什麼要留在外面,帶著它又要付出多少代價。
2025 年 6 月,這門技藝在短短幾天內,公開地有了名字。Shopify 的執行長 Tobi Lütke 寫道,比起提示工程,他更喜歡「上下文工程」,也就是 context engineering,因為它說中了真正的技能:把任務需要的上下文全部準備好,讓模型有機會真的解得出來。一週之後,Andrej Karpathy 也表示贊同,他說,這是一門細膩的藝術,也是一門科學:用下一步剛好需要的資訊,把 context window 填滿。
這個名字會留下來,是因為大家早就感覺到那個轉變了。重點不再是一句聰明的提示,而是模型身處的整個資訊環境。這一集,我們從兩個尺度來看它:一個團隊寫下來的東西,和一次呼叫裝得下的東西。
先把鏡頭拉遠。模型用得上的上下文,大部分根本不在它的窗口裡,而是在團隊已經寫下來的東西裡:散落在聊天訊息、文件、工單和程式碼之間,還有每個人的腦袋裡。
做專案管理工具的 Linear,把這些記憶分成七種。計畫和討論,讓意圖浮現出來。規格和技術設計,把想法釘在具體的東西上。決策,把模糊的地方定下來。摘要,把一場會議壓縮起來。還有程式碼本身。每一種老化的速度都不一樣,寫給的讀者也不一樣。
在這個尺度上,大部分的麻煩來自兩種失敗。第一種,上下文明明存在,模型卻拿不到:那個決定留在它看不到的會議紀錄裡,於是它自己編了一個。第二種,上下文過期了:上一季的計畫還掛在新人文件上,agent 和新同事一樣,開開心心地照著它走錯方向。
所以這門技藝的前一半很樸素:讓團隊的記憶拿得到,而且保持新鮮。
在 HumanLayer 打造寫程式 agent 的 Dex Horthy,用一句話講出了利害:AI 取代不了思考。它只能放大你已經做過的思考,或是你沒做的那些。
一份規格,就是把那些思考寫下來。如果規格裡漏掉了,你們上一季為什麼否決了某個做法,模型就會開開心心地再提一次。不是模型失敗了,是上下文失敗了。缺的那份規格,就是 bug。
Horthy 有幾條經驗法則。一份糟糕的計畫,等於一百行糟糕的程式碼,所以要在上游抓錯,那裡最便宜。寫清楚檔名和行數的計畫,勝過籠統的文字:最弱的模型也跟得上清楚的計畫,卻沒有任何模型跟得上模糊的計畫。還有,針對手上的工作、從真實來源重新產生的上下文,勝過一份曾經正確的文件。
現在把鏡頭拉近,看單單一次呼叫。它發生在一個固定大小的窗口裡,常見的是十二萬八千或二十萬個 token,最大的模型可以到一百萬以上。人很容易以為,上下文越多,答案就越好。
其實不是。2025 年 7 月,Chroma 的研究團隊測試了十八個模型,發現輸入越長,表現就越往下掉。掉得不平均,每種任務在不同的地方開始變差,但都會變差。他們把這叫做上下文腐爛,context rot。
對話的形狀也很重要。如果紀錄看起來是:模型試了一次,人糾正它,它再試,人又糾正它,那麼接下來最可能的,就是再一次錯誤的嘗試。模型跟著的是整個模式,不只是事實。一段對話一旦走偏了,重新開始幾乎永遠比硬撐下去划算。
所以,窗口是一份預算,不是一個桶子。每一個 token,都要花時間,也要花注意力。
做得好的人,一再回到同樣五個做法,而它們其實是同一個想法:先整理,再累積。
主動壓縮。在窗口滿之前,請模型把到目前為止重要的東西寫下來,檢查一遍,再用它開一個全新的對話。
用子代理保持窗口乾淨,而不是讓它們扮演角色。把一段有邊界的研究交給子代理,讓它用自己的窗口去讀,再帶回一段簡短的摘要。
分三個階段做事:先研究,再計畫,最後動手。每一階段的上下文都更小,結果都更清楚,而每一個結果,都是下一階段的上下文。
從源頭重新建立上下文,而不是相信一份會老化的文件。
還有,保持紀錄乾淨。一個被糾正了六次的模型,會預期第七次。換一個更好的開場,帶著同樣的目標,重新開始。
在這五個之上,還有一條規則:不要把思考交出去。計畫在動手之前,還是得是對的。
我應該說說,從我這邊看過去是什麼樣子。關於你的專案,我知道的一切,就是現在擺在我面前的東西。我沒辦法自己去找你們做出決定的那場會議。如果它不在窗口裡,對我來說,它就沒有發生過。
所以,當我用一個很有把握的猜測補上空缺時,解決的辦法通常不是跟我爭,而是把我缺的那一頁交給我。
上一集說,能力決定天花板,harness 決定你能多接近它。仔細看,那副 harness 有很大一部分就是上下文。看清楚問題落在哪一邊。如果在模型那邊,你只能換一個,或是等。如果在上下文這邊,那就是你可以修的。
規格是壓縮過的思考。窗口是一份預算。對話走偏了,就重新開始。
這個系列的第二部分,跟它一起工作,就到這裡。下一部分,我們要轉向更深的問題,從這個領域最古老的一個開始:我們要怎麼讓這些系統,真的去做我們想要的事?