Zum Inhalt springen

Skills

chimera-ground-it-in-the-source

Nimm die Signatur aus der installierten Version, nicht aus dem Gedächtnis — eine plausible API ist von einer echten nicht zu unterscheiden, bis sie läuft.

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 fremde Bibliothek aufrufen
  • wie heißt der Parameter
  • die API hat sich zwischen Versionen geändert
  • aus dem Gedächtnis gegen ein Framework schreiben
  • AttributeError bei einer Methode, die es geben müsste

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 sind dabei, einen Aufruf in die Bibliothek, das Framework oder das CLI von jemand anderem zu schreiben: einen Methodennamen, ein Keyword-Argument, einen Konfigurationsschlüssel, die Form eines Rückgabewerts, ein Flag. Das gilt am schärfsten dann, wenn sich die Erinnerung sicher anfühlt, denn Sicherheit entsteht auf dieselbe Weise, ob die API existiert oder nicht.

Das gilt nicht für die Builtins der Sprache selbst, die Sie ständig benutzen, und es ist keine Aufforderung, vor dem Schreiben von dict.get Dokumentation zu holen. Die Grenze verläuft danach, ob ein Irrtum sofort von dem aufgefangen würde, was Sie als Nächstes ausführen.

Tun

  1. Holen Sie sich die Version, die tatsächlich installiert ist, nicht die, über die Sie gelesen zu haben glauben: uv pip show <pkg>, oder python -c "import pkg; print(pkg.__version__)".
  2. Lesen Sie das installierte Ding. python -c "import inspect, pkg; print(inspect.signature(pkg.fn))", oder öffnen Sie die Datei unter site-packages, oder rufen Sie --help auf der Binary auf, die im PATH liegt. Das ist die Autorität, weil es der Code ist, der ausgeführt wird.
  3. Wenn Sie einen Blogpost, ein README im Web oder Ihre eigene Erinnerung heranziehen, behandeln Sie das als Hypothese und bestätigen Sie sie gegen Schritt 2. Doku-Seiten beschreiben das neueste Release; Ihre Lockfile pinnt es vielleicht nicht.
  4. Führen Sie den Aufruf einmal in einem Wegwerf-Snippet aus und geben Sie den tatsächlichen Rückgabewert aus, bevor Sie Code schreiben, der in Ihre Annahme davon indiziert. Verschachtelte Formen — ["choices"][0]["message"] — sind dort, wo die Erinnerung am unzuverlässigsten ist und am unwahrscheinlichsten laut scheitert.
  5. Lassen Sie den Beleg neben dem Code stehen: die Version und die Signatur oder Hilfeausgabe, die Sie gelesen haben. Ein Kommentar oder der PR-Text genügt, und er sagt dem nächsten Leser, wogegen der Code geschrieben wurde.

Vermeiden

API-förmigen Text zu schreiben. Der Fehler ist kein Tippfehler — ein Tippfehler wirft sofort und ist in Sekunden behoben. Es ist ein Name, der jede einzelne Namenskonvention der Bibliothek befolgt und nicht existiert:

Ein echter aus diesem Repository, und auf die Form kommt es an — die Vermutung war nicht absurd, sie war vernünftig:


from chimera.core.checkpoint import WorkspaceGuard, diff_snapshots   # ImportError

# Where it actually is. One grep, before writing the line, would have found it.
from chimera.core.checkpoint import WorkspaceGuard
from chimera.evolution.diff_gate import diff_snapshots

Die Kosten waren nicht die Exception — ein ImportError ist laut und billig. Sie sind, dass dieselbe zuversichtliche Vermutung über ein Verhalten still scheitert, und Sie erfahren es erst, wenn sich die Zahl, die sie erzeugt hat, als falsch herausstellt.

Vermeiden Sie außerdem, sich an der falschen Version zu erden. Die aktuelle Doku für ein Paket zu lesen, das zwei Major-Versionen zurück gepinnt ist, erzeugt Code, der über eine Bibliothek korrekt ist, die Sie nicht ausführen — und die Fehlermeldung zeigt, wenn sie kommt, auf Ihren Aufruf statt auf die Diskrepanz.

Und vermeiden Sie es, einen grünen Typechecker als Erdung zu akzeptieren, wenn das Paket keine Stubs mitliefert. Gegen eine untypisierte Abhängigkeit schluckt Any jedes Attribut, das Sie erfinden; die Prüfung meldet Erfolg, weil sie nichts zu prüfen hatte.

Prüfen

Können Sie für jeden nicht offensichtlichen Aufruf im Diff darauf zeigen, wo Sie ihn gesehen haben — eine Signatur, die Sie ausgegeben haben, eine Zeile in site-packages, ein --help, das Sie ausgeführt haben? Wenn die ehrliche Antwort bei einem davon „es schien richtig" lautet, ist dieser Aufruf unverifiziert, und das zu sagen kostet einen Satz.

Die stärkere Prüfung ist ausführbar: Lassen Sie das Snippet aus Schritt 4 gegen die installierte Version laufen und fügen Sie seine Ausgabe ein. Ein Import, der auflöst, und ein Aufruf, der die erwartete Form zurückgibt, sind zwei verschiedene Tatsachen; auf die zweite verlassen Sie sich.

Risiko

Auf alles angewandt macht das aus Routinecode Recherche und bremst die Arbeit ohne Gewinn. Investieren Sie es in den unvertrauten Aufruf, den versionsempfindlichen und die verschachtelte Rückgabeform — nicht in die hundert Zeilen darum herum.

Das subtilere Risiko ist, sich zu wörtlich zu erden. Der installierte Quellcode zeigt Ihnen bereitwillig _internal_helper, das existiert, heute funktioniert und niemandes Zusage ist. Der Quellcode sagt Ihnen, was da ist; die Doku sagt Ihnen, was unterstützt wird. Wenn sie sich widersprechen, bevorzugen Sie die dokumentierte Oberfläche, und wenn Sie wissentlich darüber hinausgreifen, sagen Sie es im Kommentar, statt den nächsten Leser annehmen zu lassen, es sei abgesegnet gewesen.

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-ground-it-in-the-source/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.

9a51bb6b117c736dba1de11a166efed09ad200134e153ad553f4701302025398

Die Karte im Repository lesen