# 運用生成模型進行局部程式碼修改

Canonical HTML: https://aogavrilov.com/zh-hant/research-notes/localized-code-modification-generative-models/

Document language: zh-Hant

研究札記

如何避免不必要地改寫整個函式,同時保留足夠自由度,使生成模型得以完成所要求的程式碼變更。

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

直接回答

## 生成模型如何在不重寫整個函式的情況下修改程式碼?

在生成前界定受保全區域與可編輯區域,重用或約束受保全表示,僅生成候選變更,並拒絕會改動受保全程式碼或未通過任務特定檢查的輸出。局部性與任務成功必須一併衡量。

## 此項區分為何重要

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

局部程式碼修改屬於編輯問題,而不只是較短的程式碼生成提示。輸入本身已包含值得保留的產物,因此方法必須在允許變更的區域與必須維持穩定的屬性之間,建立明確的保持邊界。

邊界可以是原始碼跨度、語法節點、API 簽章、測試行為、相依性契約或學習所得的潛在位置。這些選擇不可互換:每一種邊界保護不同的可觀察屬性,也各自需要相應的驗證步驟。

## 實務流程

1. 陳述保留契約 識別可編輯區域,以及必須維持不變的確切文字、結構、介面或行為。
2. 選擇範圍最小而仍實用的控制介面 重用未變更的原始碼片段、採用填補式或編輯導向解碼、施加形式約束,或依所需屬性鎖定選定的潛在位置。
3. 僅在允許變更之處進行生成 在可編輯區域內保留足以完成任務的自由度;複製整個輸入雖具局部性,卻無法推進任務。
4. 同時驗證局部性與成功與否 拒絕會變更受保護區域、無法通過剖析或編譯、違反結構不變量,或未滿足所要求變更的候選結果。

## 必須具備的證據

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

- 區域外差異,或其他直接衡量受保護區域穩定性的指標。
- 可編輯區域內的任務成功情形。
- 視情況採用剖析、編譯、測試、靜態檢查或任務特定不變量。
- 衡量可編輯區域的變更率,以免將複製誤認為控制。
- 評估候選結果的獨特性與重複執行時的變異,以免將局部性誤認為模式崩潰。

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

- 連結的實驗將含 64 個詞元的 Python 函式壓縮為階層式離散位置,並在部分約束下重新生成選定的潛在位置。
- 鎖定四個頂層編碼後,剖析率從 0.453 提升至 0.591;未鎖定位置的變更率為 0.936,條件樣本的唯一性則維持在 0.998。
- 這些量測揭示詞元層級之上的穩定性與自由度權衡;它們並未證明能精確保留原始碼範圍、AST、語意或行為。

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

## 範圍邊界

- 鎖定的潛在編碼不會自動成為 AST 節點、受保護的原始碼區段或形式不變量。
- 剖析成功率只能確認語法形式良好,無法確認功能正確或修復成功。
- 所報告的證據來自經前處理的短 Python 函式,尚不足以確立儲存庫規模下的行為。

## 主要與鄰近文獻來源

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

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. [PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair](https://arxiv.org/abs/2604.03113) 在程式修復訓練中明確納入保持與最小變更。

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