-
Notifications
You must be signed in to change notification settings - Fork 0
Tutorial 3 Your First Agent Task pl
Cel: dodać zupełnie nową komendę do CLI — od początku do końca — kierując
swoim agentem. Dodamy lockedin endorse: rekomenduje zupełnie obcych ludzi za
umiejętności, których niemal na pewno nie mają. W stylu marki.
To serce samouczka. Przećwiczysz prawdziwą pętlę: specyfikacja → testy → implementacja → zielona bramka → recenzja.
← Poprzednio: Samouczek 2 Jak działa kod · Dalej: Samouczek 4 Formułowanie promptów i recenzja
Zanim cokolwiek podpowiesz, napisz specyfikację sam, prostym językiem. Niejasne prośby dają niejasny kod — od człowieka lub agenta.
endorsewypisuje 5–7 linii, każda rekomendująca losowo wybraną osobę (użyj istniejącej puliNAMES) za losowo wybraną buzzwordową umiejętność (nowa pula). Kończy się satyryczną puentą w jednej linii. Musi być osiągalna jakolockedin endorse, jako sesyjne/endorsei pojawiać się whelp. Cała losowość musi używać funkcji pomocniczych z ziarnempick/shuffle, aby wyjście pozostało deterministyczne.npm testmusi pozostać zielony i powinien być nowy test, który przypina co najmniej jeden niezmiennik.
Ten akapit to rzecz, którą przekażesz agentowi. Zauważ, że nazywa ograniczenia z rozdziału 2 (RNG z ziarnem, bramka testowa, nawyk niezmienników).
Zacznij od poproszenia o plan. To Twoja szansa, aby wychwycić złe podejście, zanim zmienią się jakiekolwiek pliki.
„Chcę dodać komendę
endorsedo LockedIn CLI. Oto specyfikacja: [paste your spec]. Zanim napiszesz kod, powiedz mi, które pliki zmienisz i jakie jest Twoje podejście, abym mógł to zatwierdzić. Trzymaj się istniejących wzorców dla komendy takiej jakconnect.”
Dobry plan wspomina: nowa pula SKILLS + renderEndorse() w src/lockedin.js,
podłączenie do dispatch() i handleSlash(), dodanie wiersza do renderHelp(),
wyeksportowanie nowej funkcji/puli oraz dodanie testów w obu plikach testowych.
Jeśli plan pomija zasadę RNG z ziarnem albo testy, powiedz to teraz.
Poproś agenta, aby napisał testy przed implementacją. Testy-najpierw zamieniają Twoją specyfikację w coś wykonywalnego i utrzymują agenta w ryzach.
„Świetnie. Najpierw dodaj tylko testy, które padają: test jednostkowy, że
renderEndorse()zwraca tekst wspominający znaną umiejętność i co najmniej 5 rekomendacji, oraz testcli.test.js, żelockedin endorsekończy się z 0 i drukuje rekomendację. Użyj stałego ziarna. Nie implementuj jeszczerenderEndorse— zobaczmy najpierw, jak testy padają.”
Uruchom je i patrz, jak padają z właściwego powodu (funkcja jeszcze nie istnieje):
npm testTeraz daj zielone światło implementacji:
„Teraz zaimplementuj to, aby te testy przeszły, trzymając się wzorca
connect. Dodaj pulęSKILLSokoło 25 buzzwordowych umiejętności,renderEndorse(), która zwraca string, podłączdispatchihandleSlash, dodaj wierszhelpi wyeksportuj to, co dodałeś. Używaj tylkopick/shuffledo losowości.”
To, co agent wyprodukuje, powinno wyglądać bardzo podobnie do reszty pliku. Na
przykład pula SKILLS i renderer:
const SKILLS = [
'Thought Leadership', 'Synergia', 'Storytelling', 'Vibe’y',
'Strategiczna Drzemka', 'Alignment Interesariuszy', 'Radykalna Szczerość', /* ...~25 total... */
];
function renderEndorse() {
const people = shuffle(NAMES).slice(0, 5 + Math.floor(rand() * 3)); // 5–7
const skills = shuffle(SKILLS);
const out = [''];
people.forEach((n, i) =>
out.push(' ✔ Polecono ' + n + ' za ' + skills[i % skills.length]));
out.push('', ' Polecasz 6 nieznajomych za umiejętności, których nie potrafisz zweryfikować. Odwdzięczą się rekomendacją w ciągu godziny.');
return out.join('\n');
}…plus po jednej linii w dispatch() i handleSlash(), wiersz w renderHelp()
oraz SKILLS, renderEndorse dodane do module.exports.
npm testZielone? Właśnie wysłałeś funkcję z agentem, testy-najpierw. Nie zielone? To normalne — przejdź do pętli iteracji z rozdziału 4 i powiedz agentowi dokładnie, co padło.
Następnie rzuć okiem na prawdziwą rzecz (testy sprawdzają tekst, ale i tak powinieneś spojrzeć):
node bin/lockedin.js endorse
LOCKEDIN_SEED=1 node bin/lockedin.js endorse # reproducibleNigdy nie akceptuj diffa, którego nie przeczytałeś. Przejrzyj konkretnie te rzeczy:
-
Czy trzymał się wzorca? Nowa komenda powinna odzwierciedlać
connect— żadnych nowych zależności, żadnegoconsole.logwewnątrzsrc/. -
Tylko RNG z ziarnem? Poszukaj w diffie
Math.random. Nie powinno go być. - Czy dotknął czegoś, czego nie powinien? Zmiana powinna być addytywna; niepowiązane linie nie powinny się przesuwać.
-
Czy nowy test jest sensowny? Powinien paść, jeśli ktoś później zepsuje
funkcję — a nie tylko sprawdzać
true.
Jeśli coś jest nie tak, poproś o poprawkę (rozdział 4). Jeśli jest dobrze, gotowe.
Przejdź całą powyższą pętlę na serio. Potem, dla dodatkowych punktów, poproś agenta, aby ją rozszerzył:
- „Spraw, aby
endorseprzyjmowało opcjonalne imię:lockedin endorse Adapowinno rekomendować konkretnie Adę. Dodaj test, utrzymaj bramkę zieloną.”
Zbudowałeś teraz funkcję od początku do końca. Ostatni rozdział dotyczy robienia tego płynnie — formułowania promptów i recenzowania jak inżynier prowadzący.
Tutorial
- 1 · Orientation
- 2 · How the Code Works
- 3 · Your First Agent Task
- 4 · Prompting & Reviewing
- 5 · Localization
Reference
Satire · Sátira · 風刺. Not affiliated with LinkedIn. GPL-3.0-or-later.