3 Punkte von GN⁺ 5 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Das Ergebnis eines zweitägigen Experiments legt nahe, Claude Fable 5 treffend als "relentlessly proactive" zu bezeichnen
  • Allein mit Screenshots und einem Ein-Zeilen-Prompt verfolgte es die Ursache eines CSS-Bugs, indem es einen lokalen Entwicklungsserver startete, echte Browser bediente und Messcode einfügte
  • Fable wechselte zwischen Playwright, Firefox, WebKit und Safari, um den Bug zu reproduzieren, und richtete nach Fehlschlägen selbst eine Screenshot-Automatisierung für echte Browserfenster ein
  • Um den per /-Taste geöffneten modalen Dialog zu testen, fügte es JavaScript in ein Datasette-Template ein und erzeugte nach dem Laden des Fensters per Keyboard-Event den benötigten Zustand
  • Um Messwerte innerhalb der Seite zu erhalten, baute es einen CORS-Sammelserver auf Basis von Python http.server und speicherte <textarea>-Informationen aus dem Shadow DOM einer Web Component als JSON
  • Leistungsfähige Coding-Agenten können im Terminal alles tun, was auch ein Nutzer tun könnte; Ausführung außerhalb einer Sandbox erhöht daher das Risiko von Prompt-Injection und Datenabfluss

Der Debugging-Prozess von Claude Fable 5

  • Es begann mit der Untersuchung einer unnötigen horizontalen Scrollbar im Chat-Prompt des Sprungmenüs von Datasette Agent
  • Claude Fable 5 setzte zur Zielerreichung aktiv eine Vielzahl von Techniken ein
  • Als Eingabe dienten ein Screenshot und der Ein-Zeilen-Prompt Look at dependencies to help figure out why there is a horizontal scrollbar here
  • Da vermutet wurde, dass die Ursache in Abhängigkeiten von Datasette Agent, insbesondere in Datasette selbst, liegen könnte, wurde zunächst die Abhängigkeitsbasis untersucht
  • Claude Code öffnete ohne explizite Anweisung zur Browser-Automatisierung ein normales Firefox-Fenster und navigierte zu dem Dialog; danach öffnete es auch ein Safari-Fenster und setzte die Untersuchung fort

Browser-Screenshot-Automatisierung

  • Fable baute mit uv run --with pyobjc-framework-Quartz einen eigenen Weg zum Aufnehmen von Browserfenster-Screenshots
  • Mit Python durchlief es alle Fenster der Maschine und filterte Safari-Fenster, deren Fensternamen erwartete Zeichenfolgen wie "textarea" enthielten
  • Nachdem es einen ganzzahligen Bezeichner für ein Fenster wie 153551 gefunden hatte, speicherte es per screencapture-CLI ein PNG
  • Es schrieb temporäre HTML-Seiten wie /tmp/textarea-scrollbar-test.html, öffnete sie in Safari und erstellte so Screenshots
  • Ein Beispielbefehl war screencapture -x -o -l 153551 /tmp/safari-cases.png

Automatisches Auslösen des modalen Dialogs

  • Der zu testende modale Dialog ließ sich nur per Klick oder Tastenkürzel öffnen, und in Safari war kein klarer Mechanismus erkennbar, um Mausbewegungen oder Tastenkürzel auszuführen
  • Claude lief in einem Ordner mit dem Quellcode der Anwendung und verstand die Struktur gut genug, um einen lokalen Entwicklungsserver für Datasette zu starten
  • Es fügte JavaScript in ein Datasette-Template ein, sodass nach dem Öffnen des Fensters ein /-Tastendruck simuliert wurde
  • Dieser Code löst 1,2 Sekunden nach dem Laden des Fensters ein keydown-Event für die /-Taste aus und aktiviert so das Tastenkürzel zum Öffnen des modalen Dialogs
<script>  
window.addEventListener("load", function () {  
  setTimeout(function () {  
    document.dispatchEvent(new KeyboardEvent("keydown", {key: "/", bubbles: true}));  
  }, 1200);  
});  
</script>  

Sammeln interner Seiten-Messwerte

  • Claude musste JavaScript auf der Seite ausführen, um Messwerte direkt zu erhalten, und schrieb dafür eine eigene Web-Anwendung, die Informationen per CORS entgegennimmt
  • Mit der Python-Standardbibliothek http.server ließ es einen lokalen Server auf 127.0.0.1:9999 laufen
  • Der Server nahm POST-Anfragen mit JSON entgegen, schrieb sie nach /tmp/diag.json und sendete den Header Access-Control-Allow-Origin: *, damit auch Code von anderen Domains kommunizieren konnte
  • Claude injizierte JavaScript in das im Browser geladene Template, um das <textarea> innerhalb der Web Component <navigation-search> zu finden
  • Der eingefügte Code maß devicePixelRatio, scrollWidth, clientWidth, whiteSpace und width und sendete die Daten an den lokalen Server
const host = document.querySelector("navigation-search");  
const ta   = host.shadowRoot.querySelector("textarea");  
const cs   = getComputedStyle(ta);  
fetch("http://127.0.0.1:9999/diag";, {  
  method: "POST",  
  body: JSON.stringify({  
    dpr: window.devicePixelRatio,  
    scrollWidth: ta.scrollWidth, clientWidth: ta.clientWidth,  
    whiteSpace: cs.whiteSpace, width: cs.width,  
  }),  
});  

Wechsel zu Opus und Verifikation des Fixes

  • Nachdem Fable mehrere Techniken gefunden hatte, stieß es auf unsichtbare Guardrails und wurde auf Opus heruntergestuft
  • Opus hatte Zugriff auf den vollständigen Gesprächsverlauf und nutzte die von Fable erschlossenen Techniken weiter
  • Anschließend fand, testete und verifizierte Opus das Problem und schloss den Fix-Commit ab
  • Opus dokumentierte die im Verlauf der Sitzung gegen echte Browser eingesetzten Automatisierungstechniken und ausführbare Codebeispiele in /tmp/automation-report.md
  • Dieser Bericht wurde als separates Gist geteilt; auch das vollständige Claude-Code-Terminalprotokoll wurde veröffentlicht

Gesamtüberblick über die ausgeführten Arbeiten

  • Claude Fable 5 und Claude Code fanden heraus, wie sich ein lokaler Entwicklungsserver starten lässt, und richteten auch die dafür nötigen gefälschten Umgebungsvariablen ein
  • Sie starteten eine Playwright-Chrome-Sitzung, aktivierten in Chrome sichtbare Scrollbars mit defaults write com.google.chrome.for.testing AppleShowScrollBars Always und deaktivierten die Einstellung später wieder
  • Auch Playwright für Firefox und WebKit wurde durchprobiert, die Reproduktion des Bugs gelang damit jedoch nicht
  • Es wurde erkannt, dass Safari der Standardbrowser ist, und das HTML-Dokument textarea-scrollbar-test.html wurde erstellt
  • Das Testdokument wurde in echtem Firefox geöffnet, doch osascript-Zugriff wurde mit „osascript is not allowed assistive access“ blockiert
  • Ein Workaround über pyobjc-framework-Quartz wurde gefunden und daraus ein Screenshot-Workflow auf Basis von Fenster-IDs aufgebaut
  • Durch zusätzliches JavaScript im Site-Template wurde die /-Taste ausgelöst und JSON-Daten über einen Python-CORS-Server empfangen
  • Über das Shadow DOM der Web Component wurden die benötigten Informationen gefunden und die Ursache des Bugs in Safari bestätigt
  • Nach Anwendung eines potenziellen Fixes in einem benutzerdefinierten Template wurde das Verhalten geprüft und ein Lösungsweg für das Problem berichtet

Kostenschätzung

  • Verwendet wurde der Claude-Max-Tarif für 100 US-Dollar pro Monat; Anthropic erklärte, bis zum 22. Juni ein großzügiges Kontingent für Fable bereitzustellen und danach die vollen API-Preise zu berechnen
  • AgentsView wurde zur Ausgabenverfolgung genutzt; bei voller Bepreisung hätte diese Sitzung rund 12,11 US-Dollar gekostet
  • Die Session-Ausgabe betrug 68606, der maximale Kontext 113178, und verwendet wurden die Modelle claude-fable-5 und claude-opus-4-8
  • Wer die Kosten nicht genau im Blick hat, kann mit Fable für CSS-Debugging leicht rund 12 US-Dollar an Token-Kosten verbrauchen, während es neue Methoden entwickelt

Warum eine Sandbox nötig ist

  • Beeindruckend war, dass Fable letztlich sogar extreme Methoden einsetzte, um die Informationen für einen zweizeiligen CSS-Fix zu erhalten
  • Coding-Agenten können alles ausführen, was ein Nutzer per Terminalbefehl tun kann, und Frontier-Modelle kennen sehr viele Techniken
  • Wären bösartige Anweisungen, Prompt-Injection in Code oder Issue-Threads oder unbedacht ins Terminal eingefügte Inhalte vorhanden gewesen, hätte das zu Datenabfluss oder anderen Schäden führen können
  • Einen Coding-Agenten außerhalb einer Sandbox laufen zu lassen, ist immer eine schlechte Idee und gilt als einer der Hauptkandidaten für Sicherheitsvorfälle mit Coding-Agenten
  • Fable ist zwar intelligenter und könnte bösartige Anweisungen eher misstrauisch betrachten, doch wenn es einmal darauf hereinfällt, kann der Schaden durch seine unablässige Proaktivität größer ausfallen

1 Kommentare

 
GN⁺ 5 시간 전
Hacker-News-Kommentare
  • Das liest sich wie ein eindrucksvoller Fall eines fatalen Verlusts menschlicher Eigeninitiative und zeigt auch, dass es tatsächlich ziemlich viele Commits gab [0]
    Der Autor wollte die horizontale Scrollbar ausblenden. Ein ordentlicher Junior-Frontend-Entwickler würde sofort fragen: „Wo füge ich overflow-x: hidden; ein?“ Für eine vollständige Lösung würde man im Browser auf „Inspect element“ klicken, die CSS-Klasse finden, dann die Stelle im Code mit (rip)grep suchen und eine Zeile hinzufügen
    Ein proaktiverer Programmierer hätte Fragen gestellt wie: Welcher Inhalt ist in der leeren Textbox, dass er überläuft? Warum werden an zwei Stellen Workarounds eingebaut, die nur das Symptom verdecken statt die eigentliche Ursache zu beheben? Wäre es nicht besser, textarea nur einmal zu stylen? [0] https://github.com/datasette/datasette-agent/commit/a75a8b72...

    • Bevor man die CSS-Details korrigiert, hätte man auch fragen können, warum statisches CSS aus mehreren JavaScript-Dateien in __init__.py versteckt ist [0]
      Meine Erfahrung mit Claude war bisher eher, dass gut strukturierter Code herauskam, deshalb überrascht mich das tatsächlich etwas. Allerdings ist mein Ansatz eher weniger echtes Vibe Coding, sondern eher ein freundlicher sokratischer Schlagabtausch mit einem anderen Ingenieur, der ein Roboter ist
      [0] https://github.com/datasette/datasette-agent/blob/main/datas...
    • Dieses Modell scheint bereits in dem Bereich zu liefern, der sich schon gut skalieren ließ, nämlich bei der Länge und Komplexität angeforderter Aufgaben. Aber bei Common Sense, Urteilsvermögen und Einschätzungsfähigkeit, also dem, was bisher nicht gut skalierte, scheint es keinen großen Fortschritt zu geben
    • Exakt. Simon hat, indem er solche trivialen Aufgaben an ein LLM delegiert hat, die Chance verpasst, auf Basis zusätzlicher Informationen Abstraktionen zu bewerten und zu verbessern. Stattdessen hat er den Agenten 12 Dollar ausgeben lassen und die Änderungen vornehmen lassen, ohne dabei etwas zu lernen
    • Fable scheint die Tendenz zu haben, eigene Änderungen verifizieren zu wollen, und das ist an sich sehr gut. Damit Opus das tut, was Fable ohne Prompting macht, muss man Opus ziemlich viele Prompts geben
      Genau das würde ich auch von einem Junior-Entwickler erwarten: prüfen, ob der Bug tatsächlich existiert, herausfinden, wie man ihn behebt, und verifizieren, ob der Bug wirklich behoben wurde
      Das Problem ist, wie auch im Blogpost richtig hervorgehoben wurde, dass es statt anzuhalten und nachzufragen, wenn höhere Berechtigungen nötig sind, endlos allein nach hackigen Umgehungslösungen sucht. Bei einem menschlichen Entwickler wäre das so, als bräuchte er Zugriff auf eine Third-Party-Sandbox, würde aber keinen Senior nach den Zugangsdaten fragen und stattdessen versuchen, von Grund auf seine eigene Sandbox zu bauen
    • Ehrlich gesagt wirkt das wie eine Art Übermonetarisierung jeglichen Impulses
      Das erinnert mich an die Zeit, als beim Zugang zur Online-Welt noch minutenweise abgerechnet wurde. Damals gab es viele Anreize, den Zähler weiterlaufen zu lassen, und das hier scheint mir von derselben Art zu sein
  • Es ist nach wie vor verwirrend und überraschend, dass so viele Leute das weiterhin tun, obwohl sie klar einräumen: „Coding-Agenten außerhalb einer Sandbox laufen zu lassen, war schon immer eine schlechte Idee.“
    Es ist, als würde jemand ein Video hochladen, in dem er auf dem Beifahrersitz die Füße aufs Armaturenbrett legt, und dazu sagen: „Denkt dran: Wenn es dabei zu einem Unfall kommt, kann der Airbag euch die Beine brechen oder Schlimmeres verursachen! Zum Glück ist mir das nicht passiert!“

    • Interessantes Beispiel. Autofahren gehört selbst bei Einhaltung aller Sicherheitsregeln zu den gefährlichsten Dingen, die wir im Alltag regelmäßig tun. Trotzdem kommen wir letztlich zu dem Schluss, dass der Nutzen das Risiko überwiegt
    • Heute wird von allen verlangt, die Zahl der Dinge, die sie pro Tag erledigen, um das 10-Fache zu steigern. Ab diesem Punkt fliegen Sicherheitsprüfungen aus dem Fenster
    • Ich habe das seit ein paar Monaten so gemacht, und ehrlich gesagt ist nicht unvorhersehbar, was der Agent tun wird
      Das Problem ist, dass die Art, wie Menschen prompten, viel zu unterschiedlich ist
      Ich könnte zum Beispiel so etwas anfordern wie: „Teste auf den k8s-Pods dieses Services in diesem X-Cluster mehrere Varianten dieser Annotation. Das belegt schließlich Theorie Y.“ Ein Kollege sagt dagegen einfach: „Teste Theorie Y.“ Wenn man zwei Junior Engineers so fragt, probiert einer vielleicht zufällig Dinge in der Produktionsumgebung aus, während der andere lokale Tests laufen lässt. Das ist eine völlig ungeleitete Anfrage nach dem Muster „Mach, was du willst, und finde es heraus“, und der Agent liest das wie ein Junior, dem keine Grenzen mitgegeben wurden, der aber starken Druck bekommen hat, es „herauszufinden“
    • Ebenfalls verwirrend ist, dass viele glauben, sie hätten eine wirksame Sandbox, während der Agent darin Zugriff auf den gesamten Code, GitHub und unbegrenzten Webzugang hat
    • Ich weiß, dass es VM-Lösungen gibt, aber ich bin mit dem Ansatz zufrieden, einfach einen separaten OS-Benutzer namens claude zu haben
      Mit ähnlichen dotfiles wie bei mir, aber ohne Geheimnisse. Mein Home-Verzeichnis ist 0700, claude hat eigene SSH-Keys, die ich meinem GitHub-Profil hinzugefügt habe, aber sie sind passwortgeschützt, und push/pull übernehme ich selbst. Es gibt auch einen separaten Postgres-Dev-/Test-Benutzer und eine Datenbank, aber keinen Superuser
      Ich behandle ihn also wie jeden anderen Entwickler im Projekt. Wenn etwas mit sudo ausgeführt werden muss, fragt er mich. Manchmal arbeiten wir sogar parallel an derselben Sache. Unix sollte von Anfang an ein Mehrbenutzersystem sein
      Ein häufiger Trick ist, in seinen Git-Repositories solche zusätzlichen Remotes zu haben:
      paul ssh://paul@localhost/~/src/example (fetch)
      paul ssh://paul@localhost/~/src/example (push)
      Das macht es leicht, gemeinsam an Dingen zu arbeiten, die noch nicht bereit zum Teilen sind
      Dieses Setup fühlt sich ziemlich komfortabel an. Sorgen mache ich mir allerdings über Linux-Bugs zur Rechteausweitung. Ich glaube nicht, dass eine AI versteht, dass das Ausnutzen von Schwachstellen nicht erlaubt ist. Das erinnert mich an meinen ersten Job, als ich in Eile einmal versehentlich die :!-Funktion von vim benutzt habe, um meine offiziell auf das Bearbeiten von httpd.conf beschränkten sudo-Rechte auszuweiten. Auch wenn es heute automatische Sicherheitsupdates gibt, aktualisiere ich Pakete inzwischen manuell noch häufiger. Ich glaube nicht, dass Opus sich die Mühe machen würde, nach Sicherheitslücken zu suchen, aber Fable vielleicht schon, und in letzter Zeit gab es davon viele. Künftige Modelle könnten selbst neue Schwachstellen finden oder einen Keylogger installieren, um das Passwort für SSH-Keys herauszufinden
      Ein separater Benutzer ist abgesehen von einer separaten Maschine fast das paranoideste Setup, von dem ich gehört habe. Deshalb frage ich mich, ob ich nicht zu viel Geschwindigkeit und Komfort opfere. Trotzdem ist es in der Praxis immer noch sehr bequem, und ich halte es für einen effizienten und verantwortungsvollen Weg. Wenn jemand Lücken sieht, würde ich das gern hören
  • Fable fühlt sich an wie „Opus, das auf einem Harness läuft, das es nicht anhalten lässt, bis es sicher ist, dass das Problem behoben ist“. Wenn man ein Modell will, das in Benchmarks besser abschneidet, ergibt das Sinn
    Es ist ein sehr gutes Modell, aber der Premiumaufschlag ist groß. Nicht nur sind die Tokens selbst teurer, das Modell will sie auch alle verbrauchen. Bei React-Native-Arbeit sagt Fable zum Beispiel nicht: „Okay, geschafft, fertig.“ Es will die ganze App von Grund auf neu bauen, die komplette Test-Suite laufen lassen und alle Logs und Warnungen beobachten
    Zum ersten Mal bei der Nutzung eines LLM hatte ich das Gefühl, dass ein Modell-Upgrade selbst dann nicht lohnend ist, wenn das Unternehmen es erlaubt. Denn Builds und Tests quälen meinen Rechner und meinen Akku so stark, dass ich nichts anderes mehr machen kann
    Im Moment scheint Opus mit ultracode besser zu sein. Es gibt weniger Verschmutzung des Hauptkontexts, und die Recherche wird stärker parallelisiert

    • Löst das nicht die Einstellung low/medium effort? Fable 5 low ist öfter besser als Opus 4.8 high/xhigh und scheint auch viel weniger Tokens zu verbrauchen
    • Meine Erfahrung war das Gegenteil. Ich nutze zwar viele Sub-Agenten, aber ich habe es über Stunden mit viel weniger Tokens laufen lassen als früher mit opus4.6-8
    • Mich würde interessieren, in welcher Umgebung und mit welchen Einstellungen das läuft. Ich nutze die VSCode-Erweiterung auf Extra High, und es wirkt auf mich so, als würde sie genau das tun, was für die angeforderte Aufgabe nötig ist, und dann aufhören. Zusätzliche Kommentare kommen auch nur, wenn sie den geänderten Codebereich betreffen
    • Die neue high effort-Einstellung ist so stark, dass sie sich negativ auf die Qualität der Ausgabe auszuwirken scheint, wenn man sie auswählt, obwohl die Aufgabe sie gar nicht erfordert
    • Diese Proaktivität gefällt mir theoretisch, aber wie gesagt ist sie teuer. Ich frage mich, ob sich das mit dem richtigen Prompt lösen lässt. Etwa so: „Das hier sind die Randbedingungen. Löse nur x. Wenn du dir nicht sicher bist, ob etwas außerhalb der Grenzen der Aufgabe liegt, frag mich zuerst.“
  • Fable wollte UI-Änderungen in meinem Spiel verifizieren. Ich arbeitete gerade in einem anderen Fenster, als ich in der Taskleiste sah, dass sich ein Programm öffnete. Fable startete aus der CLI heraus das movie maker-Tool, öffnete das Spiel, zeichnete die Ausgabe auf und erfasste den letzten Frame, um die UI zu prüfen. Als der Startbildschirm des Spiels den Bereich verdeckte, den es sehen wollte, legte es ein temporäres worktree an, entfernte den Startbildschirm und startete den movie maker erneut
    Als ich das sah, dachte ich nur, es hätte einfach mich nach einem Screenshot fragen können und so Tokens gespart. Trotzdem konnte ich nicht anders, als beeindruckt zu sein. Opus hätte das niemals getan

    • Das trifft das Kernproblem perfekt, wenn Modelle endlos proaktiv handeln. Um einen Menschen nicht um einen Screenshot oder einen Klick auf einen Button bitten zu müssen, verbrennt es bereitwillig Tokens im Wert von 5 Dollar
    • Man muss es ihm einfach so sagen. Mir ist das auch passiert, aber nachdem ich ihm gesagt habe, dass es die Prüfung mir überlassen soll, war Fable über Stunden nützlich für Frontend-Iteration, ohne großen Token-Verbrauch
  • Solche Beiträge fühlen sich an, als kämen sie aus einem Paralleluniversum. Nach meiner anekdotischen Erfahrung und anhand eines von mir erstellten, zwar weiterhin subjektiven, aber direkten Benchmarks (https://pshirshov.github.io/llm-bench-pi-oneshot/) ist Fable gar nicht so beeindruckend.
    Es liegt ungefähr auf dem Niveau von gpt-5.5 und opus 4.8, ist manchmal besser und manchmal schlechter, definitiv teurer und lehnt React-Fragen auch schon mal mit der Begründung ab, bei Chemie nicht helfen zu können.
    Ich weiß nicht, ob dieser Wirbel wirklich Substanz hat oder einfach nur AGI-Hype vor dem IPO ist.

    • Meine Erfahrungen mit Fable seit dem Release stimmen mit Simons Erfahrung überein.
      Ich lasse Fable komplexe Implementierungen koordinieren. Ich gebe ihm übergeordnete Tickets in Linear und sage: „Sieh dir die Unteraufgaben dieses Tickets an und entscheide, welche du selbst implementieren kannst, in welcher Reihenfolge das geschehen sollte und wie das mit dem koordiniert werden muss, woran andere Teammitglieder gerade arbeiten.“ Diese Tickets sind nicht trivial, haben viele bewegliche Teile und Abhängigkeiten und greifen auch innerhalb und außerhalb desselben Projekts ineinander, zum Beispiel mit dem Backend.
      Dann wählt Fable Tickets aus und delegiert jedes Ticket an Unteragenten, ebenfalls Fable. Die Unteragenten sehen sich die Figma-Designs für das jeweilige Ticket an, setzen es unter strikter Einhaltung der Repository-Richtlinien und Konventionen perfekt um, machen Screenshots der einzelnen Teile, schreiben ausführliche Commit-Messages und PR-Beschreibungen und hängen die Screenshots als Beleg an. Am Ende gibt es eine Zusammenfassung wie: „PR #1283 muss zuerst gemergt werden. Außerdem gab es für diesen und jenen Screen kein Figma-Design, daher habe ich das Muster anhand eines bereits implementierten ähnlichen Screens angewendet.“
      Das sind wahrscheinlich nur etwa 20 % dessen, was Fable kann. Es ist wirklich ein starkes Modell.
      Opus 4.8 konnte vieles davon ebenfalls, brauchte aber deutlich mehr Führung und blieb eher mit etwas wie „Bis hierhin konnte ich es schaffen, aber weiter komme ich nicht“ stecken, sobald es auf Hindernisse stieß.
  • Fable ist etwas klüger, aber genau deshalb fühlt es sich insgesamt wie ein schlechteres Tool an.
    Es verwandelt einen 50-Zeilen-Patch, der mit einem einzigen Prompt erledigt wäre, ständig in eine 30-minütige Erkundungstour, und oft lohnt sich das überhaupt nicht. Außerdem liegt es oft daneben.
    Ich habe es mit einer ziemlich einfachen Aufgabe getestet: ein Backfill des redis-Dedup-Cache, nachdem sich die Hash-Funktion geändert hatte. Man musste nur die neue Hash-Funktion auf alle DB-Werte anwenden und damit den Cache erweitern, aber Fable implementierte stattdessen ein überkompliziertes Cache-Update, das versuchte, die Version der Hash-Funktion für jeden Cache-Wert zu erraten und nur veraltete Hashes neu zu berechnen. In manchen Kontexten mag das sinnvoll sein, aber nach 30 Minuten verbrannter Tokens kam Code heraus, den ich durch eine 10-Zeilen-for-Schleife ersetzt habe.
    Ich mache mir Sorgen, weil das wie eine schlechte Nachricht für das Programmieren insgesamt wirkt. Es sieht stark danach aus, dass die LLM-Technik bei Intelligenz auf die Wand des abnehmenden Grenznutzens gestoßen ist, und wenn die Reaktion darauf einfach lautet, sie nur hartnäckiger zu machen, dann ist das eine miserabele Lösung für alle Beteiligten. Ausgenommen sind höchstens die Leute, die Tokens verkaufen, und die, die genug Tokens für das Scannen nach 0-days bezahlen können.

    • Ich glaube, bei LLMs und Agenten gibt es zwei Probleme, die wahrscheinlich nie behoben werden.
      Erstens fehlt ein Kausalmodell. Alles, was sie können, ist Trial-and-Error-Suche, und das funktioniert bei vielen Problemen ziemlich gut, aber viele andere Probleme benötigen ein Kausalmodell.
      Zweitens sind Prompts nicht präzise. Programmiersprachen und Maschinenmodelle wurden genau erfunden, um dieses Problem zu lösen. Englisch ist großartig, aber keine Programmiersprache.
    • Ich glaube, intern wusste man schon vor langer Zeit, dass man den abnehmenden Grenznutzen erreicht hatte.
      Im Vorfeld des IPO wurde viel strategische Einführung und Manipulation betrieben, und in dieser Hinsicht war es wirksam.
    • Vor ein paar Tagen habe ich mit CC an einer Änderung in 15–20 Dateien gearbeitet, überall exakt auf dieselbe Weise: eine bestimmte Funktion aus dem Component-Body herausziehen. Man musste die Dateien einfach nur bearbeiten, aber es wurden mehrere Agenten gestartet, und einer davon schrieb ein perl-Skript, das alle Dateien fand und per Regex ersetzte. Danach hätte man zur Fehlerprüfung nur tsc laufen lassen müssen, aber stattdessen wurde noch ein Skript geschrieben, das tsc in jedem Unteragenten ausführt und die Ergebnisse zusammenführt.
      Das war wirklich zum Verrücktwerden. Etwas, das höchstens 1–2 Minuten gedauert hätte, dauerte auf diesem Weg etwa 10 Minuten.
      Später werde ich es mit deutlich komplexeren Aufgaben versuchen, aber für einfache Dinge fühlte es sich an, als würde man mit einer Corvette zum Briefkasten fahren.
  • Mein Widerwille, auf meiner lokalen Maschine terminalbasierte LLMs zu verwenden, fühlt sich weiterhin bestätigt an.
    Selbst wenn sie nichts Bösartiges tun, gibt es zu viele Möglichkeiten, wie sie eine erhebliche Menge Arbeit vernichten oder meinen Rechner und meine Arbeitsfähigkeit insgesamt beschädigen können.

    • Es ist schockierend, dass es standardmäßig keine Möglichkeit gibt, sie in einer Sandbox auszuführen.
      Sollte ein Billionen-Dollar-Unternehmen das nicht relativ leicht hinbekommen? Im Vergleich zum ganzen Harness wirkt das auf mich wie eine Kleinigkeit.
  • Sicherheit ist offensichtlich das größere Thema, aber beim Lesen musste ich die ganze Zeit daran denken, wie viele Tokens wohl verbrannt wurden, um zwei Zeilen CSS zu korrigieren.

    • Die Zahl der Codezeilen eines Bugfixes ist ein wirklich schlechter Näherungswert für den nötigen Aufwand.
      Man sollte abschätzen, wie lange ein Mensch dafür gebraucht hätte.
    • Ganz einfach: Wenn man zwei Zeilen CSS ändern muss, sollte man Fable auf keinen Fall verwenden. Man sollte es nur für komplexe und langwierige Aufgaben einsetzen.
    • Das waren wohl ungefähr 12 Dollar.
    • Der Autor ist ein AI-Hype-Verkäufer und zahlt seine Token-Kosten nicht selbst.
    • Ich bin schneller als diese LLM-Evangelisten. Ich bin nicht überzeugt, dass der Einsatz von LLMs tatsächlich schneller ist. Boilerplate mag eine Ausnahme sein, aber wie wichtig ist das schon?
      Die Leute können jetzt einfach faul sein und dabei produktiv wirken, aber es bleibt Faulheit.
      Es gibt inzwischen Menschen, die für das Schreiben einer einzigen E-Mail Zugriff auf Hardware im Wert von Hunderttausenden Dollar brauchen. Darauf verzichte ich. Ich will mein Gehirn nicht ruinieren, nur um von der Denkmaschine eines Milliardärs abhängig zu werden.
      Und ich werde mein Gehirn auch nicht mit einer lokalen „Maschine, die für mich denkt“ ruinieren. Ich möchte ein Mensch sein, der mehr wert ist als die Hardware, auf die ich Zugriff habe.
  • Meine persönliche Erfahrung damit, dass Fable 5 auf eigene Weise agiert, war sehr positiv
    Ich wollte die eigentliche Ursache eines Python-Modul-Absturzes finden, der weder im Log noch in der Konsole Fehler hinterließ. Fable schrieb einen Test-Harness, der UI-Klicks simuliert, und nutzte dann eine Binärsuche in meinem Code, um den Punkt zu finden, an dem der Absturz begann. Anschließend formulierte es eine zugespitzte Hypothese zur Absturzursache und führte nacheinander Bash-Einzeiler aus, die unter /tmp für jede Version des betreffenden Python-Moduls eine virtuelle Umgebung anlegten, um die Version zu finden, bei der der Absturz nicht auftrat
    Es hat die eigentliche Ursache viel tiefer verfolgt, als ich es allein getan hätte, und die Ursache war eine Regression im Modul, die einen Heap-Allocation-Overflow auslöste. Es lieferte genug Informationen und ein vereinfachtes Beispiel, um einen Bug-Report einzureichen, und schrieb auch einen Workaround, damit das in meiner Anwendung nicht passiert
    Ich habe es aber nicht völlig von der Leine gelassen. Ich habe jeden CLI-Befehl geprüft, den es ausführen wollte, und beim Weitergehen mit „yes“ zusätzliche Antworten ergänzt, um übermäßigen Token-Verbrauch zu verhindern

    • Ich finde, Fable ist wirklich gut beim Debugging kniffliger Bugs
      Es hilft, im Prompt oder im Markdown Grenzen zu setzen. Wenn man zum Beispiel sagt, dass keine Webbrowser-Automatisierung verwendet werden soll, habe ich gesehen, dass Fable sowohl diese Regel als auch ihre Intention einhält. Es hat auch keine seltsamen Hacks versucht
      Allerdings scheint es manche einfachen Debugging-Aufgaben komplizierter zu behandeln, als sie tatsächlich sind. Der Originalbeitrag ist dafür wohl ein gutes Beispiel
    • Ich frage mich, ob man wirklich einen Agenten brauchte, um die Ursache dafür zu finden, dass ein Python-Modul abstürzt, ohne im Log oder in der Konsole Fehler zu hinterlassen, dafür einen Test zu bauen, der UI-Klicks simuliert, und eine git bisect-Schleife laufen zu lassen
      Dass es den Test-Case und die git bisect-Schleife erstellt, kann ich noch nachvollziehen, aber ich verstehe nicht, warum das über das Internet und GPUs laufen muss. Das wirkt auf mich wie etwas, das auch auf einem Single-Core-Celeron laufen könnte