chimera-ground-it-in-the-source
Weź sygnaturę z zainstalowanej wersji, nie z pamięci — wiarygodne API jest nie do odróżnienia od prawdziwego, dopóki nie zostanie uruchomione.
Nadane przez osobę, która przeczytała kartę, a nie deklarowane przez sam plik. Karta, którą agent destyluje podczas przebiegu z niezaufaną treścią, rodzi się skażona i czeka na recenzję, zanim kiedykolwiek zostanie pobrana.
Kiedy przychodzi na myśl
- wywołanie cudzej biblioteki
- jak nazywa się ten parametr
- API zmieniło się między wersjami
- pisanie pod framework z pamięci
- AttributeError na metodzie, która powinna istnieć
Wartość zwykle kryje się w Unikaj i Sprawdź. Rób to sekcja, którą pisze każdy.
Treść karty powyżej to tłumaczenie. Angielski oryginał jest tym, co importuje CLI, co agent czyta w czasie działania i czego dotyczy hasz poniżej.
Wyzwalacz
Masz zamiar napisać wywołanie do cudzej biblioteki, frameworka albo CLI: nazwę metody, argument nazwany, klucz konfiguracji, kształt zwracanej wartości, flagę. Dotyczy to najostrzej sytuacji, gdy przypomnienie wydaje się pewne, bo pewność powstaje tak samo niezależnie od tego, czy API istnieje.
Nie dotyczy to wbudowanych elementów samego języka, których używasz bez przerwy, i nie jest to
polecenie sięgania po dokumentację przed napisaniem dict.get. Granicą jest to, czy pomyłka
zostałaby wyłapana natychmiast przez następną uruchomioną rzecz.
Rób
- Sprawdź wersję, która jest faktycznie zainstalowana, a nie tę, o której pamiętasz, że o niej
czytałeś:
uv pip show <pkg>albopython -c "import pkg; print(pkg.__version__)". - Przeczytaj to, co zainstalowane.
python -c "import inspect, pkg; print(inspect.signature(pkg.fn))", albo otwórz plik wsite-packages, albo uruchom--helpna binarce, która jest na PATH. To jest autorytet, bo to ten kod się wykona. - Gdy korzystasz z wpisu na blogu, README z sieci albo z własnej pamięci, traktuj to jako hipotezę i potwierdź ją wobec kroku 2. Strony dokumentacji opisują najnowsze wydanie; twój lockfile może go nie przypinać.
- Wykonaj wywołanie raz w jednorazowym snippecie i wypisz faktyczną zwracaną wartość, zanim
napiszesz kod indeksujący po twoim wyobrażeniu o niej. Zagnieżdżone kształty —
["choices"][0]["message"]— to miejsce, gdzie pamięć jest najmniej wiarygodna i najmniej skłonna zawieść głośno. - Zostaw dowód obok kodu: wersję oraz sygnaturę albo wyjście
--help, które przeczytałeś. Komentarz albo opis PR-a wystarczy i mówi następnemu czytelnikowi, wobec czego ten kod został napisany.
Unikaj
Pisanie tekstu w kształcie API. Porażką nie jest literówka — literówka wywala się natychmiast i naprawia w kilka sekund. Jest nią nazwa, która przestrzega każdej konwencji nazewniczej biblioteki i nie istnieje:
Prawdziwy przypadek z tego repozytorium, i chodzi właśnie o kształt — domysł nie był absurdalny, był rozsądny:
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
Kosztem nie był wyjątek — ImportError jest głośny i tani. Kosztem jest to, że ten sam pewny siebie
domysł o zachowaniu zawodzi po cichu, a dowiadujesz się dopiero wtedy, gdy okazuje się, że liczba,
którą wyprodukował, jest zła.
Unikaj też ugruntowania na złej wersji. Czytanie bieżącej dokumentacji pakietu przypiętego dwie wersje główne wstecz produkuje kod poprawny wobec biblioteki, której nie uruchamiasz — a komunikat błędu, gdy w końcu przyjdzie, wskazuje na twoje wywołanie, a nie na niezgodność.
I unikaj uznawania przechodzącego type checkera za ugruntowanie, gdy pakiet nie dostarcza stubów.
Wobec nietypowanej zależności Any połyka każdy atrybut, który wymyślisz; sprawdzenie raportuje
sukces, bo nie miało czego sprawdzać.
Sprawdź
Dla każdego nieoczywistego wywołania w diffie: czy potrafisz wskazać, gdzie je widziałeś —
sygnaturę, którą wypisałeś, linię w site-packages, --help, które uruchomiłeś? Jeśli uczciwą
odpowiedzią dla któregokolwiek jest "wydawało się poprawne", to wywołanie jest niezweryfikowane, a
powiedzenie tego kosztuje jedno zdanie.
Mocniejsze sprawdzenie jest wykonywalne: uruchom snippet z kroku 4 wobec zainstalowanej wersji i wklej jego wyjście. Import, który się rozwiązuje, i wywołanie, które zwraca oczekiwany kształt, to dwa różne fakty; ten drugi jest tym, na którym polegasz.
Ryzyko
Zastosowane do wszystkiego zamienia rutynowy kod w badania i spowalnia pracę bez zysku. Wydaj to na nieznane wywołanie, na to wrażliwe na wersję i na zagnieżdżony kształt zwracany — nie na sto linii wokół nich.
Subtelniejszym ryzykiem jest ugruntowanie zbyt dosłowne. Zainstalowane źródło chętnie pokaże ci
_internal_helper, który istnieje, działa dzisiaj i nie jest niczyją obietnicą. Źródło mówi, co tam
jest; dokumentacja mówi, co jest wspierane. Gdy się różnią, wybieraj udokumentowaną powierzchnię, a
jeśli świadomie sięgasz poza nią, powiedz to w komentarzu, zamiast pozwalać następnemu czytelnikowi
zakładać, że było to usankcjonowane.
Jak użyć
Karta to dane. Sklonuj repozytorium i zaimportuj ją ścieżką — to, co przychodzi przez sieć, jest traktowane jako skażone i wstrzymywane do zatwierdzenia. Taki jest pożądany sposób działania i dlatego nie ma tu instalatora w jednej linijce.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/chimera-ground-it-in-the-source/SKILL.mdIntegralność
SHA-256 pliku w postaci opublikowanej. Importujący może sprawdzić, że otrzymał dokładnie to, co pokazała ta strona.
9a51bb6b117c736dba1de11a166efed09ad200134e153ad553f4701302025398