NOTA DE PESQUISA
Modificação localizada de código com modelos generativos
Como evitar a reescrita desnecessária de toda a função e, ao mesmo tempo, preservar liberdade suficiente para que um modelo generativo realize a alteração de código solicitada.
RESPOSTA DIRETA
Como um modelo generativo pode modificar código sem reescrever toda a função?
Defina as regiões protegidas e editáveis antes da geração, reutilize ou restrinja a representação protegida, gere apenas alterações candidatas e rejeite resultados que modifiquem o código protegido ou não passem nas verificações específicas da tarefa. A localidade e o êxito na tarefa devem ser medidos em conjunto.
Por que a distinção é importante
O método e a garantia alegada precisam compartilhar o mesmo limite observável.
A modificação localizada de código é um problema de edição, e não apenas um prompt mais curto para geração de código. A entrada já contém um artefato que merece ser preservado; por isso, o método requer uma fronteira de preservação explícita entre a região que pode ser alterada e as propriedades que devem permanecer estáveis.
O limite pode ser um trecho do código-fonte, um nó sintático, uma assinatura de API, o comportamento de um teste, um contrato de dependência ou uma posição latente aprendida. Essas escolhas não são intercambiáveis: cada uma protege uma propriedade observável distinta e requer uma etapa de verificação correspondente.
Um procedimento prático
Definir o contrato de preservação
Identifique a região editável e o texto, a estrutura, a interface ou o comportamento exatos que devem permanecer inalterados.
Escolha a interface de controle útil mais restrita
Reutilize trechos inalterados do código-fonte, empregue preenchimento ou decodificação orientada à edição, aplique restrições formais ou bloqueie posições latentes selecionadas de acordo com a propriedade exigida.
Gere apenas onde a alteração é permitida
Mantenha liberdade suficiente na região editável para resolver a tarefa; copiar toda a entrada é uma operação local, mas não produz avanço algum.
Verifique conjuntamente a localidade e o êxito
Rejeitar candidatos que alterem regiões protegidas, falhem na análise sintática ou na compilação, violem invariantes estruturais ou não atendam à alteração solicitada.
Evidências necessárias
Uma afirmação é tão sólida quanto a propriedade medida após a geração ou a decodificação.
- Diferenças fora da região ou outra medida direta da estabilidade da região protegida.
- Êxito da tarefa na região editável.
- Análise sintática, compilação, testes, verificações estáticas ou invariantes específicas da tarefa, conforme aplicável.
- Taxa de alteração da região editável, para que a cópia não seja confundida com controle.
- Unicidade dos candidatos e variabilidade entre execuções repetidas, para que a localidade não seja confundida com colapso de modos.
O que o estudo vinculado relata
- O experimento associado comprime funções Python de 64 tokens em posições discretas hierárquicas e regenera posições latentes selecionadas sob restrições parciais.
- O bloqueio de quatro códigos de nível superior elevou a taxa de análise sintática de 0.453 para 0.591, enquanto as posições desbloqueadas foram alteradas à taxa de 0.936 e 0.998 das amostras condicionais permaneceram únicas.
- Essas medições revelam um compromisso entre estabilidade e liberdade acima do nível dos tokens; não comprovam a preservação exata de trechos do código-fonte, da AST, da semântica ou do comportamento.
Ler a visão geral da publicação Pesquisar no texto integral do artigo
Limite do escopo
- Um código latente bloqueado não é automaticamente um nó da AST, um trecho protegido do código-fonte ou um invariante formal.
- A taxa de análise sintática estabelece a boa formação sintática, não a correção funcional nem o êxito do reparo.
- As evidências apresentadas provêm de funções Python curtas e pré-processadas e não estabelecem o comportamento na escala de repositórios.
Fontes primárias e trabalhos relacionados
Consulte os artigos vinculados para conhecer os métodos originais, as medições e as limitações declaradas.
- Inspectable Control for Structure-Preserving Software Regeneration
Artigo principal e experimento delimitado com variáveis latentes hierárquicas.
- EfficientEdit: Accelerating Code Editing via Edit-Oriented Speculative Decoding
Decodificação orientada à edição que reutiliza regiões inalteradas do código-fonte.
- PAFT: Preservation Aware Fine-Tuning for Minimal-Edit Program Repair
Torna explícitas a preservação e a alteração mínima no treinamento para reparo de programas.