W każdym projekcie programistycznym przychodzi moment, kiedy zdajesz sobie sprawę, że budowałeś nie to, co trzeba. Spędziłeś tygodnie pisząc router wiadomości, silnik wykonywania narzędzi, menedżer stanu rozmów i system ponawiania — a potem odkrywasz, że dostawca AI już to wszystko obsługuje, lepiej niż Ty byś potrafił, w jednym wywołaniu API.
Ten moment doprowadził do architektury NanoClaw. Cały rdzeń — część, która zamienia wiadomość WhatsApp w odpowiedź agenta AI z użyciem narzędzi, przeglądaniem internetu, dostępem do plików i wieloturową rozmową — to około 500 linii TypeScript. Nie 500 linii kodu klejącego, który importuje 50 000 linii frameworka. Pięćset linii, łącznie, zbudowanych na Claude Agent SDK od Anthropic.
Reakcja deweloperów, którzy po raz pierwszy czytają kod źródłowy, to zwykle niedowierzanie, a potem pytanie, które naprawdę się liczy: „Gdzie jest reszta?"
Co Claude Agent SDK tak naprawdę robi
Większość frameworków agentów AI istnieje, bo historycznie API modeli językowych były bezstanowe i proste. Wysyłałeś prompt, dostawałeś odpowiedź. Jeśli chciałeś użycia narzędzi, musiałeś sam zbudować pętlę wykonywania narzędzi. Jeśli chciałeś wieloturowej rozmowy, musiałeś sam zarządzać historią wiadomości. Jeśli chciałeś, żeby model wybierał między wieloma narzędziami, musiałeś sam zbudować logikę routingu.
Claude Agent SDK zmienia to równanie fundamentalnie. SDK nie tylko wywołuje API Claude — uruchamia pętlę agenta. Dajesz mu prompt systemowy, zestaw narzędzi i wiadomość użytkownika. SDK obsługuje całą resztę: wysyła wiadomość do Claude, odbiera odpowiedź, sprawdza, czy Claude chce użyć narzędzia, wykonuje narzędzie, wysyła wynik z powrotem do Claude i powtarza, aż Claude wygeneruje końcową odpowiedź. Cała pętla użycia narzędzi — to, na co większość frameworków poświęca tysiące linii implementacji — to jedno wywołanie funkcji.
To nie jest cienki wrapper. SDK obsługuje streaming, logikę ponawiania, liczenie tokenów i stan rozmowy. Zarządza wymianą między Claude a narzędziami przez wiele tur, obsługując przypadki brzegowe jak awarie wykonywania narzędzi i limity okna kontekstu. Złożoność, której NanoClaw nie musi implementować, nie jest brakująca — została zepchnięta w dół, do dobrze przetestowanego SDK utrzymywanego przez zespół inżynierów Anthropic.
Co NanoClaw tak naprawdę buduje
Skoro SDK obsługuje pętlę agenta, co tak naprawdę robi 500 linii NanoClaw? Odpowiedź: wszystko wokół pętli — części specyficzne dla uruchamiania osobistego asystenta AI, a nie tylko wywoływania API.
Pierwsza odpowiedzialność to integracja kanałów. NanoClaw łączy się z WhatsApp przez bibliotekę Baileys, odbiera wiadomości i kieruje je do odpowiedniego kontenera agenta. To klej między „ktoś wysłał wiadomość na WhatsApp" a „agent musi przetworzyć tę wiadomość". To nie jest skomplikowany kod, ale jest niezbędny — bez niego agent nie ma sposobu dotarcia do użytkowników tam, gdzie już są.
Druga odpowiedzialność to orkiestracja kontenerów. Każda rozmowa agenta działa wewnątrz własnego kontenera Linux — Apple Container na macOS, Docker na Linux. NanoClaw tworzy kontenery, montuje odpowiednie katalogi, przekazuje sekrety przez stdin i zbiera odpowiedzi. To granica bezpieczeństwa, która zapobiega dostępowi skompromitowanego agenta do czegokolwiek poza jego sandboxem. Zarządzanie cyklem życia kontenera to może 80 linii kodu, ale te 80 linii to różnica między agentem, któremu można zaufać z prawdziwymi danymi uwierzytelniającymi, a takim, któremu nie można.
Trzecia odpowiedzialność to trwała pamięć. NanoClaw utrzymuje bazę danych SQLite z rozmowami, stanem grup i zaplanowanymi zadaniami. Każda grupa WhatsApp dostaje własny plik CLAUDE.md, który służy jako długoterminowa pamięć agenta dla tej grupy. System pamięci jest prosty — celowo — bo złożona część pamięci (decydowanie, co jest istotne, co przywołać, jak użyć kontekstu) jest obsługiwana przez samego Claude.
Czwarta odpowiedzialność to zaplanowane zadania. Użytkownicy mogą prosić agenta o wykonanie rzeczy o określonych porach — „przypomnij mi o 15:00" lub „sprawdzaj tę stronę co rano". Harmonogram NanoClaw, podobny do crona, uruchamia kontenery agentów we właściwych momentach, co jest małą, ale naprawdę przydatną funkcją, która zamienia reaktywnego chatbota w proaktywnego asystenta.
Dlaczego 500 linii ma znaczenie
Liczba linii to nie metryka próżności. To bezpośrednia miara powierzchni utrzymania, powierzchni błędów i obciążenia poznawczego wymaganego do zrozumienia systemu.
Kiedy pojawia się bug w rdzeniu NanoClaw, jest 500 linii, w których może się znajdować. Deweloper może przeczytać całą bazę kodu w niecałą godzinę i zrozumieć każdą podjętą decyzję. Porównaj to z frameworkami mającymi 50 000 linii kodu rdzenia — znalezienie buga oznacza nawigowanie po abstrakcjach, rozumienie systemów pluginów i śledzenie wykonania przez warstwy pośrednictwa, które istnieją, by wspierać funkcje, których możesz nawet nie używać.
Implikacje bezpieczeństwa są równie konkretne. Każda linia kodu to potencjalna podatność. 500-liniowy rdzeń NanoClaw ma mniejszą powierzchnię ataku niż parsery konfiguracji większości frameworków. Izolacja kontenerowa, przekazywanie sekretów przez stdin, listy dozwolonych montowań — te funkcje bezpieczeństwa są zaimplementowane w kodzie wystarczająco małym, by go w całości zaudytować w jedno popołudnie.
A historia aktualizacji jest prosta. Kiedy Anthropic wypuści nową wersję Claude Agent SDK z lepszym użyciem narzędzi, szybszym streamingiem lub nowymi możliwościami, NanoClaw dostaje te ulepszenia aktualizując jedną zależność. Nie ma warstwy abstrakcji frameworka, którą trzeba zaktualizować, żeby udostępnić nowe funkcje SDK. SDK jest frameworkiem.
Filozofia niebudowania
Najtrudniejszą częścią architektury NanoClaw nie było jej budowanie — było decydowanie, czego nie budować. Pokusa dodania własnego silnika wykonywania narzędzi, wyrafinowanego systemu odzyskiwania pamięci, warstwy abstrakcji wielu dostawców, marketplace'u pluginów — to wszystko rzeczy, które inne frameworki zbudowały, i wszystko rzeczy, których NanoClaw celowo nie ma.
Każda z tych funkcji dodałaby tysiące linii kodu, dziesiątki potencjalnych bugów i tygodnie obciążenia utrzymaniowego. I każda powielałaby funkcjonalność, którą Claude Agent SDK już zapewnia lub którą sam Claude obsługuje lepiej niż jakikolwiek ręcznie pisany kod.
Rezultatem jest projekt, w którym interesujące decyzje są architektoniczne, nie implementacyjne. Jak powinny być izolowane kontenery? Jak powinny być przekazywane sekrety? Jak powinna być ograniczona pamięć per grupa? To są pytania, które mają znaczenie dla osobistego asystenta AI, i to są pytania, na które odpowiada 500 linii NanoClaw.
Następnym razem, gdy będziesz oceniać framework agentów AI, nie licz funkcji. Licz linie. Framework z najmniejszą liczbą linii nie jest najmniej zdolny — może być tym, który zrozumiał problem wystarczająco dobrze, by pozwolić dostawcy AI wykonać ciężką robotę.