# Paano mae-edit ng AI ang code nang hindi muling binubuo ang buong programa?

Canonical HTML: https://aogavrilov.com/fil/projects/discrete-latent-generation/

Document language: fil

Praktikal na gabay sa pananaliksik tungkol sa lokalisadong pagbabago ng code gamit ang mga generative model: kung ano ang dapat manatiling nakapirmi, ano ang maaaring magbago, at anong ebidensiya ang kailangan bago tawaging nagpapanatili ng estruktura ang isang transpormasyon.

Nailathala Hulyo 25, 2026 Na-update Hulyo 30, 2026 [Alexey Gavrilov](https://aogavrilov.com/about/)

## Ano talaga ang suliranin

Ang pag-edit ng code ay hindi lamang pagbuo ng code gamit ang mas maikling prompt. Tumatanggap ang editor ng umiiral na artifact, nilalayong pagbabago, at di-hayag na kontrata ng pagpapanatili. Samakatuwid, may dalawang panig ang pangunahing tanong: **aling rehiyon ang maaaring magbago, at aling mga katangian ng natitirang bahagi ang dapat manatiling matatag?**

Nilalayon ng gabay na ito ang mga mambabasang may teknikal na kaalaman na nagsisimula sa pag-edit ng software na tinutulungan ng AI. Inihihiwalay nito ang intuitibong ideya ng lokal na edit sa mas matitibay na pahayag ng sintaktiko, estruktural, semantiko, at punsiyonal na pagpapanatili.

## Pangunahing ideya

Kailangan ng isang editor na may takdang saklaw ang tahasang hangganan ng pagpapanatili, hindi lamang isang layunin sa pagbuo.

### Ano ang dapat manatiling nakapirmi

Maaaring isa itong span ng teksto, grammar, lagda ng API, rehiyon ng AST, gawi sa test, kontrata ng dependency, o natutuhang magaspang na representasyon. Magkakaibang konsepto ng katatagan ang pinoprotektahan ng bawat pagpili.

### Ano ang maaaring magbago

Nangangailangan ang nae-edit na rehiyon ng sapat na kalayaan upang malutas ang hinihinging gawain. Matatag ngunit walang silbi ang metodong pangkontrol na kinokopya ang lahat; ang muling nagsusulat ng lahat ay nagbibigay ng kalayaan nang walang lokalidad.

## Isang madaling maunawaang modelo: ayusin ang isang silid, panatilihin ang gusali

Isipin ang pagsasaayos ng isang silid habang pinananatiling buo ang estrukturang nagdadala ng bigat, mga koneksiyon ng tubo, at mga katabing silid. Ang ganap na muling pagbuo ay katulad ng muling pagtatayo ng bahay mula sa pasalitang paglalarawan. Sa lokalisadong pag-edit, minamarkahan ang protektadong estruktura, nagtatakda ng hangganan sa lugar ng paggawa, isinasagawa ang pagbabago, at sinusuri ang resulta bago ito tanggapin.

**Kung saan hindi na naaangkop ang analohiya.** Ang natutuhang latent code ay hindi sertipikadong planong arkitektural. Maaaring mapataas ng pagtatakda sa isang coarse code ang nasusukat na katatagang estruktural, ngunit hindi nito ginagarantiya na hindi magbabago ang isang partikular na AST node, pag-uugali, o interface.

## Mas tumpak na pagtingin sa bahagyang muling pagbuo

Hayaang imapa ng encoder ang isang programa `x` tungo sa isang nakabalangkas na representasyon ng latent `z` . Pinipili ng mask ng pagpapanatili ang mga posisyon `L` upang panatilihing nakapirmi. Kumukuha lamang ng sample ang generator mula sa mga komplementaryong posisyon habang ipinapatupad ang `z'l = zl` para sa bawat naka-lock na posisyon. Pagkatapos, minamapa ng decoder ang nakumpletong representasyon `z'` pabalik sa source code.

Lumilikha ang mekanismong ito ng nasusuring control surface sa ibabaw ng mga token. Kailangan pa ring itatag sa empirikal na paraan ang kahulugan nito: dapat subukin ng mga mananaliksik kung ano ang pinananatili ng mga naka-lock na posisyon matapos ang decoding at kung may sapat na kalayaang natitira sa mga nae-edit na posisyon.

## Daloy ng pag-edit na may apat na yugto

1. Itakda ang hangganan Tukuyin ang mga protektadong rehiyon o katangian at ilarawan ang nilalayong pagbabago.
2. Irepresenta ang artifact Gumamit ng teksto, syntax, konteksto ng retrieval, o magagaspang at pinong natutuhang code.
3. Muling bumuo nang selektibo Magsagawa ng sampling sa mga nae-edit na posisyon lamang habang pinananatili ang mga piniling constraint.
4. Beripikahin bago tanggapin Sukatin ang lokalidad, sintaks, estruktura, gawi, at mga di-sinasadyang side effect.

## Hindi iisang gawain ang pag-edit ng code, pagkukumpuni ng programa, at constrained generation

| Pamamaraan | Pangunahing layunin | Karaniwang mekanismo ng pagpapanatili | Ano pa ang kailangang beripikahin |
| --- | --- | --- | --- |
| Buong pagbuo ng code | Bumuo ng isang kumpletong artifact | Prompt at konteksto | Lahat ng nasa labas ng hiniling na pagbabago |
| Awtomatikong pagkukumpuni ng programa | Alisin ang natukoy na depekto | Paglokalisa ng fault, mga test, template, o patch | Kawastuhan na lampas sa mga available na test at minimalidad ng patch |
| Mga modelong pang-infilling o pang-edit | Baguhin ang mga piniling rehiyon ng teksto | Nakikitang prefix, suffix, diff, o konteksto ng edit | Di-sinasadyang mga pagbabago sa estruktura at gawi |
| Decoding na nililimitahan ng gramatika | Panatilihin ang mga output sa loob ng isang pormal na wika | Mga estado ng decoding na balido sa gramatika | Kahulugan ng programa, kawastuhan ng gawain, at lokalidad |
| Hierarchical latent na kontrol | Muling buuin ang mga piniling natutuhang posisyon | Mga naka-lock na magaspang o pinong latent code | Ano ang pinananatili ng mga code na iyon matapos ang decoding |

## Paano susukatin ang lokalidad at pagpapanatili ng estruktura

## Aling control surface ang angkop sa gawain ng pag-edit?

Ang “Huwag muling isulat ang buong function” ay isang kahingian, hindi isang ganap na pamamaraan. Magsimula sa kinalabasang kailangang mahulaan, saka pumili ng control surface at katugmang ebidensiya.

| Kinakailangang garantiya | Mas angkop na control surface | Ebidensiyang dapat hingin |
| --- | --- | --- |
| Refactoring na tinutulungan ng AI at nagpapanatili ng pag-uugali | Hayaang tukuyin o imungkahi ng isang LLM ang pagbabago, at pagkatapos ay isagawa ito gamit ang mapagkakatiwalaang refactoring engine kung maaari. Tingnan ang [RefactoringMirror](https://arxiv.org/abs/2411.04444) . | Compilation, mga test, static check, at pagtukoy sa refactoring. [SWE-Refactor](https://arxiv.org/abs/2602.03712) ginagawang tahasan ang mga pagsusuring ito sa antas ng repositoryo. |
| Lokalisadong pagbabago ng code nang hindi muling isinusulat ang buong function | Muling gamitin ang mga di-nagbagong span ng source at bumuo lamang ng mga kandidatong rehiyon ng pag-edit, gaya sa [EfficientEdit](https://arxiv.org/abs/2506.02780) . | Diff sa labas ng rehiyon, tagumpay sa gawain, muling paggamit ng tinanggap na token, at kung nagdudulot ang inalis na konteksto ng mga di-napansing pagbabago sa iba pang file. |
| Constrained code generation sa software engineering | Ipatupad ang isang pormal na katangian habang nagde-decode, gaya ng sa [diffusion na nililimitahan ng gramatika](https://arxiv.org/abs/2508.10111) , o mag-checkpoint ng mga wastong prefix at magbalik lamang sa rehiyong sanhi ng problema, gaya sa [Hydra](https://arxiv.org/abs/2605.15238) . | Tagumpay sa grammar, compiler, o type checker, kasama ang mga functional test, locality, latency ng pagkukumpuni, at dami ng balidong code na muling nabuo. |
| Mapiling muling pagbuo ng Python function na may balanse ng lokalidad at dibersidad | I-lock ang mga piling magaspang o pinong latent position at sa natitira lamang kumuha ng sample. | Lokalidad ng na-decode na output, syntax, mga invariant ng estruktura, kalayaan sa pag-edit, dibersidad, at kawalang-katiyakan. Ang pag-lock sa latent lamang ay hindi garantiya ng refactoring. |
| Mahuhulaang pagbuo ng code sa ilalim ng tahasang contract sa pagpapanatili | Itakda bago ang pagbuo ang naoobserbahang mga protektadong katangian at mga pass/fail check, saka piliin ang pinakamakitid na mekanismong makapagpapatupad o makapaghahayag sa mga ito. | Sukatin ang mismong mga katangiang iyon pagkatapos ng decoding at iulat ang mga antas ng pagtanggap, pagtanggi, at pagkabigo sa mga paulit-ulit na run. Ang deterministic sampling lamang ay hindi garantiya ng pagpapanatili. |

## Mga tanong sa pananaliksik na sinasagot ng gabay na ito

Itinatakda ng maiikling sagot na ito ang mga hangganan ng mga pahayag at ebidensiyang ginagamit sa buong gabay.

1. Paano mababago ng isang generative model ang code nang hindi muling isinusulat ang buong function? Itakda bago ang pagbuo ang hangganan ng nae-edit na bahagi, panatilihin o muling gamitin ang source sa labas nito, bumuo lamang ng mga kandidatong pagbabago, at tanggihan ang mga output na nabibigo sa gawain o bumabago sa mga protektadong rehiyon. Isang eksperimental na control surface ang pag-lock sa herarkikal na latent, ngunit hindi nito ginagarantiya ang magkakaparehong span ng source. [Ihambing ang mga control surface para sa lokalisadong pag-edit](https://aogavrilov.com/fil/projects/discrete-latent-generation/#control-surface) .
2. Anong ebidensiya ang nagpapakitang lokal ang isang edit sa code sa halip na sintaktikong balido lamang? Sukatin ang diff sa labas ng hiniling na rehiyon kasabay ng tagumpay sa gawain, pagbabago sa nae-edit na rehiyon, mga structural invariant, mga test o static check, at baryabilidad sa mga paulit-ulit na run. Ang parse rate lamang ay nagpapatunay lamang ng wastong pagkakabuo ng sintaks. [Suriin ang checklist ng ebidensiya sa lokalidad](https://aogavrilov.com/fil/projects/discrete-latent-generation/#measurement) .
3. Paano dapat balansehin ang lokalidad ng pag-edit ng code at ang dibersidad ng pagbuo? Iulat ang katatagan ng protektadong rehiyon kasabay ng kalayaan sa nae-edit na rehiyon at pagiging natatangi ng mga kandidato. Maaaring palakihin nang husto ng pagkopya sa input ang katatagan nang walang anumang pagsulong sa gawain; maaaring palakihin nang husto ng walang-limitasyong muling pagsulat ang pagbabago habang sinisira ang lokalidad. [Tingnan ang saklaw na ebidensiya sa katatagan at kalayaan](https://aogavrilov.com/fil/projects/discrete-latent-generation/#evidence) .
4. Ano ang pagkakaiba ng lokalisadong pag-edit ng code, kontroladong pagbuo, at pagkukumpuni ng programa? Binibigyang-diin ng lokalisadong pag-edit kung ano ang kailangang manatiling hindi nagbabago; ipinapatupad ng kontroladong pagbuo ang isang pormal na katangian ng output, gaya ng pagiging kabilang sa isang grammar; at hinihingi ng pagkukumpuni ng programa na matugunan ng pagbabago ang detalye ng depekto o gawain. Hindi sapat ang syntax lamang upang patunayan ang semantikong equivalence, functional correctness, tagumpay sa gawain, o lokalidad. [Ihambing ang tatlong layunin](https://aogavrilov.com/fil/projects/discrete-latent-generation/#comparison) .
5. Paano muling mabubuo ang mga piling bahagi ng isang Python function habang nananatiling matatag ang iba pang bahagi? Itakda bago ang pagbuo ang mga protektado at nae-edit na rehiyon, baguhin lamang ang nae-edit na representasyon, mag-decode, at tanggihan ang mga kandidatong bumabago sa protektadong code o bumabagsak sa syntax, mga test, static check, o invariant na partikular sa gawain. Sinusukat ng iniulat na eksperimento sa herarkikal na latent ang probabilidadistikong katatagan sa mga 64-token na function; hindi nito ginagarantiya ang di-nagbagong mga span o gawi. [Suriin ang daloy ng piling muling pagbuo](https://aogavrilov.com/fil/projects/discrete-latent-generation/#workflow) .
6. Aling estratehiya ng kontrol ang angkop sa refactoring na tinutulungan ng AI at nagpapanatili ng gawi? Gamitin ang modelo upang tukuyin o imungkahi ang isang transpormasyon, saka isagawa ito gamit ang mapagkakatiwalaang refactoring engine kung posible at beripikahin ang compilation, mga test, static check, at nilalayong refactoring. Hindi sapat na ebidensiya ang isang kapani-paniwalang nabuong patch. [Buksan ang hanay ng pasiya sa refactoring](https://aogavrilov.com/fil/projects/discrete-latent-generation/#control-surface) .
7. Ano ang dahilan kung bakit mahuhulaan, at hindi lamang nakokontrol, ang pagbuo ng code? Magtakda ng naoobserbahang kontrata sa pagpapanatili at mga pagsusuri sa pagtanggap bago pumili ng generator. Nakasalalay ang predictability sa nananatiling matatag pagkatapos ng decoding at pagpapatunay, hindi lamang sa kung ipinirmi ang prompt, mask, grammar, o latent code. [Itakda ang kontrata ng pagpapanatili](https://aogavrilov.com/fil/projects/discrete-latent-generation/#core-idea) .

## Ano ang ipinakikita ng kasalukuyang eksperimento — at ano ang hindi nito ipinakikita

Sa [*Nasusuring Kontrol para sa Muling Pagbuo ng Software na Nagpapanatili ng Estruktura*](https://aogavrilov.com/fil/publications/inspectable-control/) , minamapa ng isang herarkikal na VQ-VAE ang mga Python function na may 64 token sa 16 na top-level at 32 lower-level na discrete position. Ang pag-lock sa apat na top-level code ay nagpapataas sa parse rate mula **0.453 hanggang 0.591** , samantalang nagbabago pa rin ang mga hindi naka-lock na posisyon sa antas na **0.936** at nananatili ang mga conditional sample na **0.998 natatangi** .

Ebidensiya ito ng nasukat na trade-off sa katatagan–kalayaan sa isang maliit na setting. Hindi ito garantiya ng eksaktong pagpapanatili ng AST, semantikong pagkapantay, kawastuhan ng paggana, matagumpay na pagkukumpuni, o gawi sa antas ng repository.

Ang kaakibat na pag-aaral [*Where Quality Breaks in Compressed Short-Text Generation*](https://aogavrilov.com/fil/publications/where-quality-breaks/) ay nagdaragdag ng mahalagang aral sa pagsusuri: ang mas mahusay na mga proxy sa espasyong latent ay hindi kinakailangang magpahusay sa mga na-decode na output. Dapat suriin bilang magkakahiwalay na yugto ang representasyon, pagbuo, at na-decode na pag-uugali.

Para sa pamamaraang pampasya na muling magagamit, tingnan ang kasamang gabay hinggil sa [paghihiwalay ng pagkawala sa codec sa pagkawala sa generator](https://aogavrilov.com/fil/projects/codec-bottleneck-diagnosis/) .

## Mga karaniwang maling pagkaunawa

### “Napa-parse ito, kaya tama ito.”

Wastong pagkakabuo lamang ng sintaks ang pinatutunayan ng parsing. Maaari pa ring lumabag ang programa sa mga test, contract, o layunin.

### “Ang coarse code ay isang AST node.”

Hindi, maliban kung naipakita ang tahasang alignment. Maaaring paghaluin ng mga natutuhang code ang ilang surface at structural factor.

### “Ang mga naka-lock na latent ay nangangahulugang hindi nagbago ang source text.”

Global at natutuhan ang decoding. Maaaring pataasin ng mga nakapirming posisyon ng latent ang katatagan nang hindi ginagarantiya ang magkaparehong span ng teksto.

### “Laging mas mabuti ang mas kaunting pagbabago.”

Nakakamit ng editor na kinokopya lamang ang input ang ganap na katatagan ngunit walang anumang progreso sa gawain. Dapat magkasamang sukatin ang lokalisasyon at tagumpay ng pag-edit.

## Ano ang susunod na babasahin

Gumagamit ang mga kaugnay na pag-aaral ng magkakaibang control surface; walang dapat ituring na maipagpapalit na baseline kung walang pag-aangkop sa gawain.

1. [Self-Edit: Fault-Aware Code Editor for Code Generation](https://arxiv.org/abs/2305.04087) Itinuturing ang pagbuo bilang prosesong nae-edit at ginagamit ang mga natukoy na depekto upang gabayan ang pagwawasto.
2. [Coeditor: Leveraging Contextual Changes for Multi-round Code Auto-editing](https://arxiv.org/abs/2305.18584) Minomodelo nito ang mga kontekstuwal na pagbabago sa code sa magkakasunod na yugto ng pag-edit sa halip na muling bumuo mula sa simula.
3. [PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair](https://arxiv.org/abs/2604.03113) Ginagawang tahasan ang pagpapanatili at pinakamaliit na pagbabago sa pagsasanay para sa pagkukumpuni ng programa.
4. [Constrained Decoding of Diffusion LLMs with Context-Free Grammars](https://arxiv.org/abs/2508.10111) Ipinakikita kung paano makapagbibigay ang mga pormal na constraint ng garantiya sa syntax habang isinasagawa ang diffusion decoding.
5. [Neural Discrete Representation Learning](https://arxiv.org/abs/1711.00937) Ipinakikilala ang VQ-VAE, ang saligang mekanismo para sa mga natutuhang diskretong latent representation.
6. [Simple and Effective Masked Diffusion Language Models](https://arxiv.org/abs/2406.07524) Inilalahad ang framework ng masked discrete diffusion na ginamit bilang latent generator sa kalakip na pag-aaral na diagnostiko.
7. [An Empirical Study on the Potential of LLMs in Automated Software Refactoring](https://arxiv.org/abs/2411.04444) Tinutukoy ang mga di-ligtas na refactoring na iminungkahi ng LLM at sinusuri ang muling paglalapat ng mga natukoy na transpormasyon sa pamamagitan ng mga pinagkakatiwalaang refactoring engine.
8. [SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring](https://arxiv.org/abs/2602.03712) Sinusuri ang repository-level refactoring na nagpapanatili ng gawi sa pamamagitan ng compilation, mga test, at pagtukoy ng refactoring.
9. [EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding](https://arxiv.org/abs/2506.02780) Muling ginagamit nito ang mga di-nagbagong segment ng source at hinuhulaan ang mga lokasyon ng pag-edit sa halip na ituring ang isang edit bilang ganap na autoregressive na muling pagbuo.
10. [Hydra: Efficient, Correct Code Generation via Checkpoint-and-Rollback Support](https://arxiv.org/abs/2605.15238) Gumagamit ng static checking, mga checkpoint, at tinutumbok na rollback upang maiwasang muling buuin ang balido nang mga prefix matapos ang isang error.

## Maikling pagbabalik-tanaw

Ang lokalisadong muling pagbuo ng code ay isang kasunduan sa pagitan ng **pagbabago** at **pagpapanatili** . Nagbibigay ang mga herarkikal na discrete latent ng isang nasusuring paraan upang ihayag ang kontratang iyon, ngunit kapaki-pakinabang lamang ang representasyon kapag sinusuri ang mga na-decode na programa ayon sa lokalisasyon, sintaks, estruktura, pag-uugali, dibersidad, at kawalang-katiyakan.

## Mga publikasyon sa direksiyong ito ng pananaliksik

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

Kung Saan Bumibigay ang Kalidad sa Pagbuo ng Na-compress na Maiikling Teksto: Sunod-sunod na Pagtukoy sa Bottleneck

Metodolohiya ng pagsusuri FRUCT 39 2026 Pangunahing kumperensiya

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

Nasusuring Kontrol para sa Muling Pagbuo ng Software na Nagpapanatili ng Estruktura

Pamamaraan ng kontrol sa espasyong latent FSE Companion '26 2026 Kalakip na poster
