Zum Inhalt springen

Skills

chimera-carry-the-failure-forward

Eine Retry-Schleife, die ihre Feedback-Variable überschreibt, zeigt Versuch 3 nur den Fehlschlag von Versuch 2 — also leitet sie wieder den Patch her, den Versuch 1 schon probiert hat.

MusterHerkunft: cleanStatus: activev0.1.0 · Apache-2.0

Verliehen von der Person, die die Karte gelesen hat — nicht von der Datei über sich selbst behauptet. Eine Karte, die der Agent während eines Laufs mit nicht vertrauenswürdigen Inhalten destilliert, kommt kontaminiert zur Welt und wird bis zur Prüfung zurückgehalten, bevor sie jemals abgerufen wird.

Wann sie in den Sinn kommt

  • eine Retry-Schleife schreiben
  • der Agent probiert immer denselben Fix
  • Verifier-Ausgabe zurück ins Modell geben
  • die Versuche scheitern immer gleich
  • den Workspace zwischen Versuchen zurücksetzen

In Vermeiden und Prüfen steckt meist der Wert. Tun ist der Abschnitt, den alle schreiben.

Der Kartentext oben ist eine Übersetzung. Das englische Original ist das, was die CLI importiert, was der Agent zur Laufzeit liest und was der Hash unten bezeugt.

Auslöser

Sie haben eine Schleife, die einen Versuch ausführt, ihn bewertet und einen weiteren mit Feedback startet: ein Agent mit einem Verifier, ein Code-Fixer gegen eine Test-Suite, eine Generate-and-Check-Pipeline. Das Budget umfasst mehr als zwei Versuche, und der Workspace wird zwischen ihnen zurückgesetzt, sodass jeder Versuch sauber startet.

Das gilt nicht für einen idempotenten Retry über einen unzuverlässigen Transport — ein Netzwerkaufruf, der aus Gründen fehlschlug, die nichts mit dem zu tun haben, was Sie gesendet haben. Aus Versuch 1 ist dort nichts zu lernen, und ihn weiterzureichen ist bloß Ballast.

Tun

  1. Speichern Sie Versuche in einer Liste, nicht in einer Variablen, die Sie neu zuweisen. Ein Datensatz pro Versuch: die Verifier-Ausgabe, der Patch, den der Versuch tatsächlich geschrieben hat, und welcher Tool-Schritt zuerst fehlschlug.
  2. Nehmen Sie den Patch aus dem Workspace-Snapshot, vor dem Zurücksetzen — den echten Diff, nicht die Beschreibung des Modells davon, was es geändert hat. Das Zurücksetzen ist es, was das nötig macht: Sobald der Baum zurückgerollt ist, hält auch auf der Platte nichts mehr den falschen Weg fest, also hat der nächste Versuch kein Hindernis, denselben erneut herzuleiten.
  3. Setzen Sie den Retry-Prompt aus allen Datensätzen zusammen, ältester zuerst, jeder mit seiner Versuchsnummer und seinem Urteil beschriftet, unter einer Überschrift, die sagt, dass diese bereits probiert und zurückgesetzt wurden.
  4. Begrenzen Sie jeden Datensatz. Chimera deckelt einen zurückgespielten Diff bei 2000 Zeichen und kürzt mit einer Markierung; eine unbegrenzte Historie über drei Versuche wird den Prompt dominieren.
  5. Deduplizieren Sie nach Fehlersignatur. Wenn zwei Versuche auf dieselbe Weise scheiterten, behalten Sie einen und halten Sie fest, dass es sich wiederholt hat — die Wiederholung ist das Signal, die zweite Kopie ist keine neue Information.
  6. Wenn sich die Signatur wiederholt, hören Sie mit dem Anhängen auf und ändern Sie etwas Strukturelles: Planen Sie neu, mit den gesammelten Ursachen als Planer-Kontext (TaskLedger.context() rendert sie unter „Why earlier attempts failed (do NOT repeat these):"), oder eskalieren Sie zu einem stärkeren Modell. Mehr Feedback über dieselbe Sackgasse verlässt die Sackgasse nicht.
  7. Geben Sie bei jeder Injektion der Historie ein zählbares Event aus, damit ein Benchmark-Arm belegen kann, dass die Injektion überhaupt ausgelöst hat.

Vermeiden

Das Überschreiben. In chimera/core/autonomous.py wird das Feedback der Schleife in jeder Runde neu aufgebaut:

feedback = "\n\n".join(p for p in (fb, _verify_fb) if p) or "The attempt did not pass verification."

sodass Versuch 3 mit dem Fehlschlag von Versuch 2 zusammengesetzt wird und mit nichts aus Versuch 1. Ihn weiterzureichen bedeutet stattdessen, an eine Struktur anzuhängen — skizziert, nicht zitiert, weil die akkumulierende Variante das ist, wofür diese Karte argumentiert, und nicht das, was die Datei derzeit tut:

records.append(record_for(index, verdict, patch))   # one entry per attempt
feedback = render(records)                          # every attempt, oldest first

Seien Sie präzise darin, welche Hälfte bereits vorhanden ist, wenn Sie das in Chimera lesen: Der Inhalt des Feedbacks ist gut abgedeckt — --diff-feedback zeigt dem Retry den Patch, den er tatsächlich geschrieben hat (chimera/core/autonomous.py, gedeckelt bei _DIFF_FEEDBACK_MAX_CHARS = 2000), und TaskLedger sammelt Ursachen für den Planer. Nicht abgedeckt ist die Akkumulation über Versuche hinweg in der Zeile darüber. Eine Karte, die all das als fehlend darstellte, würde gegen bereits geleistete Arbeit argumentieren.

Vermeiden Sie außerdem, dem Retry zu sagen, dass er gescheitert ist, ohne ihm zu zeigen, was er geschrieben hat. „The attempt did not pass verification" plus ein fehlschlagender Test reicht, um ein Modell zu einem erneuten Versuch zu bringen, und reicht nicht, um es etwas anderes versuchen zu lassen — der falsche Patch ist für es unsichtbar, und der Workspace enthält ihn nicht mehr, also ist ihn erneut herzuleiten der Weg des geringsten Widerstands.

Und vermeiden Sie es, nur die Prosa des Managers weiterzureichen und die Ausgabe des Verifiers fallen zu lassen. Das fehlschlagende Assert ist die handlungsrelevanteste Zeile der ganzen Schleife; ein Absatz eines Reviewers darüber ist eine Umschreibung mit strikt weniger Information.

Prüfen

Instrumentieren Sie den Composer, lassen Sie eine Aufgabe laufen, von der Sie wissen, dass sie dreimal scheitert, und grepen Sie den Prompt von Versuch 3 nach einer Zeichenkette, die es nur in Versuch 1 gibt — ein Dateiname, den er angefasst hat, ein Bezeichner aus seinem Diff. Vorhanden oder nicht; Teilpunkte gibt es nicht.

Zweite Prüfung, ebenso binär: Zählen Sie die Injektionen. Ein Lauf, in dem die Historie nie zusammengesetzt wurde, weil die Guard-Bedingung falsch war oder weil die Diff-Liste leer war, hat überhaupt nichts gemessen — und ein Benchmark-Arm, der darauf aufbaut, misst die Verkabelung, nicht die Idee. Steht der Zähler auf null, ist das Ergebnis nichtig, egal was die Erfolgsrate sagt.

Risiko

Anchoring ist die registrierte Gegenhypothese, keine hypothetische: Einem Modell den falschen Patch zu zeigen, kann seine Aufmerksamkeit auf diesen Patch fixieren und Varianten eines toten Ansatzes hervorbringen statt eines anderen. Deshalb ist das Verhalten in Chimera opt-in und gemessen (--diff-feedback) statt standardmäßig eingeschaltet. Behandeln Sie es als eine Behauptung, die auf Ihren eigenen Aufgaben zu prüfen ist, nicht als ausgemachte Verbesserung.

Der zweite Kostenpunkt ist das Kontextbudget. Drei Diffs, drei Verifier-Dumps und ein Manager-Review können den Prompt über seine Compaction-Schwelle drücken — und dann wirft ein Compactor ohne Wiederherstellung genau die akkumulierte Historie weg, für deren Aufbau Sie bezahlt haben. Begrenzen Sie die Datensätze und kennen Sie Ihr Budget, bevor Sie das aktivieren, sonst kämpfen die beiden Mechanismen gegeneinander und das sichtbare Symptom wird keiner von beiden sein.

Verwenden

Die Karte ist Daten. Klonen Sie das Repository und importieren Sie sie über den Pfad — was über das Netz kommt, gilt als kontaminiert und wird bis zur Freigabe zurückgehalten. Das ist das gewünschte Verhalten und der Grund, warum es hier keinen Einzeiler-Installer gibt.

git clone https://github.com/brcampidelli/chimera-agent.git
chimera skills-import chimera-agent/skills/chimera-carry-the-failure-forward/SKILL.md

Integrität

SHA-256 der Datei in der veröffentlichten Fassung. Wer sie importiert, kann prüfen, dass das Empfangene dem entspricht, was diese Seite gezeigt hat.

62dcc2aa830e5eb35c554bebf2c1a24454a054bf17bf152ccd59f3497b5e043d

Die Karte im Repository lesen