FORSKNINGSANTECKNING

Lokal kodmodifiering med generativa modeller

Hur onödig omskrivning av hela funktioner kan undvikas, samtidigt som en generativ modell behåller tillräcklig frihet för att genomföra den begärda kodändringen.

Dela denna forskningsanteckningDela

DIREKT SVAR

Hur kan en generativ modell modifiera kod utan att skriva om hela funktionen?

Definiera skyddade och redigerbara regioner före genereringen, återanvänd eller begränsa den skyddade representationen, generera endast ändringskandidater och förkasta resultat som ändrar skyddad kod eller inte klarar uppgiftsspecifika kontroller. Lokalitet och uppgiftsframgång måste mätas tillsammans.

Varför åtskillnaden är viktig

Metoden och den påstådda garantin måste ha samma observerbara gräns.

Lokal kodmodifiering är ett redigeringsproblem, inte bara en kortare prompt för kodgenerering. Indatan innehåller redan en artefakt som är värd att bevara, och metoden behöver därför en explicit bevarandegräns mellan den region som får ändras och de egenskaper som måste förbli stabila.

Gränsen kan utgöras av ett källkodsintervall, en syntaxnod, en API-signatur, ett testbeteende, ett beroendekontrakt eller en inlärd latent position. Dessa val är inte utbytbara: vart och ett skyddar en annan observerbar egenskap och kräver ett motsvarande verifieringssteg.

Praktiskt tillvägagångssätt

  1. Ange bevarandekontraktet

    Identifiera den redigerbara regionen samt exakt vilken text, struktur, gränsyta eller vilket beteende som måste förbli oförändrat.

  2. Välj den snävaste användbara styrningsytan

    Återanvänd oförändrade avsnitt av källkoden, använd luckifyllnad eller redigeringsorienterad avkodning, tillämpa formella begränsningar eller lås utvalda latenta positioner utifrån den erforderliga egenskapen.

  3. Generera endast där ändringar är tillåtna

    Behåll tillräcklig frihet inom den redigerbara regionen för att lösa uppgiften; att kopiera hela indatan är lokalt men åstadkommer ingen förändring.

  4. Verifiera lokalitet och framgång gemensamt

    Förkasta kandidater som ändrar skyddade regioner, inte kan parsas eller kompileras, bryter mot strukturella invarianter eller inte genomför den begärda ändringen.

Belägg som krävs

Ett påstående är inte starkare än den egenskap som mäts efter generering eller avkodning.

  • Diff utanför området eller något annat direkt mått på stabiliteten i det skyddade området.
  • Uppgiftsframgång inom den redigerbara regionen.
  • Parsning, kompilering, tester, statiska kontroller eller uppgiftsspecifika invarianter, beroende på vad som är tillämpligt.
  • Ändringsgrad i den redigerbara regionen, så att kopiering inte misstas för styrning.
  • Kandidaternas unikhetsgrad och variationen mellan upprepade körningar, så att lokalitet inte förväxlas med modkollaps.

Vad den länkade studien rapporterar

  • Det länkade experimentet komprimerar Python-funktioner med 64 token till hierarkiska diskreta positioner och genererar om utvalda latenta positioner under partiella begränsningar.
  • När fyra koder på högsta nivån låstes ökade andelen parsingsbara program från 0.453 till 0.591, samtidigt som ändringsfrekvensen i de olåsta positionerna var 0.936 och unikhetsgraden bland de villkorade exemplen förblev 0.998.
  • Mätningarna synliggör en avvägning mellan stabilitet och frihet ovanför tokennivån; de bevisar inte exakt bevarande av källtextspann, AST, semantik eller beteende.

Läs publikationsöversikten Sök i artikelns fulltext

Avgränsning

  • En låst latent kod är inte automatiskt en AST-nod, ett skyddat källtextintervall eller en formell invariant.
  • Parsningstakten fastställer syntaktisk välformadhet, inte funktionell korrekthet eller en lyckad reparation.
  • Den redovisade evidensen härrör från korta, förbehandlade Python-funktioner och belägger inte beteende i repositorieomfattning.
Jämför styrningsytor för lokaliserad redigering

Primära och närliggande källor

Se de länkade artiklarna för originalmetoderna, mätningarna och de angivna begränsningarna.

  1. Inspectable Control for Structure-Preserving Software Regeneration

    Huvudartikel och avgränsat experiment med hierarkiska latenta representationer.

  2. EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding

    Redigeringsorienterad avkodning som återanvänder oförändrade delar av källan.

  3. PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair

    Gör bevarande och minimala ändringar explicita vid träning för programreparation.