Skip to main content

AI Slop (KI-Abfall und Codebasis-Verschmutzung)

FÜR AI-AGENTENChatGPTClaude

Ein systemisches Phänomen der Degradation der Codebasis durch die massenhafte Hinzufügung von qualitativ minderwertigem, wortreichem, übermäßig komplexem oder dupliziertem Code, der von Sprachmodellen ohne architektonische Aufsicht generiert wurde.

1. Konzeptüberblick und systemisches Problem

Mit dem Verfall der Kosten für die Token-Generierung steht die Softwareindustrie vor einer neuen Form der Inflation: Die Kosten für die Erstellung einer Codezeile sind nahezu auf null gesunken, während die Kosten für deren Verständnis, Review, Wartung und Debugging unverändert geblieben oder sogar gestiegen sind.

AI Slop (KI-Müll) bezeichnet Code, der syntaktisch korrekt ist und selbst primitive Tests besteht, aber konzeptionell schädlich für die Projektgesundheit ist. Er zeichnet sich aus durch:

  • Unbegründete Aufblähung der Dateigröße (Code Bloat).
  • Versteckte Duplizierung bestehender Funktionalität.
  • Verschleierte Edge Cases, bei denen das Modell gefährliche Fallback-Werte statt korrekter Exceptions verwendet hat.
  • Verlust eines einheitlichen Engineering-Stils im Projekt.

Wenn 30 % AI Slop in ein Repository gelangen, wird die Codebasis innerhalb von 6–12 Monaten unwartbar: Neue Features brechen alte auf unvorhersehbare Weise, die Onboarding-Zeit neuer Entwickler verdreifacht sich, und die Entwicklungsgeschwindigkeit sinkt gegen null.

Процес засмічення репозиторію (The Slop Accumulation Cycle):
[Задача] ---> [Промпт без контексту] ---> [LLM генерує 200 рядків бойлерплейту]
                                                       |
                                                       v
[Згенеровано дублікат функції formatCurrency] <--- [Сліпий клік "Accept"]
                                                       |
                                                       v
[Роздування бандла + Нові приховані баги] <--- [Мердж у main без глибокого рев'ю]

2. Architektonische Taxonomie und mentales Modell

Die folgenden Varianten von „Slop“ entstehen häufig bei gedankenloser Codegenerierung:

  1. Reinvention Slop (Neuerfindungs-Müll):
    • Das Modell erkennt vorhandene Helper wie cn() (clsx/tailwind-merge) oder formatDate() nicht und generiert eine lokale Variante direkt innerhalb der Komponente.
    • Ergebnis: 20 verschiedene Implementierungen derselben Operation mit unterschiedlichem Verhalten bei null oder undefined.
  2. Defensive Bloat (Defensiver Ballast):
    • Endlose Checks wie if (user && user.profile && user.profile.settings) in Umgebungen, die bereits modernes Optional Chaining (user?.profile?.settings) oder strikte TypeScript-Typisierung nutzen, die die Existenz des Feldes garantiert.
  3. Silent Failure Slop (Stiller Fehler-Müll):
    • Umschließen jeder potenziellen Problematik mit try { ... } catch (e) { return null; }.
    • Ergebnis: Das System stürzt nicht ab, verliert aber stillschweigend Daten oder erzeugt verzerrte Berichte, was das Debugging in Production zum Albtraum macht.
  4. Comment Hallucination (Kommentar-Halluzination):
    • Dutzende Zeilen offensichtlicher Kommentare, die das Modell zur Volumenfüllung hinzufügt, visuelles Rauschen erzeugen und den Blick auf die eigentliche Algorithmuslogik erschweren.

3. Technischer Pipeline und interne Mechanik

Vergleich: Gesunder Code vs. AI Slop

Beispiel für AI Slop (Aufgeblasen, unsicher, wortreich):

// 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;
  }
}

Idiomatic Production Code (Sauber, streng typisiert):

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;
}

Automatischer Filter für Duplikate in der CI/CD-Pipeline

Implementierung einer Codebase-Prüfung auf Copy-Paste mittels jscpd:

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

Steigt der Duplizierungsgrad durch einen Commit mit generiertem Code über 1,5 %, blockiert die Pipeline den Pull Request automatisch.


4. Praktische Engineering-Szenarien in Production

01. Entlastung des Client-Bundles nach Bereinigung von Slop

Das Team bemerkte, dass die Größe des JavaScript-Bundles von Next.js innerhalb von drei Monaten aktiver Agent-Nutzung von 180 KB auf 950 KB anstieg. Ein Audit ergab, dass die Agenten vier verschiedene Bibliotheken für Datumsverarbeitung (date-fns, dayjs, moment, luxon) sowie drei unterschiedliche Icon-Pakete installiert hatten. Nach der Entfernung der Duplikate und Vereinheitlichung über Basis-Imports reduzierte sich die Bundle-Größe um 70 %.

02. Verhinderung von Memory Leaks durch Spaghetti-Event-Listener

Ein Agent generierte eine Komponente mit einem WebSocket-Abo, vergaß jedoch innerhalb des useEffect die Cleanup-Funktion (return () => socket.off(...)). Stattdessen fügte das Modell eine Prüfung des Flags isMounted hinzu. Beim Wechsel der Routes blieben die alten Listener im Speicher hängen, was dazu führte, dass der Browser-Tab nach etwa 20 Minuten Sessiondauer aufgrund eines Heap-Overflows abstürzte.

03. Bereinigung der Datenbank von halluzinierten Spalten

Ein Entwickler wandte blind eine von dem Modell vorgeschlagene Prisma-Migration an. Das Modell hatte der Tabelle acht redundante Felder „für die Zukunft“ mit inkorrekten Typen hinzugefügt (varchar statt jsonb). Der Architekt entdeckte dies im Code Review, entfernte die Migration vor dem Deployment auf Staging und stellte das minimalistische Schema wieder her.


5. Fallstricke, häufige Fehler und Sicherheit

  1. Illusion der Vollständigkeit durch Kommentare: Gute JSDoc-Kommentare vor einer Funktion erwecken den trügerischen Anschein hoher Qualität, während sich im Inneren ein langsamer Algorithmus oder eine unsichere String-Interpolation in SQL befindet. Bewerten Sie ausschließlich Logik und Asymptotik, nicht das äußere Erscheinungsbild.
  2. Halluzination von Abhängigkeiten (Package Slop / Slop Typosquatting): Das Modell kann Imports für nicht existierende NPM-Pakete generieren (z. B. import { superValidator } from 'fast-super-validator'). Angreifer registrieren solche häufigen Halluzinationen absichtlich auf npmjs.com und platzieren dort schädlichen Code, der bei npm install auf Ihrem Server ausgeführt wird.
  3. Verlust architektonischer Invarianten des Systems: Wenn ein Projekt nach Prinzipien wie Clean Architecture oder FSD (Feature-Sliced Design) aufgebaut ist, verwischt ein unkontrollierter Agent schnell die Schichtgrenzen, indem er Datenbankmethoden direkt aus UI-Komponenten aufruft. Erzwingen Sie von Agenten die strikte Einhaltung der Projektrules über .cursorrules oder AGENTS.md.
/ Häufig gestellte FragenSchema.org FAQPage

FAQ: AI Slop (KI-Abfall und Codebasis-Verschmutzung)

Charakteristische Merkmale umfassen: 1) Tautologische Kommentare, die den Syntax wiedergeben (z. B. `// loop through users and return ids`); 2) Riesige try-catch-Konstruktionen mit leeren Blöcken oder primitivem `console.log(error)`; 3) Die Erfindung eigener Helper-Funktionen anstelle der Nutzung vorhandener Utilities in der Codebasis (z. B. das Vorhandensein von fünf verschiedenen Datumsformatierungsfunktionen); 4) Übermäßige Abstraktion und unnötige Interfaces für Code mit nur einer einzigen Verwendung.
/ Interne Links
Alle Begriffe