Skip to main content

AI Slop (ШІ-шлак та засмічення кодової бази)

PARA AGENTES DE IAChatGPTClaude

Системний феномен деградації кодової бази внаслідок масового додавання низькоякісного, багатослівного, надлишково ускладненого або дубльованого коду, згенерованого мовними моделями без архітектурного нагляду.

1. Visão Geral do Conceito e Problema Sistêmico

Com a redução do custo de geração de tokens, a indústria de desenvolvimento enfrentou uma nova forma de inflação: o custo de criar uma linha de código caiu quase a zero, enquanto o custo de compreendê-la, revisá-la, mantê-la e depurá-la permaneceu inalterado ou até aumentou.

AI Slop (Lixo Gerado por IA) é um código sintaticamente correto que passa em testes primitivos, mas é conceitualmente nocivo à saúde do projeto. Ele se caracteriza por:

  • Inchaço injustificado no tamanho dos arquivos (Code Bloat).
  • Duplicação oculta de funcionalidades existentes.
  • Edge Cases mascarados, onde o modelo "suavizou" casos extremos com valores de fallback perigosos em vez de lançar exceções corretas.
  • Perda da consistência do estilo de engenharia do projeto.

Se 30% de AI Slop entrar no repositório, a base de código torna-se insustentável em 6–12 meses: novas features quebram as antigas de maneira imprevisível, o tempo de onboarding de novos desenvolvedores triplica e a velocidade de desenvolvimento cai para zero.

O Ciclo de Acúmulo de Slop (Slop Accumulation Cycle):
[Tarefa] ---> [Prompt sem contexto] ---> [LLM gera 200 linhas de boilerplate]
                                                       |
                                                       v
[Função duplicada formatCurrency gerada] <--- [Clique cego em "Aceitar"]
                                                       |
                                                       v
[Aumento do tamanho do bundle + Novos bugs ocultos] <--- [Merge na main sem revisão profunda]

2. Taxonomia Arquitetural e Modelo Mental

As variantes de lixo geradas durante a codegen sem reflexão crítica:

  1. Slop de Reinvenção (Reinvention Slop):
    • O modelo não enxerga helpers existentes como cn() (clsx/tailwind-merge) ou formatDate() e gera suas próprias implementações locais dentro do componente.
    • Resultado: 20 implementações diferentes da mesma operação, com comportamentos divergentes para null ou undefined.
  2. Slop de Programação Defensiva Excessiva (Defensive Bloat):
    • Verificações infinitas do tipo if (user && user.profile && user.profile.settings) em ambientes que já utilizam Optional Chaining (user?.profile?.settings) ou tipagem estrita do TypeScript, que garante a existência do campo.
  3. Slop de Ocultação de Erros (Silent Failure Slop):
    • Envolver qualquer problema potencial em try { ... } catch (e) { return null; }.
    • Resultado: o sistema não falha visivelmente, mas perde dados silenciosamente ou gera relatórios distorcidos, transformando a depuração em produção em um pesadelo.
  4. Slop de Comentários (Comment Hallucination):
    • Dezenas de linhas de comentários óbvios adicionados pelo modelo apenas para dar volume, criando ruído visual e dificultando a compreensão da essência do algoritmo.

3. Pipeline Técnico e Mecânica Interna

Comparação: Código Saudável vs. AI Slop

Exemplo de AI Slop (Inflado, inseguro, verboso):

// Function to calculate user discount based on type
export function calculateDiscount(user: any): number {
  // Check if user is not null and not undefined
  if (user !== null && user !== undefined) {
    // Check if user role exists
    if (user.role) {
      if (user.role === 'VIP') {
        return 0.20; // 20 percent discount
      } else if (user.role === 'PREMIUM') {
        return 0.15; // 15 percent discount
      } else {
        return 0.05; // standard discount
      }
    } else {
      return 0;
    }
  } else {
    // Return zero if user does not exist
    return 0;
  }
}

Código de Produção Idiomático (Limpo, fortemente tipado):

export type UserRole = "VIP" | "PREMIUM" | "STANDARD";

const ROLE_DISCOUNTS: Record<UserRole, number> = {
  VIP: 0.20,
  PREMIUM: 0.15,
  STANDARD: 0.05,
} as const;

export function getDiscount(role?: UserRole): number {
  return role ? ROLE_DISCOUNTS[role] ?? 0 : 0;
}

Filtro Automático de Rejeição de Duplicatas no CI/CD

Implementação de verificação de cópia-e-cola na base de código usando jscpd:

// .jscpd.json
{
  "threshold": 1.5,
  "reporters": ["console", "json"],
  "ignore": ["**/node_modules/**", "**/dist/**", "**/*.d.ts"],
  "absolute": true,
  "minTokens": 35,
  "minLines": 5
}

Se um commit de código gerado aumentar a porcentagem de duplicação acima de 1,5%, o pipeline bloqueia automaticamente o PR.


4. Cenários Práticos de Engenharia em Produção

01. Redução do Bundle Client-side após Limpeza de Lixo

A equipe notou que o tamanho do JavaScript bundle do Next.js cresceu de 180 KB para 950 KB em 3 meses de uso intenso de agentes. A auditoria revelou que os agentes instalaram 4 bibliotecas diferentes para manipulação de datas (date-fns, dayjs, moment, luxon) e 3 pacotes distintos de ícones. Após a remoção das duplicatas e unificação via import base, o bundle foi reduzido em 70%.

02. Prevenção de Memory Leak devido a Listeners de Eventos Espaguete

Um agente gerou um componente com assinatura WebSocket, mas esqueceu a função de limpeza dentro do useEffect (return () => socket.off(...)). Em vez disso, o modelo adicionou uma verificação de flag isMounted. Ao alternar rotas, os listeners antigos continuavam retidos na memória, levando ao crash da aba do navegador por estouro de heap após 20 minutos de sessão.

03. Limpeza do Banco de Dados de Colunas Alucinadas

Um desenvolvedor aplicou cegamente uma migração Prisma sugerida pelo modelo. O modelo adicionou 8 campos redundantes "para o futuro" à tabela, com tipos incorretos (varchar em vez de jsonb). O arquiteto detectou isso durante o code review, removeu a migração antes do deploy no staging e restaurou o esquema minimalista.


5. Armadilhas, Erros Comuns e Segurança

  1. Ilusão de Completude via Comentários: A presença de bons comentários JSDoc antes de uma função cria uma falsa impressão de alta qualidade, enquanto o interior contém um algoritmo lento ou interpolação insegura de strings em SQL. Avalie apenas a lógica e a complexidade assintótica, não a aparência externa.
  2. Alucinação de Dependências (Package Slop / Slop Typosquatting): O modelo pode gerar imports de pacotes NPM inexistentes (ex.: import { superValidator } from 'fast-super-validator'). Atacantes registram intencionalmente essas alucinações comuns no npmjs.com e publicam código malicioso que é executado durante o npm install no seu servidor.
  3. Perda de Invariantes Arquiteturais do Sistema: Se o projeto segue princípios de Clean Architecture ou FSD (Feature-Sliced Design), um agente descontrolado rapidamente dilui as fronteiras entre camadas, chamando métodos de banco de dados diretamente de componentes UI. Exija dos agentes o cumprimento rigoroso das regras do projeto através de .cursorrules ou AGENTS.md.
/ Perguntas FrequentesSchema.org FAQPage

FAQ: AI Slop (ШІ-шлак та засмічення кодової бази)

Характерні маркери включають: 1) Тавтологічні коментарі, що переказують синтаксис (наприклад, `// loop through users and return ids`); 2) Гігантські конструкції try-catch з порожніми блоками або примітивним `console.log(error)`; 3) Винахід власних хелперів замість використання наявних у кодовій базі утиліт (наявність 5 різних функцій форматування дат); 4) Надмірна абстракція та непотрібні інтерфейси для коду з одним використанням.
/ Links internos
Todos os termos