AI Watermark Check

Por que o código gerado por IA quebra, e como corrigir a causa real

Um linter aponta erro numa linha que parece perfeita. Uma chamada de API retorna 400 num payload que bate exatamente com o schema. O bug quase nunca está na sua lógica: está entre duas letras, invisível, e chegou ali porque você colou o código de uma janela de chat.

Texto copiado de uma interface de chat de IA costuma carregar caracteres Unicode invisíveis, espaços de largura zero, junções, espaços sem quebra, resíduos de como a interface renderiza a resposta como HTML tipografado. Não são marca d’água e ninguém os colocou ali de propósito. Também são completamente invisíveis num editor comum, por isso causam erros de sintaxe, tamanhos de string corrompidos e chamadas de API que parecem impossíveis de explicar. Cole o código no verificador abaixo e cada um deles aparece.

Mais: o que foi encontrado, visão de raio-X e opções

Visão de raio-X

Seu texto com cada caractere oculto exposto como uma etiqueta. Passe o mouse para ver o nome Unicode.

O que esses caracteres realmente são

Pontos de código Unicode legítimos, não malware e não uma assinatura deliberada. Cada um tem um trabalho real, só que não dentro de um nome de variável ou de uma string SQL.

CaracterePonto de códigoO que quebra no código
Espaço de largura zeroU+200BDivide identificadores, quebra casamentos de regex
Junção de largura zeroU+200DMuda o tamanho da string sem avisar; .length mente
Junção de palavrasU+2060Corrompe tokens usados em diff ou hash
Espaço sem quebraU+00A0Parece espaço, não é; validadores de formulário e schema rejeitam

Nada disso aparece num editor comum. Esse é o problema inteiro: sua revisão de código, seu diff, seus próprios olhos, nada detecta, porque não há nada visível para detectar.

Onde isso realmente morde

Um linter falha numa linha perfeita

Geralmente um espaço de largura zero encravado num identificador, dividindo um token em dois para o parser.

Uma importação de CSV ou banco corrompe uma linha

Um caractere perdido transforma um campo numérico limpo em texto, ou empurra um valor além de um limite de tamanho que ninguém definiu de propósito.

Uma chamada de API retorna 400 sem causa visível

Validadores de JSON rigorosos não perdoam pontos de código inesperados dentro de uma string, e o corpo da requisição parece completamente normal em qualquer ferramenta que você usar para checar.

Vale ser preciso aqui: uma marca d’água estatística de verdade, do tipo que Anthropic e Google já usam em alguns modelos, funciona de um jeito totalmente diferente. Esse sinal vive nas palavras que o modelo escolheu, não em nenhum caractere que dá para selecionar. O que quebra seu código é um problema separado, bem mais mundano, e ao contrário de uma marca estatística, totalmente corrigível.

Perguntas sobre caracteres ocultos em código de IA

Esses caracteres são uma marca d’água de IA?

Não. Nenhum fornecedor importante usa caracteres invisíveis como marca d’água, seria removido por qualquer limpeza de texto, o que tornaria a técnica inútil. São resíduos tipográficos de como uma interface de chat renderiza a resposta, não um sinal deliberado.

Limpar isso muda a formatação do meu código?

Não. Tabs, quebras de linha e indentação são preservados exatamente. Só pontos de código invisíveis sem significado visual são tocados, e espaços incomuns viram um espaço comum em vez de serem apagados.

Saiba mais