Przejdź do treści

Skills

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.

WzorzecPochodzenie: cleanStatus: activev0.1.0 · Apache-2.0

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

  1. Sprawdź wersję, która jest faktycznie zainstalowana, a nie tę, o której pamiętasz, że o niej czytałeś: uv pip show <pkg> albo python -c "import pkg; print(pkg.__version__)".
  2. Przeczytaj to, co zainstalowane. python -c "import inspect, pkg; print(inspect.signature(pkg.fn))", albo otwórz plik w site-packages, albo uruchom --help na binarce, która jest na PATH. To jest autorytet, bo to ten kod się wykona.
  3. 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ć.
  4. 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.
  5. 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.git
chimera skills-import chimera-agent/skills/chimera-ground-it-in-the-source/SKILL.md

Integralność

SHA-256 pliku w postaci opublikowanej. Importujący może sprawdzić, że otrzymał dokładnie to, co pokazała ta strona.

9a51bb6b117c736dba1de11a166efed09ad200134e153ad553f4701302025398

Przeczytaj kartę w repozytorium