輕量級、零依賴的提示,防止AI代理丟失上下文
一種針對AI編碼代理的提示約定,使用僅追加的設計日誌和原地編輯的索引,以保持長期項目中的推理和歷史記錄,避免上下文丟失。該方法通過保留錯誤信念、強制列出未完成項和廉價自我糾正來提升代理可靠性。
對於需要多會話處理的AI編碼代理,保持上下文一致性是一個關鍵挑戰。一種新的提示約定提出了一種簡單但強大的解決方案:使用兩個具有相反策略的文檔。第一個文檔是一個僅追加的設計日誌(DESIGN.md),其中每個工作單元都添加一個編號、日期的節段,且從不編輯早期內容。當發現錯誤時,新節段會通過編號引用並更正,但保留錯誤原文。每個節段必須以明確的“未完成”列表結尾,列出故意跳過、推遲或未驗證的項目。第二個文檔是一個原地編輯的索引(CLAUDE.md或AGENTS.md),每次會話自動加載,包含當前規則和少量關鍵事實。這種模式確保推理歷史完整,而代理始終擁有最新指南。
該約定源自一個實際項目,經過數十次會話和約六十個節段的演變。其核心機制在於廉價自我糾正:由於不要求回溯編輯早期錯誤,代理更願意承認錯誤。此外,未完成列表強制暴露項目中被隱藏的20%問題,防止代理僅報告成功部分。編號系統使得“後續節段優先”的規則可操作,矛盾通過較高編號自動解決。
然而,這種方法也有代價。僅追加日誌會變長,幷包含錯誤的陳述。一個從頭到尾閲讀日誌的人可能會得到錯誤的印象。因此,第二個文檔至關重要,它提供當前真相,作為日誌的入口點。作者強調,不要清理或壓縮日誌,因為看似混亂的記錄——包含已知錯誤的舊節段——正是系統的價值所在,它保留了決策的歷史和背景。
該約定最適用於跨會話的複雜項目,特別是那些容易出錯且錯誤發現較晚的領域,如移植、逆向工程、協議開發或性能調優。對於簡短、明確的工作,獲益有限。三個主要失敗模式為:節段未編號、加載文件中沒有指向日誌的指針、以及“未完成”列表退化為模糊的“未來工作”。通過在每次會話開始處引用約定,可以確保日誌被持續讀寫。此外,作者提供了精確的開場指令,包括在DESIGN.md中保持設計-工作日誌、在CLAUDE.md中添加引用行,以及可選地將提交消息格式對齊。該約定不依賴於特定語言或領域,其成功取決於跨會話的工作、昂貴的重新推導以及後期發現錯誤的可能性。總之,這種兩文檔模式為AI代理在長期項目中保持上下文和可靠性提供了一種實用且經過驗證的方法。