# 可預測的程式碼生成需要保留契約

Canonical HTML: https://aogavrilov.com/zh-hant/research-notes/predictable-code-generation-preservation-contract/

Document language: zh-Hant

研究札記

為何確定性取樣仍不足夠,以及可觀察的受保護性質與驗收檢查如何使程式碼生成行為成為可測試的對象。

已出版 2026 年 7 月 30 日 [Alexey Gavrilov](https://aogavrilov.com/about/)

直接回答

## 什麼使程式碼生成具可預測性,而不只是可控制?

要達成可預測性,必須在生成前訂明可觀察的契約:哪些內容可以變更、哪些內容必須維持穩定、如何衡量各項屬性,以及何時應拒絕輸出。固定的提示、隨機種子、遮罩、文法或潛在編碼都只是實作機制。

## 此項區分為何重要

方法與所宣稱的保證必須採用相同的可觀察邊界。

確定性生成會在固定條件下重現同一輸出。可預測生成則使宣告的屬性可供測試,例如 API 簽章維持不變、編輯侷限於特定區域、語法持續有效,或測試套件仍能通過。

此項區分至關重要,因為控制輸入本身並不界定其效果。鎖定潛在位置、固定隨機種子或約束文法,雖可使生成過程更易檢視,但受保護屬性仍須在解碼後加以量測。

## 實務流程

1. 宣告受保全的屬性 明定哪些來源區域、結構、介面、行為或分布必須維持在指定的容許範圍內。
2. 選擇相符的控制機制 應依據欲保護的性質,選用原始碼重用、編輯遮罩、形式約束、潛在表徵鎖定,或「提出方案後驗證」等方法。
3. 在取樣前訂定接受條件 在檢視輸出前,先明定剖析、編譯、測試、結構檢查、局部性閾值及任務成功準則。
4. 衡量重複執行的行為 報告多次重複執行的接受率、拒絕率、穩定性、多樣性與不確定性,而非僅依賴單一示例結果。

## 必須具備的證據

一項主張的可信度,取決於生成或解碼後實際量測的性質所能提供的證據強度。

- 受保護屬性與可編輯屬性分別陳述。
- 每項聲稱的保證皆有可觀測的測試或指標。
- 任務成功情形與穩定性一併評估。
- 重複執行的變異與拒絕率皆清楚可見。
- 主張明確排除未經量測的性質。

### 所連結研究的報告內容

- 連結的實驗將階層式離散位置呈現為短 Python 函式的一種可檢視控制介面。
- 鎖定四個頂層位置改善了剖析率,同時未鎖定位置仍保持高變更率,樣本唯一性亦維持在高水準。
- 本論文將此結果報告為初步的機率性證據;並未宣稱能精確保存 AST、達成語意等價或功能正確性,亦未宣稱具備儲存庫規模的可預測性。

[閱讀出版成果概覽](https://aogavrilov.com/zh-hant/publications/inspectable-control/) [搜尋論文全文](https://aogavrilov.com/publications/inspectable-control/full-text/)

## 範圍邊界

- 可預測性取決於特定屬性:系統在語法上可能可預測,在行為上卻可能不可預測。
- 確定性解碼可能反覆產生相同的錯誤或範圍過廣的編輯。
- 網站現有實驗並未對其所量測的短函式設定以外情況提供任何保證。

## 主要與鄰近文獻來源

原始方法、量測結果與明列限制,請參閱所連結的論文。

1. [Inspectable Control for Structure-Preserving Software Regeneration](https://aogavrilov.com/zh-hant/publications/inspectable-control/) 主要的有界實驗及明確陳述的證據限制。
2. [EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding](https://arxiv.org/abs/2506.02780) 一種以編輯為導向、重用未變更原始碼區段的機制。
3. [Constrained Decoding of Diffusion LLMs with Context-Free Grammars](https://arxiv.org/abs/2508.10111) 具備明確形式約束的機制範例。

維護者 Alexey Gavrilov 。本頁彙整既有證據,未加入引述來源之外的任何實驗結果。
