Przejdź do treści

Skills

chimera-thin-vertical-slice

Zbuduj jedną wąską ścieżkę, która przecina każdą warstwę i działa, zanim zbudujesz jakąkolwiek warstwę w całości — integracja, która nigdy się nie wykonała, to domysł.

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

  • start nowej funkcji
  • potrzebne CLI, usługa i magazyn danych
  • budowanie najpierw abstrakcji
  • nic jeszcze nie działa
  • szkielet nowego podsystemu

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

Zaczynasz pracę rozciągającą się na warstwy — polecenie, które sięga orkiestratora, który woła dostawcę, który pisze do magazynu — i decydujesz, co zbudować najpierw. Pokusą jest zbudować dolną warstwę w całości, potem następną, a na końcu to okablować.

Nie dotyczy to pracy naprawdę jednowarstwowej: parsera, formatera, czystej funkcji. Nie ma tam pionu, a wymyślanie go to ceremonia. Nie dotyczy też zmiany wewnątrz systemu, który już działa od końca do końca; ta ścieżka istnieje, a za plaster już zapłacono.

Rób

  1. Nazwij obserwowalną rzecz, którą plaster wyprodukuje, jako polecenie, które ktoś inny mógłby wpisać, i jedno konkretne wyjście. Nie "potok działa" — chimera run "hi" wypisuje jedną linię, która wróciła od prawdziwego dostawcy.
  2. Napisz to wywołanie najpierw, jako skrypt albo test, i patrz, jak zawodzi z właściwego powodu.
  3. Zaimplementuj najkrótszą ścieżkę przez każdą warstwę, w każdej zdegenerowaną: jeden dostawca, brak ponowień, brak pliku konfiguracji, brak cache'u, brak współbieżności. Tam, gdzie kiedyś zamieszka polityka, wstaw stałą.
  4. Zachowaj prawdziwą tę warstwę, która niesie faktyczną niewiadomą. Jeśli nie wiesz jeszcze, co zwraca dostawca, to dostawca jest tą jedyną rzeczą w plastrze pierwszym, która nie może być stubem.
  5. Zacommituj w momencie, w którym to działa, przed uogólnianiem. Ten commit jest dowodem, że warstwy do siebie pasują.
  6. Poszerzaj po jednej osi naraz — drugi dostawca, potem konfiguracja, potem cache — i po każdym poszerzeniu utrzymuj działanie polecenia z kroku 1. Jeśli się zepsuje, to poszerzenie jest podejrzanym.

Unikaj

Projektowanie interfejsu wobec zera wywołujących. Kolejność pozioma produkuje pierwszego dnia klasę bazową, sześć adapterów, rejestr i politykę ponowień, a w chwili okablowania odkrywa, że kształt jest zły — bo nic jeszcze nie zadało mu prawdziwego pytania.


class BaseProvider(ABC): ...
class ProviderRegistry: ...
class RetryPolicy: ...

# Day 1, vertical: ugly, hardcoded, and it answers the question.
def complete(prompt: str) -> str:
    return _post(URL, {"model": MODEL, "prompt": prompt})["choices"][0]["text"]

Unikaj też plastra cienkiego w złym wymiarze: mockowania wywołania zewnętrznego i przepuszczania reszty od końca do końca. To dowodzi, że twoje własne warstwy zgadzają się ze sobą, co nigdy nie było wątpliwą częścią. Integracja, której nie przećwiczyłeś, jest tą, która będzie zła.

Sprawdź

Zadaj pytanie zero-jedynkowe: czy ktoś, kto tego nie pisał, na świeżym klonie może uruchomić jedno polecenie i zobaczyć, jak funkcja robi swoje od początku do końca? Jeśli odpowiedź wymaga "no, jak jeszcze zestubujesz X" albo "po wklejeniu tokena do tamtej stałej" — to drugie zanotuj uczciwie jako konfigurację, a każde zastrzeżenie kodowe potraktuj jako dowód, że to jeszcze nie jest plaster.

Potem sprawdź git log: czy jest commit, w którym polecenie działało, a abstrakcje jeszcze nie istniały? Jeśli pierwszy działający commit jest zarazem commitem, który wprowadził rejestr, plaster został pominięty.

Ryzyko

Plaster zaszywa wybory na sztywno, a zaszycia przeżywają. Zwykłą porażką jest to, że kroki 5 i 6 nigdy się nie wydarzają, bo pierwszy plaster "działa", zostawiając system, w którym jedyny dostawca jest przyspawany, a szwy wylądowały tam, gdzie było wygodnie w drugiej godzinie. Zaplanuj poszerzanie jako pracę w tej samej partii, a nie jako kontynuację, której nikt nie sfinansuje.

Drugi koszt jest prawdziwy: przepuszczenie plastra pierwszego przez żywą zależność zewnętrzną czyni ten pierwszy test wolnym, płatnym i czasem zawodnym. Nagraj go i odtwarzaj po tym, jak zaistnieje — nagranie wywołania, którego nigdy nie wykonałeś, nie jest możliwe, i o to właśnie chodzi w tej kolejności.

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-thin-vertical-slice/SKILL.md

Integralność

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

cc2b4e8524f6a9a839d70effa69a32287a69eb70dba16321bffb74ae39c302e6

Przeczytaj kartę w repozytorium