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.
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
- Holen Sie sich die Version, die tatsächlich installiert ist, nicht die, über die Sie gelesen
zu haben glauben:
uv pip show <pkg>, oderpython -c "import pkg; print(pkg.__version__)". - Lesen Sie das installierte Ding.
python -c "import inspect, pkg; print(inspect.signature(pkg.fn))", oder öffnen Sie die Datei untersite-packages, oder rufen Sie--helpauf der Binary auf, die im PATH liegt. Das ist die Autorität, weil es der Code ist, der ausgeführt wird. - 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.
- 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. - 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.gitchimera skills-import chimera-agent/skills/chimera-ground-it-in-the-source/SKILL.mdIntegritä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