Tworzenie lokalnego klonu Angry Birds przy użyciu Qwen3.8-27B i Pi
Dowiedz się, jak skonfigurować w pełni lokalny przepływ pracy do programowania z wykorzystaniem AI, przy użyciu LM Studio i agenta Pi, aby stworzyć gralny poziom Angry Birds z pomocą Qwen3.8-27B.
Kilka tygodni temu mały projekt poboczny postanowił odpowiedzieć na nieco absurdalne pytanie: czy można stworzyć jedną rozgrywalną poziom w Angry Birds — z silnikiem fizyki, mechaniką procy, zawalającymi się wieżami i całym tym pakietem — używając wyłącznie lokalnego modelu działającego na zwykłym sprzęcie konsumenckim? Żadnych kluczy API chmurowych, żadnego opłacania według zużycia, żadnego kodu opuszczającego urządzenie.
To zadziałało. Ptaki latały po ekranie, drewniane bloki przewracały się, a świnie były miażdżone pod wpływem uderzenia. Modelem napędzającym to wszystko był Qwen3.8-27B, działający wewnątrz LM Studio i zarządzany przez Pi, agenta do programowania opartego na terminalu o otwartym kodzie źródłowym. Poniżej znajduje się pełny opis konfiguracji: wprowadzenie do modelu oraz wyjaśnienie, dlaczego jego możliwości przewyższają oczekiwania mimo że mieści się na zwykłym Macu, a także dokładne instrukcje instalacji LM Studio, Pi oraz łączenia tych narzędzi tak, aby Pi kierował swoje żądania do lokalnego modelu zamiast do usługodawcy online.
Dlaczego w ogóle korzystać z rozwiązania lokalnego?
Jasnym motywatorem jest koszt i kontrola. Pracowanie we wszystkim lokalnie daje możliwość:
- Braku opłat za API, niezależnie od tego, ile godzin poświęcasz na rozwijanie projektu hobby.
To, co tracisz, to surowa szybkość generowania oraz, tradycyjnie, jakość wyników. Jednak ta luka zmniejszyła się znacznie szybciej, niż większość ludzi przypuszcza, a Qwen3.8-27B jest solidnym przykładem tego, jak zdolny może stać się model o około 27 miliardach parametrów, gdy zostanie starannie wytrenowany i dobrze skwantyzowany pod kątem sprzętu konsumenckiego.
Poznaj model: Qwen3.8–27B
Qwen3.8-27B pochodzi z zespołu Qwen firmy Alibaba. Jest to model o dużej gęstości z obsługą obrazu, udostępniony na licencji Apache 2.0, więc można go swobodnie używać nawet w projektach komercyjnych. Zanim zdecydujesz się na pobranie pliku o wielkości 16+ GB, oto specyfikacje, które warto znać:
Architektura
- 27 miliardów parametrów, rozproszonych między 64 warstwami o ukrytej wielkości 5 120 wymiarów
- Hybrydowy schemat uwagi: powtarzane bloki łączące liniową „Gated DeltaNet” uwagę z standardową warstwą uwagi z bramkami, co pomaga modelowi zachować szybkość nawet wraz ze wzrostem kontekstu
- Wbudowane okno kontekstowe o pojemności 262 144 tokenów, rozszerzalne do 1 000 000
- Szkolenie obejmujące przewidywanie wielu tokenów, co znacząco zwiększa szybkość lokalnych inferencji
Wyniki benchmarków (jak podano przez Qwen, z porównaniami z Anthropic’s Opus 4.6 Max tam, gdzie to istotne):
Głównym wnioskiem jest to, że model o pojemności 27 miliardów parametrów potrafi dorównać, a nawet przewyższyć model o zamkniętej strukturze wag w testach związanych z programowaniem i zachowaniami agentów, co tłumaczy, dlaczego stanowi realną opcję do codziennego użytku w aplikacjach takich jak agent Pi. Są to dane podane przez same firmy, więc należy zachować pewien sceptycyzm, dopóki nie zostaną przeprowadzone niezależne testy — jednak wyniki z praktycznego wykorzystania w projekcie Angry Birds, opisanym później, są zgodne z tymi twierdzeniami.
Jedna rzecz, na którą należy zwrócić uwagę od razu: Qwen3.8-27B ma włączone rozszerzone „myślenie” (rozumowanie) jako standard, ustawione na poziom wysiłku xhigh. Jest to przydatne przy naprawdę trudnych zadaniach, ale oznacza też, że model może zużyć tysiące tokenów na proste zapytania, które nie wymagają tak długich rozważań. Do rutynowej pracy agenta programistycznego wystarczy obniżyć poziom wysiłku rozumowania do medium lub low w ustawieniach modelu w LM Studio – dzięki temu odpowiedzi są znacznie szybsze, przy niewielkiej utracie jakości. Zachowaj poziom xhigh na problemy, które rzeczywiście go wymagają.
Dostępne kwantyzacje do uruchamiania modelu lokalnie to GGUF i MLX, dostępne odpowiednio w rozdzielczości 4-bit, 5-bit, 6-bit i 8-bit. MLX to wersja stworzona specjalnie dla Apple Silicon.
Dla użytkowników Mac wymagania pamięciowe wyglądają mniej więcej w następujący sposób, co powinno pomóc określić, jaki poziom kwantyzacji będzie odpowiedni dla Twojego sprzętu:
Jako punkt odniesienia, Mac mini z chipem M4 i 32 gigabajtami wspólnej pamięci systemowej może uruchamiać wersję kwantyzowaną 4-bitową z szybkością około 5 do 6 tokenów na sekundę. To nie jest duża prędkość w bezwzględnych terminach, ale wystarcza do pracy agenta, którego zadaniem jest pisanie i edycja kodu, a nie transmisja tekstu na żywo. Na potężniejszych chipach Apple Silicon – serii Max lub Ultra – lub na wydajnej karcie graficznej Nvidia, prędkość znacznie rośnie; według niektórych doniesień, w silniejszych urządzeniach konsumenckich wydajność kwantyzowana wynosi od 15 do 30 tokenów na sekundę.
Krok 1: Zainstaluj LM Studio
LM Studio to aplikacja desktopowa, która odpowiada za ładowanie modelu lokalnie oraz udostępnianie go za pośrednictwem serwera API kompatybilnego z OpenAI. To właśnie z tym serwerem będzie komunikować się Pi.
Pobierz ją z oficjalnej strony pobierania — dostępne są wersje dla macOS, Windows i Linux.
Zainstaluj ją w taki sam sposób jak każdą inną aplikację desktopową, a następnie uruchom ją.
Krok 2: Pobranie Qwen3.8–27B wewnątrz LM Studio
- W LM Studio otwórz panel wyszukiwania/modeli.
- Znajdź
qwen/qwen3.8-27b, albo przejdź bezpośrednio na stronę tego modelu na stronie LM Studio.
xhigh do medium lub low w przypadku zadań kodowania i agentowych, z tych samych powodów omówionych wcześniej.Krok 3: Uruchomienie lokalnego serwera LM Studio
Wiele osób napotyka trudności na tym etapie — załadowanie modelu do interfejsu czatu nie sprawia automatycznie, że staje się on dostępny jako API.
- Przejdź do karty Developer w LM Studio.
- Włącz opcję Start Server.
- Domyślnie tworzy to punkt końcowy kompatybilny z OpenAI pod adresem
http://localhost:1234/v1.
Możesz sprawdzić, czy serwer działa, z terminala:
curl http://localhost:1234/v1/models
Odpowiedź w formacie JSON powinna zawierać wartość qwen/qwen3.8-27b (lub dokładny identyfikator modelu) — zapisz tę dokładną ścieżkę, ponieważ będzie ci potrzebna wkrótce.
Krok 4: Instalacja Pi
Pi to agent do programowania oparty na terminalu i o otwartym kodzie źródłowym. Jest zgodny z zasadą „przynieś własny klucz” i niezależny od konkretnego modelu, zaprojektowany od samego początku tak, by równie dobrze funkcjonować zarówno z usługodawcami chmurowymi, jak i z lokalnymi serwerami kompatybilnymi z OpenAI, takimi jak LM Studio lub Ollama.
Oficjalny instalator:
curl -fsSL https://pi.dev/install.sh | sh
Lub, jeśli wolisz użyć npm:
npm install -g @earendil-works/pi-coding-agent
Potwierdź, że instalacja się udała:
pi --version
Pełna dokumentacja dostępna jest pod adresem pi.dev/docs/latest.
Krok 5: Skieruj Pi na swój lokalny model LM Studio
Pi przechowuje konfigurację swojego usługodawcy w pliku ~/.pi/agent/models.json. Otwórz ten plik (utwórz go, jeśli jeszcze nie istnieje) i dodaj wpis odnoszący się do lokalnego serwera LM Studio:
{
"providers": {
"lmstudio": {
"baseUrl": "http://localhost:1234/v1",
"api": "openai-completions",
"apiKey": "lm-studio",
"models": [
{
"id": "qwen/qwen3.8-27b",
"input": ["text"],
"contextWindow": 65536,
"reasoning": true
}
]
}
}
}
W tym miejscu kilka szczegółów może zostać źle zrozumianych:
baseUrlmusi dokładnie odpowiadać adresowi pokazanemu w karcie Developer w LM Studio, który domyślnie tohttp://localhost:1234/v1.apiKeymoże zawierać dowolny tekst zastępczy — lokalny serwer LM Studio go nie zweryfikuje, ale Pi nie wyświetli modelu, jeśli to pole nie będzie wypełnione.models[].idmusi odpowiadać, znak po znaku, temu, co LM Studio zwraca z poleceniacurl http://localhost:1234/v1/models. Niewielka różnica jest najczęstszą przyczyną, dla której lokalny model nie pojawia się w oczekiwanym miejscu.contextWindowpowinien odzwierciedlać długość kontekstu, którą faktycznie skonfigurowałeś podczas ładowania modelu, a nie jego absolutny maksymalny limit.
Możesz również ustanowić go domyślnym dostawcą, edytując plik ~/.pi/agent/settings.json:
{
"defaultProvider": "lmstudio",
"defaultModel": "qwen/qwen3.8-27b"
}
Po ponownym uruchomieniu Pi — lub po wywołaniu /model w już otwartej sesji — wybierz lmstudio / qwen/qwen3.8-27b. Od tego momentu każda prośba wysyłana przez Pi pozostaje na twoim komputerze; nic nie jest wysyłane poza twoją lokalną siecią.
Budowa poziomu z Angry Birds
Gdy wszystko było już podłączone, kolejnym krokiem było zadanie Pi celowo niejasnego zlecenia: stworzenie jednego poziomu dostępnego w przeglądarce, inspirowanego grą Angry Birds — z mechaniką procy, fizyką pocisków, stosem bloków, które można rozbić, oraz świnią do przewrócenia — wszystko to zamknięte w jednej stronce HTML/JS/Canvas.
Ciekawe nie było tylko to, że udało się stworzyć działającą wersję już przy pierwszej prawdziwej próbie — to nastąpiło dopiero po obniżeniu intensywności rozumowania do poziomu medium. Przy poziomie xhigh model zużywał ogromną liczbę tokenów, analizując podstawowe stałe fizyki, zanim w ogóle napisał choćby jedną linię kodu. Gdy został prawidłowo dostosowany, potrafił logicznie rozumować na temat:
- mechaniki uruchamiania poprzez przeciągnięcie oraz ruch pocisku w przypadku procy
- podstawowego cyklu fizycznego obejmującego grawitację, zderzenia oraz przewracanie się bloków
- utrzymania całej struktury w postaci jednego, uporządkowanego pliku JavaScript, który można było edytować na przestrzeni kilku rund bez utraty kontroli nad tym, co już napisano
To właśnie ten rodzaj pracy z kodowaniem opartym na agentach, który ma być mierzony przez takie narzędzia jak SWE-bench Pro, Terminal-Bench i LiveCodeBench, a zachowanie modelu jest zgodne z tym, co sugerują te wyniki. To nie jest tylko powierzchowny trik chatbotu – to model zdolny do przeprowadzenia sesji kodowania obejmującej wiele plików i wielu etapów od początku do końca, w trybie całkowicie offline, na sprzęcie, który już masz na biurku.
Praktyczne wskazówki, jeśli samodzielnie to konfigurujesz
- Domyślnie wybierz średni poziom wysiłku analitycznego. Zachowaj
xhighna naprawdę trudne wyzwania architektoniczne lub algorytmiczne. W rutynowych pętlach agenta do kodowania przede wszystkim zwiększa opóźnienia, nie poprawiając wyników.
models.json, który nie odpowiada dokładnie identyfikatorowi podanemu przez LM Studio.Podsumowanie
Niedawno prośba o stworzenie gry opartej na fizyce, nad którą można by grać, przy użyciu modelu w pełni lokalnego brzmiałaby ambitnie. Dziś model składający się z 27 miliardów parametrów, zoptymalizowany tak, by sprawnie działał na zwykłym Macu, w połączeniu z lekkim agentem terminalowym o otwartym kodzie źródłowym, poradził sobie z tym zadaniem w ciągu popołudnia. Jeśli masz 24 GB lub więcej pamięci zintegrowanej, albo dość wydajną kartę graficzną, która w przeciwnym razie pozostaje bezczynna, to rozwiązanie stanowi naprawdę przyjemny i całkowicie bezkosztowy sposób, by zobaczyć, jak daleko zaszły lokalne narzędzia do programowania z wykorzystaniem sztucznej inteligencji.
Zasoby wspomniane w tym przewodniku:
Strona do pobrania LM Studio znajduje się pod adresem lmstudio.ai/download, a informacje na temat tego konkretnego modelu można znaleźć pod adresem lmstudio.ai/models/qwen/qwen3.8-27b. Same sformatowane wagi MLX są przechowywane na Hugging Face w przestrzeni nazw lmstudio-community i są oznaczone jako Qwen3.8-27B-MLX-4bit. Agent programistyczny Pi ma swoją własną stronę pod adresem pi.dev, a towarzysząca mu dokumentacja znajduje się pod adresem pi.dev/docs/latest.
Powiązane materiały
- Tworzenie interfejsów użytkownika dla wieloetapowych agentów AI za pomocą Next.js i AI SDK — Dowiedz się, jak zaprojektować interfejs agenta AI gotowego do użycia w produkcji, wykorzystując narzędzia typowane, pętle wieloetapowe oraz komponenty interfejsu generatywnego w formacie strumieniowym w Next.js.