41 Punkte von GN⁺ 2025-01-06 | 3 Kommentare | Auf WhatsApp teilen
  • „Ein verwirrendes Experiment, das meine Denkweise über KI-gestützte Codeanalyse verändert hat“
  • Es wurde beobachtet, dass bestehende KI bei der Analyse von React-Codebasen häufig scheitert
  • Die Ursache lag offenbar darin, dass sie nur zeilenweise analysiert – ähnlich wie Junior-Entwickler, die Code zum ersten Mal lesen

Der Unterschied zwischen Bootcamp-Zeit und Senior-Mindset

  • Als Junior liest man Dateien der Reihe nach, Zeile für Zeile, und verliert dabei oft schnell den Überblick
  • Senior-Entwickler gehen bei großen PRs eher so vor
    • Sie prüfen zuerst die zentralen Dateien
    • Sie erfassen Änderungen gebündelt nach Funktionalität
    • Sie verstehen zuerst die Gesamtarchitektur und betrachten danach die Details der Implementierung
  • Es wurde beschlossen, diesen Ansatz auf KI anzuwenden

Das Experiment

  • Es wurde ein Ansatz ausprobiert, bei dem Dateien nach Funktionalität gruppiert und der KI zuerst Kontextinformationen zu diesen Gruppen gegeben werden
  • Im Beispielcode wird ein FileGroup-Interface definiert, und Dateien werden nach zugehöriger Funktion sowie Dateigröße gebündelt verarbeitet
  • Für jede Gruppe wird ein Prompt aufgebaut, der der KI Hinweise gibt wie „Welcher Funktionsbereich ist das?“ und „Worauf sollte besonders geachtet werden?“

Der Moment der überraschenden Veränderung

  • Zuvor antwortete die KI nur schlicht mit Aussagen wie „Enthält JWT-Token-Authentifizierungslogik“
  • Danach lieferte sie Einsichten auf Senior-Niveau, etwa zu „Auswirkungen auf WebSocket-Verbindungen“ oder zur „Möglichkeit von Race Conditions in kürzlich zusammengeführten PRs“
  • Die KI begann, auf Probleme unter Berücksichtigung des Gesamtkontexts des Systems hinzuweisen

Was sich tatsächlich verändert hat

  • Entscheidend war nicht der Einsatz komplexerer Machine-Learning-Modelle, sondern dass der KI die Denk-Reihenfolge eines Senior-Entwicklers gegeben wurde
    1. Kontext zuerst: Zunächst wird das Gesamtsystem verstanden
    2. Pattern Matching: Ähnliche Dateien werden gruppiert, um wiederkehrende Logik zu finden
    3. Impact-Analyse: Die Auswirkungen von Änderungen auf das gesamte System werden erkannt
    4. Historienverständnis: Auch Gründe und Kontext früherer Codeänderungen werden nachverfolgt

Unerwartete Nebeneffekte

  • Statt nur die gewünschten Stellen zu korrigieren, wurden auch folgende Einsichten erkannt
    • Identifikation doppelter Codeblöcke durch Copy-and-Paste
    • Warnungen bei inkonsistenten Error-Handling-Mustern
    • Erkennung potenzieller Performance-Bottlenecks
    • Vorschläge zur Verbesserung der Architektur auf Basis von Nutzungsmustern

Warum das wichtig ist

  • Aktuelle KI-basierte IDEs konzentrieren sich stark auf das automatische Generieren von Code
  • Doch bloße Vorschläge ohne Kontext des Gesamtsystems können so riskant sein wie ein „Junior-Entwickler, der gerade erst ins Team gekommen ist“
  • Wirklich entscheidend ist ein „tiefes Verständnis des Codes“

Offene Fragen

  • Wie entschieden werden soll, wann Kontext (historische Informationen) aktualisiert und wann er beibehalten wird
  • Wie reagiert werden soll, wenn widersprüchliche Muster gefunden werden
  • Wie Analyseergebnisse mit hoher Unsicherheit den Nutzern angezeigt werden sollen

Die weitere Richtung

  • Es wird darüber nachgedacht, ob sich der KI auch folgende Fähigkeiten eines Senior-Entwicklers vermitteln lassen
    • Die Fähigkeit, Technical Debt frühzeitig zu erkennen
    • Die Kompetenz, proaktiv Architekturverbesserungen vorzuschlagen
    • Die Fähigkeit, Sicherheitsprobleme aus Nutzungsmustern zu erkennen
    • Das Gespür für informelle Regeln innerhalb des Teams
  • Das letztliche Ziel ist nicht, einfach „mehr Code“ zu erzeugen, sondern „der KI beizubringen, den gesamten Code wie ein Senior-Entwickler tiefgehend zu verstehen“

3 Kommentare

 
savvykang 2025-01-06

Sind Fragen zur Analyse und Verbesserung einer Codebasis nicht ohnehin weitgehend standardisiert? Der Autor wirkt ziemlich aufgedreht.

 
yangeok 2025-01-06

Das wirkt so, als würde in Cursor ähnlich wie in Notepad eine Erklärung zum gesamten Projekt gegeben.

 
GN⁺ 2025-01-06
Hacker-News-Kommentare
  • In den Kommentaren sind die Leute kritisch. Dieser Beitrag behandelt kurze, positive Ergebnisse zu den Möglichkeiten eines neuen Tools und enthält ehrliche und vernünftige Gedanken.

    • Die Erzählung „Senior vs. Junior Developer“ ist vielleicht etwas übertrieben, aber der Kern des Beitrags ist hervorragend.
    • Ich frage mich, ob die Leute verärgert sind, weil sie sich bedroht fühlen.
  • Ein weiteres Beispiel dafür, dass LLMs Erstaunliches leisten. Allerdings ist es sehr schwierig, ein System zu bauen, das für alle Eingaben konsistent und präzise funktioniert.

    • Es gibt ein Beispiel zur Analyse von Dateien eines Authentifizierungssystems.
    • Dieser hartkodierte String spielt eine wichtige Rolle, ist aber nichts Besonderes, solange er nicht für alle PRs präzise und konsistent erzeugt wird.
    • Man sollte eine Evaluierung über verschiedene Codebases und echte PRs hinweg aufsetzen.
  • Daraus lassen sich Lehren für bessere Agentensysteme beim Schreiben von Code ziehen.

    • Claude/chatGPT usw. wird gesagt, dass sie keinen Code generieren sollen. Sie sollen erst die anfängliche Struktur erzeugen und dann den Code schreiben.
  • Als ich die erste Zeile des Beitrags gelesen habe, fühlte ich mich wie ein Außerirdischer. Ich müsste den ganzen Beitrag lesen, aber bestehenden Code sequentiell zu lesen, wirkt seltsam.

    • Es gibt viele falsche Vorstellungen über „Junior Developer“.
  • Die Bedeutung des menschlichen Faktors wird betont. Ohne ein kontextuelles Verständnis der Codebase lässt sich die Bedeutung von AI-Warnungen nicht erkennen.

    • Es ist schwer zu verstehen, was „geteilte Muster“ sind und warum sie Race Conditions verursachen.
    • Der Zusammenhang zwischen Authentifizierungsänderungen und dem PR zur „Retry-Logik“ ist nicht klar.
  • Es ist schwer zu verhindern, dass AI APIs erfindet, die es nicht gibt. Wenn es gut funktioniert, ist es großartig, aber meistens funktioniert es nicht gut.

    • AI funktioniert besonders dann gut, wenn Menschen Code schreiben, der bereits von vielen anderen geschrieben wurde.
  • Code-Kontext und Verständnis sind wichtig, um die Qualität von von LLMs erzeugtem Code zu verbessern.

    • Das Produkt von Bismuth unterteilt Projekte je nach Benutzeranfrage in logische Bereiche und durchsucht Symbolinformationen, um die Codebase zu navigieren.
    • Nur einige Konkurrenzprodukte bieten ein ähnliches Suchniveau.
  • Wie bei John McCarthys Beschwerde ist das eher eine Anekdote als ein Experiment oder Beweis.

    • Hoffentlich nutzt die Community kritisches Denken und Training.
  • Die Ergebnisse sind beeindruckend. Es gibt Kritik an Stil und Einheitlichkeit, aber das Ergebnis wirkt nützlich.

    • Beim Titel dachte ich, es ginge darum, dass AI die Arbeit anderer ignoriert und nur die eigene hervorhebt.
  • Es scheint, als fehle im Beitrag ein wichtiger Teil dieser Technologie. Es gibt keine Implementierung von getFileContext() und shouldStartNewGroup().