Gerade macht ein Thread die Runde, in dem sich jemand darüber aufregt, dass sein KI-Assistent „ständig zufällige Imports in meinen Code einfügt, die es gar nicht gibt“. Das Beste sind die Antworten. Der Coding-Agent einer Person erfand ein Modul, wurde darauf hingewiesen und entgegnete dann, das Modul existiere sehr wohl. Jemand anderes fand ein mysteriöses Paket namens so etwas wie TrjnHrs.Pkg, das still und leise dem Projekt hinzugefügt worden war. Wieder jemand anderes erkannte, dass ein nicht existierendes Modul der Grund war, warum der von einer KI umgeschriebene Dienst eines Kollegen einen ganzen Tag lang unbemerkt kaputt war.
Wir haben gelacht. Dann haben wir aufgehört zu lachen, denn das hatte auch uns in den Wahnsinn getrieben.
Warum Modelle Imports erfinden
Große Sprachmodelle sind Mustererkenner, keine Compiler. Wenn ein Modell import gefolgt von einem plausiblen Namen schreibt, prüft es nicht, ob dieses Paket existiert. Es sagt voraus, was ein selbstbewusster Programmierer als Nächstes wohl tippen würde. Meistens trifft die Vorhersage zu. Manchmal greift es voller Überzeugung nach requests_async, react-use-debounce-hook oder irgendeinem ordentlich klingenden Hilfsmittel, das nie jemand veröffentlicht hat.
Das Modell hat keine gesicherte Wahrheit. Es hat ein Bauchgefühl. Und Bauchgefühl ist sehr gut darin, Namen zu erzeugen, die genau wie echte Pakete aussehen.
Der Teil, der Ihnen wirklich Angst machen sollte
Ein halluzinierter Import ist nicht nur ein kaputter Build. Er ist eine Angriffsfläche.
Forscher haben inzwischen einen Namen dafür: Slopsquatting. Angreifer beobachten, welche falschen Paketnamen KI-Tools gern halluzinieren, und registrieren diese Namen dann in den öffentlichen Registries, mit Malware darin. Ihr Assistent erfindet trjnhrs-pkg. Jemand hat trjnhrs-pkg bereits veröffentlicht. Ihr Installationsbefehl löst sauber auf. Und schon führen Sie fremden Code aus. Den Import, den es gestern „nicht gab“, gibt es heute, mit Absicht, und er ist feindselig.
Das ist der wirklich gefährliche Fehlermodus. Einen Tippfehler bemerken Sie in fünf Sekunden. Ein plausibler Paketname, der still und leise auf die Payload von jemandem auflöst, ist die Art von Sache, die Sie erst bemerken, wenn sie schon in Produktion ist.
Warum „sag ihr einfach, sie soll es lassen“ nicht funktioniert
Der Thread ist voll der üblichen Ratschläge. Schreiben Sie bessere Prompts. Sagen Sie ihr, sie soll keine Fehler machen. Stellen Sie Warnungen auf Fehler. Holen Sie sich einen Checker.
Die ersten beiden sind Wunschdenken. Sie können ein probabilistisches System nicht per Prompt dazu bringen, über Fakten, die es nicht hat, deterministisch zu sein. Die letzten beiden kommen näher, aber ein generischer Linter meldet das Symptom (einen nicht aufgelösten Import), ohne die Ursache zu verstehen. Wurde die Abhängigkeit einfach nie zum Manifest hinzugefügt? Ist es ein internes Modul, das der Linter nicht sieht? Oder gibt es dieses Paket wirklich nirgendwo auf der Welt? Diese drei Fälle sehen für einen dummen Checker identisch aus und brauchen völlig unterschiedliche Antworten. (Es ist derselbe Grund, warum Sie beim Selbstdurchsehen die plausibel aussehenden Fehler einer KI nicht erwischen: Was den Code geschrieben hat, darf nicht das Einzige sein, das ihn prüft.)
Genau diese Lücke soll Surmado Code Review schließen.
Wie wir es wirklich fangen: deterministische Prüfungen plus Urteilsvermögen
Die Lösung ist kein klügeres Modell. Sie besteht darin, dem Modell die Tatsachenfrage gar nicht erst zu stellen.
Das Wissen übernehmen deterministische Prüfungen. Bei jedem Pull Request löst Surmado Code Review jeden Import im Diff gegen die gesicherte Wahrheit auf: Ihre Lockfile, Ihr Manifest, Ihre installierten Module, die Standardbibliothek, Ihre internen Pakete. Dieser Schritt rät nicht. Ein Paket löst auf oder eben nicht. Wenn super-fast-parser im Diff auftaucht und zu nichts in Ihrem Abhängigkeitsgraphen und zu nichts in der Registry auflöst, ist das eine Tatsache, keine Meinung. Hier ist keine Halluzination möglich, weil nichts generiert wird. Es ist ein Nachschlagen.
Das Urteilen übernimmt Scout. Sobald die Fakten vorliegen, tut das Modell, worin Modelle wirklich gut sind: einordnen und erklären. Es unterscheidet zwischen „Sie haben vergessen, das zu package.json hinzuzufügen“ und „dieses Modul existiert nicht, und das nächste echte heißt anders“. Es entfernt Dubletten. Es weist Sie auf den Import hin, den Sie mit ziemlicher Sicherheit gemeint haben. Und es eskaliert den beängstigenden Fall: Dieser Name löst auf ein Paket auf, das vor drei Tagen veröffentlicht wurde und auf das nichts sonst in Ihrem Ökosystem verweist. Das ist der Geruch von Slopsquatting, und genau dieses Urteil kann ein einfacher Linter nicht fällen.
Keine der beiden Hälften funktioniert allein. Deterministische Prüfungen ohne Urteilsvermögen sind laut und können sich nicht erklären. Ein Modell ohne deterministische Verankerung ist nur noch etwas, das Imports halluziniert und jetzt Ihre halluzinierten Imports prüft. Zusammen ergeben sie, was alle in diesem Thread eigentlich wollten: Gewissheit darüber, was echt ist, plus das Urteil darüber, was zu tun ist.
Wo es läuft
Surmado Code Review kommentiert Ihre Pull Requests. Es prüft den Diff gegen die STANDARDS.MD Ihres Teams und markiert erfundene Imports, bevor sie gemergt werden, nicht erst, nachdem sie still den Branch eines Kollegen zerschossen oder ein Paket hereingezogen haben, das niemand geprüft hat. Ein Kommentar pro PR, an Ihren Regeln verankert, an Ort und Stelle aktualisiert, sobald Sie einen Fix pushen. Es ist die Schicht zwischen „die KI hat es geschrieben“ und „es ist in main“.
Kostenlos ausprobieren
Wir haben das gebaut, weil uns das Problem der Imports, die es nicht gibt, Zeit gekostet hat, und weil uns die Lieferketten-Variante davon ernsthaft Angst gemacht hat. Wir setzen es in unseren eigenen Repositories ein; so haben wir es gebaut. Deshalb sperren wir es nicht hinter eine Mauer.
Surmado Code Review ist für 10 PRs pro Monat kostenlos. Verbinden Sie es mit einem GitHub-Repository, schreiben Sie eine STANDARDS.MD (Scout hilft Ihnen, sie aus einem Gespräch heraus zu entwerfen, so als würden Sie einem neuen Teammitglied Ihren Code erklären), und es beginnt schon beim nächsten PR, halluzinierte Imports zu fangen. Darüber hinaus sind es 15 $ pro Monat für 100 PRs. Kein Preis pro Platz. Null Datenspeicherung.
Ihre KI wird weiterhin Imports erfinden. Sie müssen sie nicht weiter mergen.
Surmado Code Review kostenlos ausprobieren
Weiterführende Artikel: