# Ako môže AI upravovať kód bez opätovného vygenerovania celého programu?

Canonical HTML: https://aogavrilov.com/sk/research/discrete-latent-generation/

Document language: sk

Praktická výskumná príručka o lokálnych úpravách kódu pomocou generatívnych modelov: čo má zostať nemenné, čo sa smie zmeniť a aké dôkazy sú potrebné, aby bolo možné tvrdiť, že transformácia zachováva štruktúru.

Publikované 25. júla 2026 Aktualizované 30. júla 2026 [Alexey Gavrilov](https://aogavrilov.com/about/)

## V čom problém skutočne spočíva

Úprava kódu nie je iba generovaním kódu s kratším zadaním. Editor dostáva existujúci artefakt, zamýšľanú zmenu a implicitnú dohodu o zachovaní. Ústredná otázka má preto dve stránky: **ktorá oblasť sa môže zmeniť a ktoré vlastnosti zvyšku musia zostať stabilné?**

Táto príručka je určená technicky zdatným čitateľom, ktorí začínajú so softvérovými úpravami podporovanými AI. Oddeľuje intuitívnu predstavu lokálnej úpravy od silnejších tvrdení o syntaktickom, štruktúrnom, sémantickom a funkčnom zachovaní.

## Hlavná myšlienka

Editor s vymedzeným rozsahom potrebuje explicitnú hranicu zachovania, nielen cieľ generovania.

### Čo musí zostať nemenné

Môže ísť o textový úsek, gramatiku, signatúru API, oblasť AST, správanie testu, kontrakt závislosti alebo naučenú hrubú reprezentáciu. Každá voľba chráni inú podobu stability.

### Čo sa môže zmeniť

Upravovateľná oblasť potrebuje dostatočnú voľnosť na vyriešenie požadovanej úlohy. Metóda kontroly, ktorá všetko skopíruje, je stabilná, no nepoužiteľná; metóda, ktorá všetko prepíše, poskytuje voľnosť bez lokálnosti.

## Intuitívny model: zrekonštruovať jednu miestnosť, zachovať budovu

Predstavte si renováciu jednej miestnosti, pri ktorej zostanú nosná konštrukcia, napojenia rozvodov aj susedné miestnosti nedotknuté. Úplné opätovné generovanie sa podobá prestavbe domu podľa slovného opisu. Lokalizovaná úprava namiesto toho označí chránenú štruktúru, vymedzí pracovnú oblasť, vykoná zmenu a pred jej prijatím skontroluje výsledok.

**Kde analógia prestáva platiť.** Naučený latentný kód nie je certifikovaným architektonickým plánom. Fixovanie hrubého kódu môže zvýšiť nameranú stabilitu štruktúry, nezaručuje však, že konkrétny uzol AST, správanie alebo rozhranie zostanú nezmenené.

## Presnejší pohľad na čiastočné regenerovanie

Nech enkóder zobrazí program `x` na štruktúrovanú latentnú reprezentáciu `z` . Maska zachovania vyberá pozície `L` ponechať zafixované. Generátor vzorkuje iba komplementárne pozície, pričom vynucuje `z'l = zl` pre každú uzamknutú pozíciu. Dekodér následne prevedie dokončenú reprezentáciu `z'` späť na zdrojový kód.

Tento mechanizmus vytvára nad tokenmi kontrolovateľné riadiace rozhranie. Jeho význam treba naďalej určiť empiricky: výskumníci musia overiť, čo uzamknuté pozície zachovávajú po dekódovaní a či upraviteľným pozíciám zostáva dostatočná voľnosť.

## Štvorfázový pracovný postup úprav

1. Určte hranicu Určte chránené oblasti alebo vlastnosti a vymedzte zamýšľanú zmenu.
2. Reprezentovať artefakt Použite text, syntax, kontext získaný vyhľadávaním alebo hrubé a jemné naučené kódy.
3. Selektívne opätovne generovať Vzorkovať iba upraviteľné pozície pri zachovaní zvolených obmedzení.
4. Pred prijatím overte Zmerajte lokalitu, syntax, štruktúru, správanie a nežiaduce vedľajšie účinky.

## Úprava kódu, oprava programu a generovanie s obmedzeniami nie sú totožné úlohy

| Prístup | Hlavný cieľ | Typický mechanizmus zachovania | Čo ešte treba overiť |
| --- | --- | --- | --- |
| Generovanie celého kódu | Vytvoriť úplný artefakt | Inštrukcia a kontext | Všetko mimo požadovanej zmeny |
| Automatizovaná oprava programov | Odstrániť diagnostikovanú chybu | Lokalizácia chýb, testy, šablóny alebo záplaty | Správnosť nad rámec dostupných testov a minimálnosť záplaty |
| Modely na dopĺňanie alebo úpravy | Úprava vybraných oblastí textu | Viditeľný prefix, sufix, rozdiel alebo kontext úpravy | Nezamýšľané zmeny štruktúry a správania |
| Dekódovanie s gramatickými obmedzeniami | Udržujte výstupy v rámci formálneho jazyka | Stavy dekódovania vyhovujúce gramatike | Význam programu, správnosť úlohy a lokalita |
| Hierarchická kontrola latentného priestoru | Opätovne generovať vybrané naučené pozície | Uzamknuté hrubé alebo jemné latentné kódy | Čo tieto kódy zachovávajú po dekódovaní |

## Ako merať lokálnosť a zachovanie štruktúry

## Ktoré riadiace rozhranie zodpovedá úlohe úprav?

„Neprepisujte celú funkciu“ je požiadavka, nie úplná metóda. Začnite výsledkom, ktorý musí byť predvídateľný, a potom zvoľte riadiace rozhranie a zodpovedajúce dôkazy.

| Požadovaná záruka | Vhodnejšie zvolené riadiace rozhranie | Dôkazy, ktoré treba požadovať |
| --- | --- | --- |
| Refaktorovanie podporované umelou inteligenciou so zachovaním správania | Nech veľký jazykový model identifikuje alebo navrhne transformáciu a následne ju podľa možností vykonajte pomocou dôveryhodného nástroja na refaktorizáciu. Pozri [RefactoringMirror](https://arxiv.org/abs/2411.04444) . | Kompilácia, testy, statické kontroly a detekcia refaktorizácie. [SWE-Refactor](https://arxiv.org/abs/2602.03712) explicitne zavádza tieto kontroly na úrovni repozitára. |
| Lokálna úprava kódu bez prepisovania celej funkcie | Opätovne použiť nezmenené úseky zdrojového kódu a generovať iba kandidátne oblasti úprav, ako v [EfficientEdit](https://arxiv.org/abs/2506.02780) . | Rozdiel mimo oblasti, úspešnosť úlohy, opätovné použitie prijatých tokenov a posúdenie, či vynechaný kontext vedie k prehliadnutiu zmien medzi súbormi. |
| Generovanie kódu s obmedzeniami pre softvérové inžinierstvo | Počas dekódovania vynúťte formálnu vlastnosť, ako napríklad v [difúzia s gramatickými obmedzeniami](https://arxiv.org/abs/2508.10111) , alebo ukladať platné prefixy ako kontrolné body a vrátiť späť iba zodpovednú oblasť, ako v prípade [Hydra](https://arxiv.org/abs/2605.15238) . | Úspešnosť overenia gramatikou, kompilátorom alebo kontrolou typov spolu s funkčnými testami, lokalitou, latenciou opravy a množstvom opätovne vygenerovaného platného kódu. |
| Selektívne opätovné generovanie funkcií jazyka Python s rovnováhou medzi lokálnosťou a rozmanitosťou | Uzamknite vybrané hrubé alebo jemné latentné pozície a vzorkujte iba zvyšné. | Lokalita dekódovaného výstupu, syntax, štruktúrne invarianty, voľnosť úprav, rozmanitosť a neistota. Samotné uzamknutie latentných reprezentácií nezaručuje refaktorizáciu. |
| Predvídateľné generovanie kódu podľa explicitnej špecifikácie zachovania | Pred generovaním definujte pozorovateľné chránené vlastnosti a kontroly úspechu či zlyhania; následne vyberte najužší mechanizmus, ktorý ich dokáže vynútiť alebo sprístupniť na overenie. | Po dekódovaní zmerajte presne tieto vlastnosti a pri opakovaných behoch uveďte mieru prijatia, odmietnutia a zlyhania. Samotné deterministické vzorkovanie nie je zárukou zachovania. |

## Výskumné otázky, na ktoré tento sprievodca odpovedá

Tieto stručné odpovede vymedzujú tvrdenia a hranice dôkazov uplatňované v celej príručke.

1. Ako môže generatívny model upraviť kód bez prepísania celej funkcie? Pred generovaním definujte hranicu upravovateľnej oblasti, zdrojový kód mimo nej zachovajte alebo opätovne použite, generujte iba kandidátne zmeny a zamietnite výstupy, ktoré nesplnia úlohu alebo menia chránené oblasti. Hierarchické uzamknutie latentných reprezentácií je jedným z experimentálnych kontrolných rozhraní, nezaručuje však totožné rozsahy zdrojového kódu. [Porovnajte kontrolné rozhrania lokalizovaných úprav](https://aogavrilov.com/sk/research/discrete-latent-generation/#control-surface) .
2. Aké dôkazy ukazujú, že úprava kódu je lokálna, a nie iba syntakticky platná? Rozdiel mimo požadovanej oblasti merajte spolu s úspešnosťou úlohy, zmenou upraviteľnej oblasti, štruktúrnymi invariantmi, testami alebo statickými kontrolami a variabilitou medzi opakovanými behmi. Samotná úspešnosť syntaktickej analýzy potvrdzuje iba syntaktickú správnosť. [Prejsť kontrolný zoznam dôkazov o lokalite](https://aogavrilov.com/sk/research/discrete-latent-generation/#measurement) .
3. Ako vyvážiť lokálnosť úprav kódu s rozmanitosťou generovania? Stabilitu chránenej oblasti uvádzať spolu s voľnosťou v upraviteľnej oblasti a jedinečnosťou kandidátov. Kopírovanie vstupu môže maximalizovať stabilitu bez akéhokoľvek pokroku v úlohe; neobmedzené prepisovanie môže maximalizovať rozsah zmien, no zároveň zničiť lokalitu. [Pozrite si dôkazy o ohraničenom vzťahu medzi stabilitou a voľnosťou](https://aogavrilov.com/sk/research/discrete-latent-generation/#evidence) .
4. Čím sa líšia lokalizovaná úprava kódu, generovanie s obmedzeniami a oprava programov? Lokalizovaná úprava zdôrazňuje, čo musí zostať nezmenené; generovanie s obmedzeniami vynucuje formálnu vlastnosť výstupu, napríklad príslušnosť ku gramatike; oprava programu zasa vyžaduje, aby zmena spĺňala špecifikáciu chyby alebo úlohy. Samotná syntax nedokazuje sémantickú ekvivalenciu, funkčnú správnosť, úspešnosť úlohy ani lokálnosť. [Porovnajte tri ciele](https://aogavrilov.com/sk/research/discrete-latent-generation/#comparison) .
5. Ako možno opätovne vygenerovať vybrané časti funkcie jazyka Python, pričom jej zvyšok zostane stabilný? Pred generovaním definujte chránené a upravovateľné oblasti, meňte iba upravovateľnú reprezentáciu, vykonajte dekódovanie a zamietnite kandidátov, ktorí menia chránený kód alebo nevyhovejú syntaxi, testom, statickým kontrolám či invariantom špecifickým pre úlohu. Opísaný experiment s hierarchickými latentnými reprezentáciami meria pravdepodobnostnú stabilitu funkcií so 64 tokenmi; nezaručuje nezmenené rozsahy ani správanie. [Preskúmajte pracovný postup selektívneho opätovného generovania](https://aogavrilov.com/sk/research/discrete-latent-generation/#workflow) .
6. Ktorá stratégia riadenia je vhodná na refaktorizáciu podporovanú AI so zachovaním správania? Model použite na identifikáciu alebo návrh transformácie; ak je to možné, vykonajte ju dôveryhodným refaktorizačným nástrojom a overte kompiláciu, testy, statické kontroly aj zamýšľanú refaktorizáciu. Vierohodne pôsobiaca vygenerovaná úprava nie je dostatočným dôkazom. [Otvoriť riadok rozhodovania o refaktoringu](https://aogavrilov.com/sk/research/discrete-latent-generation/#control-surface) .
7. Čo robí generovanie kódu predvídateľným, nielen ovládateľným? Pred výberom generátora stanovte pozorovateľnú špecifikáciu zachovania a akceptačné kritériá. Predvídateľnosť závisí od toho, čo zostane stabilné po dekódovaní a overení, nielen od toho, či bolo pevne určené zadanie, maska, gramatika alebo latentný kód. [Definujte dohodu o zachovaní](https://aogavrilov.com/sk/research/discrete-latent-generation/#core-idea) .

## Čo súčasný experiment ukazuje — a čo nie

V [*Preskúmateľné riadenie opätovného generovania softvéru so zachovaním štruktúry*](https://aogavrilov.com/sk/publications/inspectable-control/) , hierarchický model VQ-VAE mapuje 64-tokenové funkcie v jazyku Python na 16 diskrétnych pozícií najvyššej a 32 pozícií nižšej úrovne. Uzamknutie štyroch kódov najvyššej úrovne zvyšuje podiel syntakticky analyzovateľných výstupov z **0,453 až 0,591** , zatiaľ čo odomknuté pozície sa naďalej menia s mierou **0.936** a podmienené vzorky zostávajú **0,998 jedinečných** .

Ide o dôkaz nameraného kompromisu medzi stabilitou a voľnosťou v jednom malom prostredí. Nezaručuje presné zachovanie AST, sémantickú ekvivalenciu, funkčnú správnosť, úspešnú opravu ani správanie v rozsahu repozitára.

Sprievodná štúdia [*Kde sa stráca kvalita pri generovaní komprimovaných krátkych textov*](https://aogavrilov.com/sk/publications/where-quality-breaks/) prináša dôležité poučenie pre hodnotenie: zlepšenie zástupných metrík latentného priestoru nemusí viesť k zlepšeniu dekódovaných výstupov. Reprezentáciu, generovanie a správanie dekódovaného výstupu treba overovať ako samostatné fázy.

Opakovane použiteľný rozhodovací postup nájdete v sprievodnej príručke o [oddeľovanie straty kodeku od straty generátora](https://aogavrilov.com/sk/research/codec-bottleneck-diagnosis/) .

## Bežné nedorozumenia

### „Dá sa syntakticky analyzovať, teda je to správne.“

Syntaktická analýza dokazuje iba syntaktickú správnosť. Program môže napriek tomu porušovať testy, kontrakty alebo zámer.

### „Hrubý kód je uzol AST.“

Nie, pokiaľ nebolo preukázané explicitné zosúladenie. Naučené kódy môžu spájať viacero povrchových a štruktúrnych faktorov.

### „Uzamknuté latentné reprezentácie znamenajú nezmenený zdrojový text.“

Dekódovanie je globálne a naučené. Pevné latentné pozície môžu zvýšiť stabilitu bez toho, aby zaručili totožný rozsah textu.

### „Menšia zmena je vždy lepšia.“

Editor, ktorý iba skopíruje vstup, dosiahne dokonalú stabilitu, no nijaký pokrok v úlohe. Lokálnosť a úspešnosť úpravy sa musia merať spoločne.

## Čo čítať ďalej

Príbuzné práce používajú odlišné rozhrania riadenia; bez zosúladenia úloh nemožno žiadnu z nich považovať za zameniteľnú referenčnú metódu.

1. [Self-Edit: Fault-Aware Code Editor for Code Generation](https://arxiv.org/abs/2305.04087) Považuje generovanie za upraviteľný proces a zistené chyby využíva na usmernenie opravy.
2. [Coeditor: Leveraging Contextual Changes for Multi-round Code Auto-editing](https://arxiv.org/abs/2305.18584) Modeluje kontextové zmeny kódu naprieč kolami úprav namiesto opätovného generovania od začiatku.
3. [PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair](https://arxiv.org/abs/2604.03113) Pri trénovaní opravy programov explicitne zohľadňuje zachovanie a minimálnosť zmien.
4. [Constrained Decoding of Diffusion LLMs with Context-Free Grammars](https://arxiv.org/abs/2508.10111) Ukazuje, ako môžu formálne obmedzenia počas difúzneho dekódovania zabezpečiť syntaktické záruky.
5. [Neural Discrete Representation Learning](https://arxiv.org/abs/1711.00937) Predstavuje VQ-VAE, základný mechanizmus naučených diskrétnych latentných reprezentácií.
6. [Simple and Effective Masked Diffusion Language Models](https://arxiv.org/abs/2406.07524) Uvádza rámec maskovanej diskrétnej difúzie použitý ako latentný generátor v sprievodnej diagnostickej štúdii.
7. [An Empirical Study on the Potential of LLMs in Automated Software Refactoring](https://arxiv.org/abs/2411.04444) Identifikuje nebezpečné refaktoringy navrhnuté modelmi LLM a hodnotí opätovné vykonanie zistených transformácií pomocou dôveryhodných refaktoringových nástrojov.
8. [SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring](https://arxiv.org/abs/2602.03712) Hodnotí refaktoring na úrovni repozitára so zachovaním správania pomocou kompilácie, testov a detekcie refaktoringu.
9. [EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding](https://arxiv.org/abs/2506.02780) Opätovne používa nezmenené segmenty zdrojového kódu a predikuje miesta úprav namiesto toho, aby úpravu považoval za úplnú autoregresívnu regeneráciu.
10. [Hydra: Efficient, Correct Code Generation via Checkpoint-and-Rollback Support](https://arxiv.org/abs/2605.15238) Využíva statickú kontrolu, kontrolné body a cielený návrat, aby po chybe zabránil opätovnému generovaniu už platných prefixov.

## Stručné zhrnutie

Lokalizované opätovné generovanie kódu je dohodou medzi **zmena** a **zachovanie** . Hierarchické diskrétne latentné reprezentácie poskytujú jeden spôsob vyjadrenia tejto zmluvy, ktorý umožňuje inšpekciu; reprezentácia je však užitočná len vtedy, keď sa dekódované programy hodnotia z hľadiska lokálnosti, syntaxe, štruktúry, správania, rozmanitosti a neistoty.

## Publikácie v tejto výskumnej oblasti

### [Where Quality Breaks in Compressed Short-Text Generation: Staged Bottleneck Localization](https://aogavrilov.com/sk/publications/where-quality-breaks/)

Kde sa stráca kvalita pri generovaní komprimovaných krátkych textov: etapová lokalizácia úzkeho miesta

Diagnostická metodika FRUCT 39 2026 Hlavná konferencia

### [Inspectable Control for Structure-Preserving Software Regeneration](https://aogavrilov.com/sk/publications/inspectable-control/)

Preskúmateľné riadenie opätovného generovania softvéru so zachovaním štruktúry

Metóda riadenia v latentnom priestore FSE Companion '26 2026 Sprievodný poster
