像管理資源一樣管理上下文
一段長對話不是免費的。隨著執行緒變長,更早的指令會被埋沒,模型會更倚重最近的訊息,二十輪之前你陳述過的細節會悄悄不再要緊。把上下文視窗想像成一個固定大小的盒子:隨著對話變長,它逐漸裝滿,而你最早的指令被推向模型最少留意的底部:
早期輪次 長對話
┌──────────────┐ ┌──────────────┐
│ 規格 (清晰) │ │ 閒聊 │ ◀ 最近 (被重視)
│ │ │ 閒聊 │
│ │ │ 修復嘗試 │
│ │ │ 舊程式碼 v3 │
│ │ ───▶ │ 舊程式碼 v2 │
│ │ ├──────────────┤
│ │ │ 規格 (被埋沒)│ ◀ 被忽略
└──────────────┘ └──────────────┘
│ XXXXXXX │ ◀ 被擠出
└──────────────┘
把上下文視窗當作一塊你有責任保持整潔的工作臺,而不是一份無限的記憶。
幾個習慣能幫上忙:
- 轉向時重述規格。 別假設十條訊息前的某個要求還成立。把當前目標總結成一小段,讓 AI 從那裡開始工作。
- 新問題就重開。 當你從認證程式碼切到一個 CSS(層疊樣式表 —— 控制頁面外觀的語言)bug 時,開一段新對話。拖著不相關的上下文,只會讓模型更差,而不是更好。
- 粘當前程式碼,而不是歷史。 如果一個函式改過五次,AI 不需要那五個舊版本——它需要現在存在的那一個。把當前狀態和下一處改動給它。
- 在對話之外留一份簡短的事實來源。 對一個較長的任務,檔案裡的幾行("技術棧、關鍵決定、已完成、下一步")能讓你在幾秒內把一段新對話重新播種,而不必從滾動記錄裡一點點重建。
目標和貫穿本章的那個一樣:在每一刻,AI 都應當從一幅準確、緊湊的任務圖景出發工作——而不是一份它得連蒙帶猜才能穿過的、漫無邊際的對話記錄。