AIDive

Wewnątrz pi: zestaw z 92 000 gwiazdek na własnego agenta

AIDive · Opublikowano

Agenty do kodowania

Twój agent to czarna skrzynka

Claude Code, Codex i Gemini CLI to agent harness'y zaprojektowane przez kogoś innego — a jeśli spędzasz w jednym z nich dzień pracy, żyjesz z tą decyzją projektową. Chcesz zmienić jedno zachowanie, dodać narzędzie, zaostrzyć regułę uprawnień? Czekasz, aż vendor zechce to wypuścić. Nie wiesz, co jest w system prompt, nie widzisz pętli, która uruchamia narzędzia, i nie możesz zmienić niczego z tego — mimo że te narzędzia stały się głównym warsztatem tysięcy deweloperów.

Jeden projekt open source poszedł w zupełnie inną stronę: pi, toolkit, który dostarcza części zamienne do złożenia własnego agenta, od konektora modelu po interfejs. W pierwszym roku zdobył 92 000 gwiazdek na GitHubie i wydaje niemal co tydzień. Ten artykuł opisuje, co pi naprawdę daje w pudełku, jak zbudować własnego agenta jego SDK-iem, i szczery werdykt wobec gotowych harness'ów.

Czym naprawdę jest harness

Harness to cała maszyneria wokół modelu językowego, która zamienia go w działającego agenta. Sam model umie tylko jedno: czytać tekst i tworzyć tekst. Nie czyta twoich plików, nie uruchamia żadnej komendy, i nie pamięta niczego z sesji na sesję. Cała reszta to harness — system prompt, który ramuje model, narzędzia, jakie mu udostępniono, pętla wykonująca wywołania narzędzi i zwracająca wyniki, i interfejs w twoim terminalu.

Harness decyduje też o szczegółach ważnych na co dzień: jak historia się kompresuje, gdy kontekst się przepełnia, jak błąd narzędzia wraca do modelu, co się loguje, a co nie. Claude Code to harness. Codex też. Gdy agent robi na tobie wrażenie, znaczna część zasługi idzie do tej maszynerii, nie do modelu — podłącz ten sam model do dwóch różnych harness'ów, a dostaniesz dwóch agentów zupełnie innego poziomu.

pi, zrobiony przez Earendil Works, tnie tę maszynerię na klocki wielokrotnego użytku. Możesz użyć jego coding agenta wprost, albo brać klocki jeden po drugim i zbudować własnego. To druga opcja nas interesuje.

Wewnątrz toolkitu pi

pi to monorepo — jedno repozytorium mieszczące pięć osobno publikowanych paczek — a każda paczka pokrywa jedno piętro harness'u:

Paczka Co robi
pi-ai Zunifikowane API do OpenAI, Anthropic, Google i reszty: streaming odpowiedzi, bloki rozumowania z poziomami myślenia, dynamiczne wykrywanie modeli każdego dostawcy. Zmiana laboratorium to zmiana jednego argumentu.
pi-agent-core Sama pętla agenta: stan rozmowy, plus cykl, który wysyła wiadomość, czyta wywołania narzędzi, wykonuje je i zwraca wyniki, aż zadanie się skończy. Pokręcone przypadki — narzędzie, co zawodzi, odpowiedź ucięta w połowie, równoległe wywołania — są już obsłużone.
pi-tui Biblioteka renderowania terminala z renderowaniem różnicowym: przerysowuje tylko to, co zmienia się na ekranie.
pi-coding-agent Pełny coding agent złożony z powyższych klocków — dowód, że toolkit wystarcza do zbudowania gotowego produktu.
pi-telemetry Podepnij własne metryki użycia bez zależności od vendora.

Pętla agenta to dokładnie ta część, którą napisałbyś źle od zera; napisanie jej porządnie to tygodnie pracy, a ty masz to za jeden import. Zespół stosuje ten sam przepis gdzie indziej: osobne repozytorium pi-chat wykorzystuje te same klocki do automatyzacji rozmów.

Liczby pokazują, że formuła działa:

Metryka Wartość
Gwiazdki na GitHubie 92 123
Forki 11 400
Commity 5 700+
Licencja MIT
Wydania w pierwszych dwóch tygodniach sierpnia 2026 3 (v0.84.2 wyszła 14 sierpnia)

Licencja MIT oznacza, że możesz używać, zmieniać i redystrybuować pi bez ograniczeń, nawet w komercyjnym produkcie. pi to nie kolejny framework: to kompletny harness dostarczany w częściach, utrzymywany w stałym tempie.

CLI w praktyce

CLI pi to już złożony coding agent, który dostajesz zanim jeszcze dotkniesz jakiegokolwiek kodu, i właśnie od niego zaczniesz. Instalacja to jedna linia, a flaga --ignore-scripts to nie drobiazg: blokuje twoim zależnościom uruchamianie własnych skryptów instalacyjnych, jedną z najczęściej nadużywanych powierzchni ataku w npm. Uruchom pi, połącz swojego dostawcę komendą login, i masz coding agenta prosto w twoim terminalu. Pasek stanu pokazuje aktualny folder, sesję, zużyte tokeny i koszt w czasie rzeczywistym — widzisz wycenę każdego żądania w momencie wysyłki, zamiast odkrywać rachunek na koniec miesiąca.

Komendy slash pokrywają codzienność: model do zmiany modelu w locie, compact do streszczania historii, gdy kontekst puchnie, export do wyciągnięcia rozmowy, settings na resztę. Jeden plik markdown w folderze prompts staje się komendą, którą wywołujesz wpisując nazwę.

Prawdziwy podpis pi to obsługa sesji. Każda rozmowa zapisuje się jako JSONL w folderze domowym, według projektu — a historia to tak naprawdę drzewo, nie linia. Możesz wrócić do dowolnego punktu rozmowy i pójść inną drogą komendą fork, a potem przechodzić między gałęziami przez tree. Nieudany prompt teraz nic już nie kosztuje: wracasz do poprzedniego węzła i próbujesz znów, nie tracąc drugiej gałęzi. Skoro wszystko trzyma się lokalnie, resume wraca cię do dowolnej starej sesji, nawet tygodnie później. Ani Claude Code, ani Codex nie oferują nawigacji po historii w tej formie.

Domyślnie model dostaje tylko cztery narzędzia: read, write, edit i bash. To bardzo mało wobec agentów na rynku, i to celowe (wrócimy do tego niżej). Konfiguracja rządzi się tą samą logiką: jeden globalny plik ustawień w folderze domowym, jeden na projekt, co go nadpisuje, i system zaufania, który pyta, zanim zastosuje lokalne ustawienia folderu otwartego po raz pierwszy. Jeśli migrujesz, pi automatycznie wczytuje istniejące pliki AGENTS.md albo CLAUDE.md jako kontekst, więc istniejące instrukcje działają bez przepisywania.

Budujemy własnego agenta

Budowa agenta SDK-iem pi zaczyna się od jednego importu: createAgentSession, któremu przekazujesz model runtime i session manager, zwraca działającego agenta. Session manager to wybór trwałości — pamięć dla jednorazowego skryptu, albo dysk, żeby odnajdywać rozmowy z uruchomienia na uruchomienie.

Wypróbowaliśmy to na lokalnym projekcie. Nasz skrypt pyta, co jest w aktualnym folderze; agent wywołuje swoje narzędzie read, czyta folder i odpowiada. To cała pętla, napisana przez nas, w jakichś dziesięciu liniach TypeScript. Sesje, które tworzy SDK, mają tę samą strukturę drzewa co CLI — każda wiadomość jest powiązana z rodzicem — więc gałęzienie historii działa też w twoim własnym kodzie.

Własne narzędzia to miejsce, gdzie robi się ciekawie. defineTool bierze nazwę, opis, typowany schemat parametrów i funkcję execute, i twoje narzędzie pojawia się modelowi dokładnie jak read albo bash. Napisaliśmy jedno, co odpytuje listę filmów kanału, wrzucone do customTools, i agent sam je wywołał od pierwszego pasującego pytania. To w zasadzie ten sam mechanizm co serwer MCP, tylko że wszystko żyje w twoim pliku — bez oddzielnego procesu i bez protokołu pomiędzy. Skoro schemat parametrów jest typowany, twój edytor autouzupełnia argumenty, a agent dostaje wejścia już zwalidowane.

Kontrolujesz też model, poziom myślenia (od zupełnie wyłączonego do maksimum), dokładną listę narzędzi widocznych dla modelu, a nawet cały system prompt przez resource loader, jeśli chcesz zacząć od czystej kartki. Do wyświetlania session.subscribe daje ci każde zdarzenie — strumieniowany tekst, wywołania narzędzi, błędy — które przekierowujesz gdzie chcesz: terminal, bota do wiadomości, albo pipeline CI, co komentuje twoje pull requesty. W jedno popołudnie przechodzisz od używania agenta do napisania własnego, i wreszcie wiesz, co dzieje się w każdym obrocie pętli.

Rozszerzanie bez forka

CLI pi dostosowuje się przez cztery mechanizmy, wszystkie w zwykłych folderach twojego projektu albo home:

  • Extensions — moduły TypeScript, które rejestrują narzędzia, komendy slash, skróty klawiszowe albo elementy UI. Wrzucasz plik do folderu extensions, ładuje się przy starcie. Tu na przykład napisałbyś strażnika uprawnień: rozszerzenie, co przechwytuje komendy bash i prosi o potwierdzenie przed niebezpiecznymi.
  • Skills — paczki możliwości zgodne ze standardem Agent Skills, tym samym, co spopularyzował Anthropic, więc twoje istniejące skills są używane ponownie w niezmienionej formie.
  • Prompts — wielokrotnego użytku prompty jako zwykłe pliki markdown.
  • Themes — przeładowują się na gorąco, gdy CLI działa.

Wszystko to instaluje się jak każda paczka: pi install bierze paczkę npm albo repo git, jedna komenda aktualizuje wszystko. Dokumentacja streszcza filozofię w jednym zdaniu: dostosuj pi do swoich workflow, nie odwrotnie, bez forka czy łatania wnętrza.

To odwrotność dużych harness'ów. Tam, gdzie Claude Code wbudowuje sub-agentów, plan mode i uprawnienia w produkt, pi celowo zostawia je na zewnątrz — do zbudowania jako rozszerzenie albo zainstalowania od społeczności. Zakład jest jasny: minimalny rdzeń, który ledwo się rusza, a cała personalizacja żyje po twojej stronie, w plikach, które wersjonujesz razem z projektem.

Prawdziwa granica

Przejrzystość pi płaci się pracą, a ten koszt ma trzy części.

Najpierw guardraile: domyślnie nie ma żadnych wbudowanych próśb o zgodę, więc agent może uruchomić komendę bash, nic cię nie pytając. Oficjalna dokumentacja to przyznaje i proponuje trzy wzorce izolacji, w tym Docker — ale ustawienie ich, zanim wypuścisz agenta na ważną maszynę, to twoja odpowiedzialność.

Potem dojrzałość: to jest v0.84, nie 1.0, z jakimiś stu otwartymi problemami i kilkoma wciąż eksperymentalnymi API, jak zdalny klient sesji dodany w ostatnich tygodniach. To, co działa dzisiaj, może zepsuć się w kolejnym wydaniu; to normalna cena projektu, co posuwa się tak szybko.

I w końcu, czas. Każda wygoda, jaką Claude Code daje od razu — plan mode, sub-agenci, drobiazgowe uprawnienia — tutaj staje się projektem, który budujesz sam, albo paczką społeczności, za którą gonisz, licząc na utrzymanie. Ekosystem rozszerzeń ma dopiero rok: znajdziesz więcej dziur do załatania niż gotowych paczek. Nawet instalacja pokazała już poziom czujności, jaki to wymaga, przez swoją flagę --ignore-scripts, i musisz utrzymać ten poziom przez cały łańcuch. Jeśli twój cel to wysłać kod dziś wieczorem, pi najpierw cię spowolni, zanim przyspieszy — nie zmieniaj głównego harness'u w tym tygodniu tylko przez to wideo.

Dla kogo naprawdę jest pi

pi jest dla deweloperów, co budują produkty z agentami, nie tylko z jednym. Dla nich to pewnie najlepsza inwestycja w naukę teraz: zainstaluj CLI, napisz agenta na dwadzieścia linii SDK-iem, i daj mu jedno swoje narzędzie. Zrób to, a zrozumiesz Claude Code lepiej niż większość jego użytkowników.

Jeśli chcesz dziś tylko produktywnego asystenta, zostań przy zintegrowanym harness'ie i wróć, gdy 1.0 przyniesie guardraile: wartość pi jest w rozumieniu i kontroli, nie w natychmiastowym komforcie. Między tymi dwoma jest bezpieczny środek — zostaw Claude Code do pracy, a pi użyj jako poligonu, żeby zrozumieć, co ukrywa twoje główne narzędzie.

Najbardziej zapamiętujemy, że harness'y już nie są czarnymi skrzynkami: części leżą na stole, udokumentowane, na licencji MIT. Następnym razem, gdy agent zrobi na tobie wrażenie albo zirytuje, będziesz dokładnie wiedzieć, na którą część patrzeć.

Źródła

Najczęstsze pytania

Czym jest pi, ten toolkit do agentów AI?
pi to open source'owe monorepo na licencji MIT od Earendil Works, które dzieli agent harness AI na pięć paczek wielokrotnego użytku — pi-ai (zunifikowane API modeli), pi-agent-core (pętla agenta), pi-tui (interfejs terminala), pi-coding-agent (pełny coding agent) i pi-telemetry (metryki). Możesz użyć jego coding agenta wprost albo złożyć własnego z tych części.
Jak zbudować własnego agenta AI z pi?
Zaimportuj createAgentSession z SDK, przekaż mu model runtime i session manager (w pamięci albo na dysku), a dostaniesz działającą pętlę agenta w jakichś dziesięciu liniach TypeScript. Dodawaj własne możliwości przez defineTool, który bierze nazwę, opis, typowany schemat parametrów i funkcję execute.
Czy pi zastępuje Claude Code?
Jeszcze nie jako codzienne narzędzie: pi celowo przychodzi bez wbudowanych monitów o zgodę, bez plan mode czy sub-agentów, a przy v0.84 jego API wciąż mogą się psuć między cotygodniowymi wydaniami. Jego wartość dziś to kontrola i zrozumienie — wielu deweloperów zostaje przy Claude Code do pracy, a pi używa jako poligonu.
Jakie jest pięć paczek w monorepo pi?
pi-ai (jedno API do OpenAI, Anthropic, Google i innych, ze streamingiem i poziomami rozumowania), pi-agent-core (stan rozmowy i pętla wykonywania narzędzi), pi-tui (różnicowe renderowanie terminala), pi-coding-agent (złożony coding agent) i pi-telemetry (metryki użycia niezależne od vendora).
Jak pi obsługuje własne narzędzia w porównaniu do MCP?
defineTool rejestruje narzędzie bezpośrednio w twoim kodzie z typowanym schematem parametrów, więc pojawia się modelowi dokładnie jak wbudowane narzędzia read czy bash. To ten sam mechanizm co serwer MCP, ale bez osobnego procesu i bez warstwy protokołu, a typowany schemat daje autouzupełnianie w edytorze i już zwalidowane wejścia.
Czy pi jest gotowe na produkcję?
pi jest na v0.84 z jakimiś stu otwartymi problemami i kilkoma wciąż eksperymentalnymi API, a domyślnie agent może uruchamiać komendy shell bez pytania o zgodę. Dokumentacja proponuje trzy wzorce izolacji (w tym Docker); zastosuj jeden z nich, zanim użyjesz pi na ważnej maszynie.

Powiązane filmy