打造 AI Agent Skills 框架 — 會話分離
為什麼同一個 AI 在對話後半段的品質會下降?用架構手段結構性消滅幻覺
一個 AI 對話窗口的品質,隨著時間推移會衰減。
這不是抽象的理論。在實作企業表單系統的頁面時,我反覆觀察到同樣的模式:前半段精準、後半段開始出錯。一開始正確識別了版型和欄位,到了事件處理的階段,居然把規格分析時的結論和實際程式碼搞混了——規格書裡的欄位名稱被自由發揮成了別的東西。
直覺反應是 AI 的能力不足。但換一個新的對話窗口,同樣的 AI、同樣的 Skill,品質立刻回升。
不是 AI 變笨了,是上下文窗口髒了。
上下文壓力假說
一個長對話裡,規格書分析的文字、計畫的文字、程式碼的文字全部堆在同一個上下文窗口裡。AI 需要在這團混合物中區分「這是分析結論」和「這是實際該寫的程式碼」。
當對話足夠長,這兩者開始互相污染。規格分析階段的推論(「這個欄位可能需要連動」)跑進了程式碼生成階段,變成了未經驗證的實作。
假說:上下文壓力是幻覺的主因,而非 AI 能力不足。
驗證方式很粗暴——強制切窗口。
三窗口模式
如果上下文壓力是問題,解法就是減壓。把一個大任務拆成幾段,每段用乾淨的上下文窗口。
最終穩定下來的是三窗口模式:
graph LR
W1[W1: 規劃窗口] -->|計畫文件| W2[W2: 執行窗口]
W2 -->|進度標記| W3[W3: 事件窗口]
W3 -->|完成標記| W2
style W1 fill:#1a3a5c,color:#fff
style W2 fill:#2d5016,color:#fff
style W3 fill:#5c3a1a,color:#fff
W1:規劃窗口。 只做規格分析和計畫撰寫。讀規格書、識別風險、列出每個 Phase 的工作項目。產出是一份存檔的計畫文件。這個窗口不寫任何程式碼。
W2:執行窗口。 讀取計畫文件和規格書,按 Phase 生成程式碼。這個窗口看不到 W1 的分析過程——它只看到分析的結論(計畫文件)。上下文是乾淨的。
W3:事件窗口。 最複雜的事件邏輯(Phase 4)獨立出來,用全新的窗口處理。為什麼?因為事件邏輯是幻覺的重災區——欄位連動、遠端查詢、驗證流程,需要同時考慮太多東西。在累積了 Phase 1-3 的上下文之後,AI 處理事件邏輯的品質明顯下降。新窗口沒有累積的上下文,品質回升。
計畫文件:窗口之間的接力棒
三窗口模式的核心問題是:窗口之間怎麼傳遞狀態?
答案是計畫文件。它是窗口之間唯一的狀態傳遞介質。
但計畫文件本身也經歷了一次劇烈瘦身。
最初的計畫文件是「自包含」的——裡面塞了欄位表、規格摘要、連動關係圖的副本。邏輯是「執行窗口只需要讀計畫文件就能開始工作」。
問題來了。計畫文件有 4-5KB,佔了執行窗口上下文的 5-10%。而且裡面有很多是規格書的複述——AI 在執行窗口裡同時看到計畫裡的複述和原始規格書,兩者的措辭不完全一致,又一個幻覺來源。
瘦身 63%。只留三個東西:
- §1 風險項:哪些地方有坑,需要特別注意
- §2 人類決策:使用者確認的事項(模糊之處已釐清)
- §3 進度追蹤:每個 Phase 的完成狀態(✅ / ⬜ / ⏸️)
欄位表?不需要——執行窗口直接讀規格書原文。連動邏輯?不需要——讀規格書對應的章節。計畫文件只放「規格書裡讀不到的東西」——風險判斷、人類決策、進度狀態。
瘦身後的計畫文件只有 1.5-2KB,佔上下文不到 2%。
STOP 點:強制喘息
執行窗口內部也有控制機制——STOP 點。
每個 Phase 完成後,AI 必須停下來等待使用者的「繼續」指令。不是建議停——是強制停(HARD-GATE)。
STOP 點的作用不只是品質檢查。它製造了一個「重新對齊」的機會——AI 在停下來的時候,重新讀取計畫文件的進度狀態,確認下一個 Phase 的任務。這個重新對齊動作降低了上下文漂移的風險。
觸發新窗口的條件也有明確的分級:
| 複雜度 | 條件 | 建議 |
|---|---|---|
| 低 | 簡單版型,遠端查詢 ≤2 個,風險 ≤2 項 | 可選新窗口 |
| 中 | Master Layout,遠端查詢 ≤2 個,風險 ≤2 項 | 建議開新窗口 |
| 高 | Master-Detail Layout,或遠端查詢 ≥3 個,或風險 ≥3 項 | 強烈建議開新窗口 |
注意這裡用的是「建議」和「強烈建議」,而不是「強制」。因為開新窗口有成本——使用者需要重新載入 Skill、重新提供規格書。在低複雜度的情況下,留在同一個窗口也可以。
但高複雜度的案例(Master-Detail Layout 搭配大量遠端查詢),實測結果很明確:在同一窗口完成的錯誤率是開新窗口的 3-4 倍。
中斷接續
三窗口模式還解決了一個實務問題:中斷後怎麼接續。
工程師不可能一口氣做完一個複雜頁面。開會、午餐、下班——中斷是必然的。在沒有會話分離之前,中斷意味著上下文遺失。新開一個窗口,AI 對之前的進度一無所知。
計畫文件的 §3 進度追蹤解決了這個問題。每個 Phase 標記為 ✅(完成)、⬜(待做)或 ⏸️(中斷)。新窗口讀取計畫文件,從 ⏸️ 標記的地方接續。不需要重做已完成的 Phase。
這個設計意外地成為了團隊協作的基礎——一個人在 W1 做完規劃,另一個人可以在 W2 接手執行。計畫文件就是交接文件。
核心洞察
會話分離的核心不是什麼高深的架構。它就是一句話:
用「分窗口」取代「更長的 prompt」來對抗上下文幻覺。
大多數人遇到 AI 品質下降時,第一反應是加更多指引、加更多上下文。但上下文窗口不是無底洞——塞越多,單一資訊的權重越低。分窗口把上下文的重要度「重新歸零」,每個窗口只處理一個焦點。
如果你發現 AI 在長對話後半段開始出錯,試試在關鍵轉折點切一個新窗口。帶上結論,不帶過程。
本文是「打造 AI Agent Skills 框架」系列的第 6/13 篇
← 上一篇:HARD-GATE → 下一篇:Orchestrator