AIDive

Pakiet do filmu

pi agent toolkit: pięć pakietów, SDK, tabela werdyktów i checklista na poniedziałek

10 min czytania

TL;DR

  • pi to monorepo na licencji MIT, które dostarcza harness agenta kodującego jako pięć osobnych pakietów: warstwę API modeli, pętlę agenta, bibliotekę UI do terminala, sam coding agent i pakiet telemetrii. Możesz wziąć jeden klocek albo wszystkie pięć.
  • CLI to kompletny coding agent od pierwszego dnia: cztery domyślne narzędzia, historia sesji w kształcie drzewa z fork i resume, licznik kosztów na żywo, a do tego czyta AGENTS.md lub CLAUDE.md, które już masz w repo.
  • Prawdziwa wartość leży w SDK: createAgentSession plus model runtime plus session manager daje działającego agenta w około dziesięciu liniach TypeScriptu, a defineTool dodaje typowane własne narzędzie bez osobnego procesu i bez protokołu.
  • Koszt tej przejrzystości to praca: brak wbudowanych pytań o uprawnienia, izolacja po twojej stronie, linia wersji sprzed 1.0 (v0.84) i około stu otwartych issues.
  • Zachowaj swój codzienny harness, a pi używaj jako stanowiska testowego, które pokazuje, co ten harness ukrywa. Buduj na nim produkty tylko wtedy, gdy godzisz się samodzielnie odpowiadać za zabezpieczenia.

Co mówią źródła

pi to monorepo: jedno repozytorium z pięcioma osobno publikowanymi pakietami, z których każdy odpowiada za jedną warstwę harnessu s2. pi-ai to ujednolicone API do dostawców modeli (OpenAI, Anthropic, Google i inni za jednym interfejsem), obsługuje streaming odpowiedzi, bloki reasoningu z poziomami thinking oraz dynamiczne wykrywanie modeli oferowanych przez każdego dostawcę s2. pi-agent-core to sama pętla agenta: stan rozmowy i cykl, który wysyła wiadomość, odczytuje wywołania narzędzi, wykonuje je i odsyła wyniki s2. pi-tui to biblioteka renderowania w terminalu z differential rendering, więc przerysowuje tylko to, co zmieniło się na ekranie s2. pi-coding-agent składa te klocki w CLI, które instalujesz, a pi-telemetry pozwala podpiąć własne metryki użycia bez zależności od vendora s3.

Liczby adopcji potwierdzają ten projekt: 92 123 gwiazdki, 11 400 forków i ponad 5 700 commitów, wszystko na licencji MIT, która pozwala używać, modyfikować i redystrybuować, także wewnątrz produktu komercyjnego s1. Tempo wydań utrzymało się przez całe lato: trzy wydania w pierwszych dwóch tygodniach sierpnia, z v0.84.2 opublikowaną 14. s4.

Instalacja to jedno polecenie, npm install -g --ignore-scripts @earendil-works/pi-coding-agent, a flaga ignore-scripts ma znaczenie: nie pozwala zależnościom uruchamiać ich skryptów instalacyjnych, jednej z najczęściej wykorzystywanych powierzchni ataku w npm s3. Po połączeniu z dostawcą poleceniem login dolny pasek pokazuje bieżący folder, sesję, zużyte tokeny i koszt w czasie rzeczywistym, więc każde zapytanie jest wyceniane w chwili wysłania, a nie na koniec miesiąca s3.

Sesje to cecha wyróżniająca. Każda rozmowa jest zapisywana jako JSONL w twoim folderze domowym, posortowana według projektu, a historia jest drzewem, nie linią: fork wraca do dowolnego punktu i rozgałęzia się od niego, tree przełącza między gałęziami, a resume otwiera dowolną dawną sesję, nawet po tygodniach, bo wszystko leży lokalnie s3. Model dostaje domyślnie tylko cztery narzędzia: read, write, edit i bash, bardzo mało w porównaniu z agentami na rynku, i to celowo s3. Konfiguracja działa według tej samej logiki: globalny settings.json w katalogu domowym, projektowy, który go nadpisuje, i system trust, który pyta, zanim zastosuje lokalne ustawienia folderu otwieranego po raz pierwszy. CLI ładuje też AGENTS.md lub CLAUDE.md z projektu jako kontekst, więc istniejące instrukcje działają bez przepisywania s3.

Po stronie SDK createAgentSession przyjmuje ModelRuntime i SessionManager i zwraca działającego agenta. SessionManager to wybór trwałości: w pamięci dla jednorazowego skryptu, na dysku, by odnaleźć rozmowy między uruchomieniami, a sesje utworzone przez SDK mają taką samą strukturę jak sesje samego CLI s8. Lista opcji createAgentSession pozwala też wybrać dokładny zestaw udostępnianych narzędzi, a nawet cały system prompt przez ResourceLoader, gdy chcesz zacząć od czystej kartki s8. Własne narzędzia idą przez defineTool: nazwa, opis, typowany schemat parametrów i funkcja execute, przekazane do createAgentSession w customTools. Narzędzie wygląda dla modelu dokładnie jak read czy bash, typowany schemat daje autouzupełnianie w edytorze, a agent dostaje już zwalidowane dane wejściowe. To ten sam mechanizm co serwer MCP, tyle że wszystko mieszka w twoim pliku, bez osobnego procesu i bez protokołu pośrodku s8.

Samo CLI dostosowuje się czterema mechanizmami, wszystkie w folderach projektu lub katalogu domowego: extensions (moduły TypeScript rejestrujące narzędzia, slash commands, skróty klawiszowe lub elementy UI, ładowane przy starcie z folderu extensions), skills (pakiety umiejętności zgodne ze standardem Agent Skills, wywoływane przez model lub ręcznie, więc istniejące skills da się użyć bez zmian), prompt templates oraz motywy przeładowywane w trakcie działania CLI s3. README streszcza filozofię w jednym zdaniu: dostosuj pi do swoich workflow, a nie odwrotnie, bez forka i bez grzebania we wnętrzu s3. Tam, gdzie duże harnessy wbudowują w produkt sub-agentów, plan mode i uprawnienia, pi celowo ich nie ma, żeby napisać je jako extensions albo zainstalować od społeczności s3.

Ograniczenia dokumentuje sam projekt. Nie ma wbudowanych pytań o uprawnienia: domyślnie agent może wykonać polecenie bash bez pytania. Oficjalny przewodnik po konteneryzacji to przyznaje i proponuje trzy wzorce izolacji, w tym Docker, ale skonfigurowanie jednego z nich, zanim wypuścisz agenta na ważną maszynę, to twoje zadanie s5. Dojrzałość to drugi koszt: v0.84, a nie 1.0, około stu otwartych issues i API wciąż oznaczone jako eksperymentalne, jak klient zdalnych sesji dodany w ostatnich tygodniach s7. Te same klocki obsługują już inny produkt: pi-chat stosuje je do automatyzacji rozmów s6.

Werdykt: zostaw, wypróbuj albo pomiń

Element pi Ocena Dlaczego
CLI jako stanowisko do nauki obok codziennego harnessu Zostaw Lokalne sesje drzewiaste, koszty na żywo, cztery narzędzia: widzisz każdą warstwę, którą ukrywa wbudowany harness
SDK (createAgentSession + defineTool) do produktów z agentami Wypróbuj teraz Dziesięć linii do działającego agenta, typowane własne narzędzia bez okablowania MCP, wymienny dostawca
CLI jako jedyny codzienny asystent Na razie pomiń Brak pytań o uprawnienia, izolacja po twojej stronie, zmiany API przed 1.0
Extensions jako zabezpieczenia (potwierdzanie bash, polityki) Wypróbuj Przewidziane miejsce na warstwę uprawnień; wersjonowane razem z projektem
Folder skills Zostaw Standard Agent Skills, twoje istniejące skills ładują się bez zmian
Eksperymentalne API (klient zdalnych sesji) Pomiń Oznaczone jako eksperymentalne, mogą się zmienić przed 1.0

Do zrobienia w poniedziałek

  • Zainstaluj CLI przez npm install -g --ignore-scripts @earendil-works/pi-coding-agent, uruchom pi, połącz dostawcę poleceniem login i obserwuj pasek kosztów podczas jednego prawdziwego zadania.
  • Otwórz repo, które ma już AGENTS.md lub CLAUDE.md, i sprawdź, czy pi go podchwytuje; porównaj pierwsze odpowiedzi agenta z twoim zwykłym harnessem na tym samym prompcie.
  • Przeprowadź jedną rozmowę, potem zrób fork od wcześniejszego węzła i obierz inny kierunek; wylistuj ~/.pi/agent/sessions/, żeby zobaczyć pliki JSONL i ich foldery projektów.
  • Napisz dwudziestoliniowy our-agent.ts: zaimportuj createAgentSession, przekaż ModelRuntime i SessionManager w pamięci, zapytaj, co zawiera bieżący folder, uruchom przez npx tsx.
  • Dodaj jeden defineTool, który czyta coś z twojego systemu (wewnętrzne API, widok bazy, CSV), i przekaż go w customTools; potwierdź, że agent wywołuje go sam przy pasującym pytaniu.
  • Przed każdym uruchomieniem z bash na maszynie, na której ci zależy, wybierz jeden z trzech wzorców izolacji z przewodnika po konteneryzacji i skonfiguruj go.
  • Naszkicuj pierwsze extension, które przechwytuje wywołania bash i prosi o potwierdzenie przy poleceniach destrukcyjnych; trzymaj je w folderze extensions projektu pod kontrolą wersji.
  • Raz przejrzyj listę otwartych issues, żeby wiedzieć, które części się ruszają, zanim zaczniesz na nich budować.

Czytaj dalej

  • Przeczytaj dokumentację SDK, by poznać pełną listę opcji createAgentSession: zestaw narzędzi, system prompt przez ResourceLoader, session managery s8.
  • Przestudiuj trzy wzorce izolacji w przewodniku po konteneryzacji, zanim wypuścisz cokolwiek, co uruchamia bash na maszynie użytkownika s5.
  • Zajrzyj do pi-chat, żeby zobaczyć, jak te same pięć pakietów jest przearanżowanych pod automatyzację rozmów zamiast kodowania s6.
  • Przejrzyj folder packages i przeczytaj osobno pi-agent-core: to najmniejsza czytelna wersja pętli, którą uruchamia każdy wbudowany harness s2.
  • Śledź stronę wydań: od v0.84.0 do v0.84.2 wyszły w dwa tygodnie sierpnia, więc spodziewaj się notatek o zmianach dotyczących extensions s4.
  • Użyj otwartych issues jako mapy tego, co wciąż eksperymentalne, zaczynając od klienta zdalnych sesji s7.
  • Wykorzystaj ponownie skills napisane dla innych narzędzi: folder skills w pi jest zgodny ze standardem Agent Skills s3.

Źródła

FAQ

Czy pi może dziś zastąpić mojego codziennego coding agenta?

Nie jako zamiennik. Dostarczany jest bez pytań o uprawnienia, izolacja jest po twojej stronie, a linia wersji jest sprzed 1.0 z około stu otwartych issues. Zostaw obecny harness do pracy i uruchamiaj pi obok.

Czy potrzebuję MCP, żeby dać pi własne narzędzie?

Nie. defineTool przyjmuje nazwę, opis, typowany schemat parametrów i funkcję execute, a narzędzie przekazujesz do createAgentSession w customTools. Zachowuje się jak narzędzie wbudowane, bez osobnego procesu i protokołu.

Czy moje AGENTS.md, CLAUDE.md i skills będą działać?

Tak. CLI automatycznie ładuje AGENTS.md lub CLAUDE.md z projektu, a jego folder skills jest zgodny ze standardem Agent Skills, więc istniejące skills ładują się bez zmian.

Dlaczego tylko cztery domyślne narzędzia?

read, write, edit i bash to cały zestaw domyślny, znacznie mniej niż w agentach na rynku, a projekt przedstawia to jako świadomy wybór. Wszystko inne dodajesz celowo przez customTools lub extension.