AI News HubLIVE
站內改寫1 分鐘閱讀

在AI生成代碼中通過ADRs和契約強制執行不變量

本文介紹瞭如何使用架構決策記錄(ADR)和RFC 2119關鍵字來強制執行AI生成代碼中的不變量。它描述瞭如何將架構決策記錄為不變量,確保AI代理在生成代碼前查閲這些記錄,並通過確定性檢查來防止違反。

來源Hacker News AI作者: recroad

Zarar Siddiqi在2026年6月30日發表了一篇文章,探討如何在AI生成代碼中強制執行不變量。不變量源於領域驅動設計,是指系統必須始終滿足的規則,以確保有效狀態。然而,大型語言模型(LLM)生成的代碼可能看似正確,卻悄悄地違反了這些隱含約束。因此,需要將不變量編碼到AI無法忽略的地方。

文章提出了兩種方法:架構決策記錄(ADR)和RFC 2119關鍵字。ADR用於記錄架構決策,並將其視為不變量。為了有效使用ADR,需要識別何時記錄決策、實際記錄,並指導AI代理將其作為不變量對待。作者通過一個ADR自動建議技能來識別架構轉折點,例如“X vs Y”比較、引入新依賴等。該技能不編寫記錄,而是提醒用户使用/adr命令。命令會創建包含上下文、決策、選項和後果的ADR文件,並維護索引頁面。

為了強制AI代理查閲ADR,作者添加了一個確定性鈎子(check-adrs.sh),在代碼生成停止時運行。它會檢查修改的文件是否在ADR的範圍內,以及該ADR是否在會話中被打開過。如果沒有,則阻止代碼通過。

對於行為需求,使用RFC 2119關鍵字(如SHALL、MUST)結合Gherkin場景(given/when/then)來指定規則。例如,“系統在訂單完成時SHALL創建履行記錄,每條記錄MUST有唯一標識符”。作者使用OpenSpec工具自動生成規範,並在實現偏離時重寫,以保持規範與代碼同步。同樣,需要確保AI代理在生成代碼前查閲規範。

總之,ADR和RFC 2119規範從不同角度解決相同問題:ADR固定架構決策,規範固定行為。兩者都需要確定性檢查來確保代理實際查閲,而不是依賴提示。這些檢查是淺層的,只驗證規則是否被諮詢,而更深層的語義判斷仍需要人工和測試。將更多不變量從文本提示轉移到可強制執行的檢查,可以減少對模型記憶的依賴,保持代碼庫的穩定狀態。