course
OpenCode jest zbudowany, by wykonać zadanie. To open-source’owy agent, który łączy model AI z twoim repozytorium, terminalem i narzędziami deweloperskimi. Poproś go o naprawienie błędu, a znajdzie odpowiednie pliki, przygotuje plan, edytuje kod, uruchomi testy i zareaguje na błędy. Samo autouzupełnianie nie zrobi tego w pojedynkę.
Ta szersza rola przyciągnęła uwagę. W chwili pisania aktywne repozytorium OpenCode miało około 189 000 gwiazdek na GitHubie. Nie traktowałbym gwiazdek jako dowodu jakości kodu, ale pokazują, jak duże zainteresowanie wzbudził projekt.
Rzeczywistość jest mniej uporządkowana. OpenCode daje ci wybór modeli, a potem prosi, byś tym wyborem zarządzał. Zmiana polityki jednego z dostawców w styczniu 2026 pokazała, jak szybko te opcje potrafią się zmieniać. Omówię to razem z tym, jak działa OpenCode i gdzie ma swoje miejsce.
Krótka uwaga o nazewnictwie, zanim przejdziemy dalej: jeśli wyszukasz OpenCode, możesz trafić na zarchiwizowane, oparte na Go opencode-ai/opencode. Ten projekt przestał być utrzymywany we wrześniu 2025. Skupimy się na aktywnym projekcie pod github.com/anomalyco/opencode, stworzonym przez zespół stojący za frameworkiem Serverless Stack (SST).
Czym jest OpenCode?
OpenCode to open-source’owy agent do kodowania AI wydany na licencji MIT. Jest neutralny względem modeli, co oznacza, że nie ogranicza się do jednego dostawcy modeli. Użytkownicy mogą czytać i modyfikować kod źródłowy. Mogą także hostować narzędzie samodzielnie. Oprogramowanie jest darmowe. Rozliczanie za model jest osobne, co omówię przy funkcjach.

OpenCode nie jest dużym modelem językowym (LLM). Wybrany model czyta polecenia i generuje odpowiedzi. OpenCode dostarcza narzędzia do pracy z plikami, dostęp do powłoki, historię sesji, reguły uprawnień i interfejs wokół tego modelu. To rozróżnienie jest dla mnie użyteczne, bo zmiana modelu nie wymaga zmiany reszty narzędzia.
Za OpenCode odpowiada Anomaly, wcześniej SST; projekt jest w większości oparty na TypeScript i Bun.

Porównanie zarchiwizowanego i aktualnego repozytorium OpenCode. Obraz: autor.
OpenCode nie jest przywiązany do jednej rodziny modeli. Przez rejestr Models.dev łączy się z ponad 75 dostawcami, w tym Anthropic, OpenAI, Google, DeepSeek, Groq oraz modelami lokalnymi przez Ollamę. Niektóre istniejące konta subskrypcyjne też można podłączyć, co omówię w sekcji funkcji.

Sesja terminalowa OpenCode pokazująca zmiany w plikach. Obraz: autor.
Choć OpenCode zaczął w terminalu, dziś jest dostępny jako interfejs terminalowy (TUI), beta-aplikacja desktopowa na macOS, Windows i Linux oraz rozszerzenia do edytorów, takich jak VS Code. Najnowsze stabilne wydanie w chwili pisania to v1.18.8.
Dlaczego powstał OpenCode
Jak wspomniałem, OpenCode obsługuje modele od wielu dostawców. Zbudowano go w ten sposób, bo jakość modeli i ceny się zmieniają, a narzędzie związane z jednym dostawcą daje użytkownikom mniej opcji.
Dokumentacja stwierdza, że OpenCode nie jest sprzężony z żadnym dostawcą. Wspomniany rejestr Models.dev dostarcza szczegóły modeli i ceny, z których korzysta OpenCode.
Ten wybór wpływa na więcej niż rozliczenia. Różne modele mają różne limity kontekstu, formaty wywoływania narzędzi i typy wejść. OpenCode używa jednego interfejsu, by ukryć te różnice. Deweloper może zmienić wybrany model w tym samym projekcie bez przenoszenia sesji do innego narzędzia.
Zespół preferuje też narzędzia „terminal-first”, które użytkownik może podejrzeć. Instrukcje projektowe znajdują się w zwykłym pliku o nazwie AGENTS.md. Wyjaśnię później, jak OpenCode tworzy i wykorzystuje ten plik.
Oficjalny projekt wskazuje trzy decyzje projektowe. Pierwsza to wsparcie dostawców, opisane wyżej. Druga utrzymuje główne sterowanie w terminalu. Trzecia rozdziela klienta i serwer. Tym zajmiemy się za chwilę.
W styczniu 2026 Anthropic zablokował zewnętrznym narzędziom użycie konsumenckich subskrypcji Claude przez nieoficjalne kanały. OpenCode dodał wtedy inne opcje subskrypcji i użył własnej bramki. Użytkownicy nadal mogli łączyć się przez innych dostawców.
Ten epizod tłumaczy, czemu wybór dostawcy ma w OpenCode tak duże znaczenie. Żeby zobaczyć, co użytkownicy robią z tą możliwością, spójrzmy na sesję.
Jak działa OpenCode
OpenCode działa jako klient i lokalny serwer. TUI, aplikacja desktopowa, rozszerzenia IDE i SDK komunikują się z tym serwerem przez HTTP. Ten sam serwer obsługuje zdalne podłączenie przez opencode attach <url> oraz tryb bezgłowy przez opencode serve.
W trakcie sesji agent czyta odpowiednie pliki, może przygotować plan, edytuje kod i w razie potrzeby uruchamia polecenia. Integracja z Language Server Protocol (LSP) przekazuje do modelu informacje diagnostyczne z kompilatora i lintersów, dzięki czemu może reagować na błędy typów i składni.
Na przykład zadanie może zacząć się od glob lub grep, aby zlokalizować pliki. Agent może użyć read, by je przejrzeć, i edit, by zmienić wybrane linie. Następnie może użyć bash, aby uruchomić test lub komendę build. Wyjście staje się częścią kolejnego żądania do modelu.
Podział na Build i Plan najłatwiej rozumieć jako przełącznik uprawnień. Build jest domyślny i może czytać, pisać i wykonywać polecenia. Plan pyta o zgodę przed edycją plików lub uruchomieniem poleceń bash. Naciśnięcie Tab przełącza między nimi.
Kontrole uprawnień działają przy wywołaniu narzędzia. Projekt może zezwolić na narzędzie, zablokować je albo pytać użytkownika za każdym razem. Reguły mogą też zależeć od wzorca polecenia. Zespół może np. zezwolić na rutynowe testy, ale pytać przed innymi komendami powłoki.
Sesje są przechowywane lokalnie na dysku w katalogu danych OpenCode. OpenCode automatycznie kompaktuje długie rozmowy. Polecenia /undo i /redo przemieszczają się po migawkach plików opartych na Git.
Kluczowe funkcje OpenCode
OpenCode grupuje swoje główne funkcje w dostęp do modeli, kontekst projektu, wykonywanie zadań i użycie lokalne. Poniższe sekcje wyjaśniają, co każda grupa zmienia w trakcie sesji kodowania.
Obsługa wielu modeli
Jak wspomniano, OpenCode pobiera listę dostawców przez Models.dev. W praktyce możesz podłączyć usługę hostowaną, platformę chmurową lub endpoint zgodny z OpenAI. GitHub Copilot i loginy ChatGPT Plus/Pro dają alternatywę dla zarządzania osobnym kluczem API.
Wybór dostawcy nie oznacza, że każdy model zachowuje się tak samo. Korzystanie z narzędzi, limity kontekstu, czas odpowiedzi i cena wciąż zależą od wybranego modelu i dostawcy. Wywołania do modeli hostowanych wysyłają też wymagany kontekst kodu do danego dostawcy na zasadach przetwarzania danych obowiązujących u niego.
OpenCode oferuje też dwie opcjonalne drogi dostępu do modeli. OpenCode Zen to bramka w modelu pay-as-you-go z wybraną listą modeli. OpenCode Go to subskrypcja kosztująca 5 USD w pierwszym miesiącu, potem 10 USD miesięcznie, dla wybranych modeli open-weight. Użytkownicy nadal mogą podać własne klucze API. Ceny mogą się zmieniać.
I tu bywa irytująco: darmowe narzędzie wciąż może wygenerować rachunek u dostawcy.
Praca z kontekstem repozytorium
Uruchom /init i OpenCode wygeneruje AGENTS.md — podsumowanie struktury i konwencji projektu. Zespoły mogą commitować ten plik, aby sesje zaczynały się od wspólnych instrukcji.
Plik może zawierać komendy testów, nazwy folderów, zasady nazewnictwa i notatki o projekcie. Globalny AGENTS.md może zawierać instrukcje wspólne dla wielu projektów. Plik projektowy trzyma reguły dla jednego repozytorium.
Opisane wcześniej sprawdzenia LSP działają po edycjach. Kontekst repozytorium obejmuje też odwołania do plików: symbol @ dołącza wybrany plik do promptu.
Uruchamianie zadań programistycznych
Poza opisanymi wcześniej agentami Build i Plan, OpenCode zawiera subagentów do wieloetapowych wyszukiwań, skanowania bazy kodu i zewnętrznej dokumentacji. Niestandardowi agenci mogą mieć własny model, prompt i uprawnienia do narzędzi.
Każdy subagent działa w sesji potomnej, więc jego wiadomości nie zapełniają głównej sesji w ten sam sposób. Niestandardowy agent może być ograniczony do odczytu plików, przypisany do tańszego modelu lub otrzymać instrukcje do jednego typu zadania.
Model Context Protocol (MCP) dodaje usługi zewnętrzne. Definiuje się je w opencode.json, a kontrole uprawnień opisane wyżej dotyczą także narzędzi, które dodają.
Podejście „local-first” (i jego ograniczenia)
Określenie „local-first” wymaga doprecyzowania. Nie czytałbym go jako obietnicy, że nic nigdy nie opuści twojej maszyny. Jak wspomniano w sekcji o dostawcach, OpenCode może łączyć się z Ollamą. Taka konfiguracja utrzymuje kod i prompty w infrastrukturze lokalnej. Modele hostowane, /share i OpenCode Zen wysyłają dane poza lokalną maszynę.
Użycie lokalne wciąż zależy od modelu. Małe modele mogą zwracać nieprawidłowe wywołania narzędzi lub pomijać powiązania między plikami. Lokalny serwer potrzebuje też wystarczającej pamięci dla wybranego modelu i dość miejsca w kontekście dla plików wysyłanych z każdym żądaniem.
System uprawnień jest zabezpieczeniem przepływu pracy, a nie piaskownicą bezpieczeństwa. Tryb serwera w sieci powinien używać OPENCODE_SERVER_PASSWORD i wiązać się do localhost. Wcześniejszy problem z nieautoryzowaną ekspozycją został załatany, ale trybu serwera nadal nie należy wystawiać publicznie bez uwierzytelniania.
Architektura OpenCode
Jak wspomniałem, OpenCode rozdziela klientów od lokalnego serwera. Ten podział wpływa na konfigurację i przechowywany stan. API dodaje jeszcze jeden sposób użycia serwera.
Jeśli planujesz używać tylko TUI, możesz pominąć szczegóły API. Przydatny będzie akapit o konfiguracji na końcu.
Serwer w TypeScript i Bun rozmawia z dostawcami modeli i uruchamia narzędzia. Zarządza też stanem. Jego specyfikacja OpenAPI 3.1 generuje oficjalny @opencode-ai/sdk. Skrypty i niestandardowi klienci mogą korzystać z tego udokumentowanego API.
API obejmuje sesje, wiadomości, pliki, dostawców, narzędzia, agentów i konfigurację. To ten sam serwer, z którego korzystają klienci OpenCode. Skrypt może utworzyć sesję lub wysłać wiadomość bez sterowania TUI.

Klienci OpenCode łączący się z jednym serwerem. Obraz: autor.
Wymienione wcześniej interfejsy działają jako klienci: TUI, aplikacja desktopowa, rozszerzenie IDE i opencode web. Każdy rozmawia z tym samym procesem serwera. Osobne urządzenie może podłączyć się do istniejącej sesji przez ten proces.
Uruchomienie opencode serve startuje serwer bez zwykłego TUI. Uruchomienie opencode web dodaje klienta przeglądarkowego. Obie komendy wymagają uwierzytelnienia, jeśli do serwera można dotrzeć z innego urządzenia.
Konfiguracja mieszka w pliku projektowym opencode.json lub opencode.jsonc, z globalnym fallbackiem w ~/.config/opencode/opencode.json. Kontroluje modele, uprawnienia, serwery MCP i niestandardowych agentów. Jak omówiono w sekcji o przepływie pracy, historia sesji i logi narzędzi pozostają w plikach lokalnych, dopóki użytkownik ich nie udostępni.
Typowe przepływy pracy w OpenCode
Te same elementy OpenCode można użyć do kilku powszechnych zadań programistycznych. Poniższe przykłady pokazują, gdzie nadal liczy się przegląd przez człowieka.
Budowanie nowych funkcji
Korzystając z opisanego wcześniej procesu Plan-to-Build, deweloper może poprosić o funkcję i przejrzeć proponowane kroki przed jakąkolwiek edycją. Naciśnięcie Tab przenosi zadanie do trybu Build, w którym wprowadzane są zmiany w kodzie i uruchamiane testy.
Plan można poprawić przed jakimikolwiek zmianami w plikach. Warto wtedy doprecyzować zakres, wskazać pliki, których nie wolno zmieniać, albo dodać wymagania testowe.
Refaktoryzacja istniejącego kodu
Ten sam proces Plan-to-Build działa przy refaktoryzacji. Tryb Plan może zidentyfikować zależności i miejsca wywołań, zanim tryb Build wprowadzi zmiany. Jeśli efekt jest błędny, /undo przywraca wcześniejszą migawkę. Użytkownik nadal powinien przejrzeć diff, bo przechodzące testy nie potwierdzają, że każdy publiczny interfejs pozostał bez zmian.
Debugowanie aplikacji
Do debugowania OpenCode może połączyć stack trace z informacjami o typach z language servera. Może zaproponować zmianę, powtórzyć kroki prowadzące do błędu i sprawdzić wynik. Bez jasnych kroków reprodukcji może jedynie potwierdzić, że kod się buduje lub że istniejące testy przechodzą.
Pisanie testów
Jak wspomniano, tryb Build może edytować pliki i uruchamiać polecenia. W pisaniu testów oznacza to, że może stworzyć test, odczytać wynik i wprowadzić kolejną zmianę. Pełny zestaw testów daje więcej informacji zwrotnych, ale trwa dłużej.
Jakość testów nadal wymaga przeglądu przez człowieka. Wygenerowany test może powielać implementację zamiast sprawdzać zachowanie, od którego zależą użytkownicy.
Zrozumienie dużych baz kodu
Sekcja o repozytorium wyjaśniła, jak /init tworzy notatki projektowe. Po tym kroku pytanie typu „Jak działa tu uwierzytelnianie?” może ukierunkować wyszukiwanie. Subagent @general może przeszukać kilka części repozytorium.
Konkretne pytania zwykle dają jaśniejsze wyniki niż prośby o wyjaśnienie całego repozytorium. Odwołania do plików przez @ mogą jeszcze zawęzić wyszukiwanie.
OpenCode kontra inne agenty do kodowania AI
Te narzędzia różnią się licencją, wsparciem modeli, interfejsem i rozliczaniem. Porównuję je pod tymi względami zamiast traktować jedno narzędzie jako domyślny wybór.
OpenCode vs. Claude Code
Mamy osobny artykuł porównujący OpenCode i Claude Code z większą liczbą szczegółów. Claude Code jest narzędziem zastrzeżonym i używa modelu oraz systemu kont Anthropic. OpenCode ma licencję MIT i prosi użytkownika o wybór dostawcy. Daje też dostęp do swojego kodu i konfiguracji. Jak wspomniano w sekcji historii, subskrypcji konsumenckich Claude nie da się już używać przez OpenCode, więc korzystanie z Claude wymaga mierzonego klucza API Anthropic.
Oba narzędzia potrafią czytać pliki, wprowadzać zmiany, uruchamiać komendy i korzystać z serwerów MCP. Główna różnica to dostęp do modeli: Claude Code trzyma się opisanego wyżej ekosystemu Anthropic, a OpenCode może łączyć innych dostawców lub endpoint lokalny.
OpenCode vs. Cursor
Cursor to IDE oparte na VS Code, które oferuje też agentów CLI i w chmurze. Jego główny workflow utrzymuje sugestie, zmiany w plikach i działania agenta wewnątrz edytora. OpenCode używa terminala, aplikacji desktopowej i edytora, jak opisano wyżej. Cursor ma płatne plany subskrypcyjne. Oprogramowanie OpenCode jest darmowe, ale użytkownicy mogą płacić dostawcy modelu za tokeny. Główne różnice to interfejs pracy, wybór modelu i sposób rozliczania.
Cursor obejmuje też uzupełnianie inline podczas pisania. OpenCode skupia się na zadaniach przekazywanych agentowi i nie zastępuje tego typu uzupełniania. Niektórzy deweloperzy mogą używać obu typów narzędzi do różnych zadań.
OpenCode vs. Cline
Cline w rdzeniu jest open-source’owym agentem BYOK, z interfejsami VS Code i CLI. Ma też klienta JetBrains, choć w chwili pisania nie jest on open source. Zarówno Cline, jak i OpenCode wspierają MCP i pozwalają ustawiać reguły zatwierdzania. Cline umieszcza sterowanie w edytorze w pasku bocznym. OpenCode używa sesji terminalowych, które mogą działać niezależnie od edytora. Wybór zależy głównie od tego, gdzie deweloper chce przeglądać i zatwierdzać zmiany.
Cline ma licencję Apache 2.0. OpenCode używa wspomnianej licencji MIT. Obie pozwalają na przegląd i zmiany kodu źródłowego, ale ich interfejsy i pliki projektowe się różnią.
Aider i Codex CLI to także agenci do kodowania w terminalu. OpenCode obejmuje terminal, desktop i IDE w tym samym projekcie oraz wspiera modele od kilku dostawców.
Instalacja i pierwsze kroki z OpenCode
Oficjalny skrypt instalacyjny działa na większości systemów uniksowych. Zapewnia jeden ze sposobów instalacji narzędzia wiersza poleceń:
Polecenie pobiera binarkę OpenCode i dodaje ją do środowiska użytkownika. Menedżer pakietów może lepiej pasować, gdy aktualizacje są zarządzane razem z resztą systemu.
curl -fsSL https://opencode.ai/install | bash
W opcjach menedżerów pakietów są m.in. npm i -g opencode-ai@latest, brew install anomalyco/tap/opencode na macOS i Linux oraz scoop install opencode lub choco install opencode na Windows. Dostępna jest aplikacja desktopowa dla macOS, Windows i Linux. Na Windows dokumentacja OpenCode zaleca WSL, bo niektóre funkcje systemu plików i powłoki działają tam lepiej.
Instalacja nie obejmuje dostępu do modeli. Pierwsza sesja nadal wymaga jednej z metod dostępu omówionych w sekcji multi-model.
Po instalacji pierwsze uruchomienie jest krótkie. Obejmuje połączenie z dostawcą i wstępną konfigurację projektu:
- Uruchom
opencodew katalogu swojego projektu, aby włączyć TUI. - Uruchom
/connect, aby dodać dostawcę modelu — czy to bezpośredni klucz API, login Copilot albo ChatGPT, czy połączenie OpenCode Zen lub Go. - Uruchom
/init, aby utworzyć plikAGENTS.mdopisany wcześniej, a potem zacommituj go, jeśli zespół ma współdzielić te instrukcje. - Użyj
Tab, by przełączać między trybami Plan i Build, opisanymi wyżej.
Te kroki pokrywają wstępną konfigurację. Dokumentacja OpenCode zawiera pełne opcje dostawców i konfiguracji.
Kto powinien używać OpenCode?
Czy OpenCode pasuje, zależy od preferowanego interfejsu, ustawień modeli i poziomu kontroli. Na podstawie powyższych funkcji może pasować do następujących użytkowników i zespołów:
Może pasować:
- Deweloperzy, którzy nie chcą być zamknięci u jednego dostawcy modeli i chcą przełączać się zależnie od kosztu lub możliwości
- Zespoły w środowiskach regulowanych lub wrażliwych na prywatność, które potrzebują utrzymać kod w infrastrukturze lokalnej
- Deweloperzy „terminal-first”, którym odpowiadają workflowy CLI i pliki konfiguracyjne
- Kontrybutorzy open source, którzy chcą przejrzeć, forkować lub rozszerzać samo narzędzie
- Deweloperzy, którzy wolą rozliczanie za tokeny zamiast stałej subskrypcji oprogramowania
Może nie pasować:
- Osoby, które chcą zarządzanego produktu z minimalną konfiguracją lub bez niej
- Deweloperzy, którym głównie zależy na autouzupełnianiu inline, a nie autonomicznym agencie
- Osoby, które planują używać wyłącznie Claude i wolą subskrypcję zamiast rozliczania mierzonego przez API
- Osoby, które w ogóle nie chcą dotykać terminala, choć aplikacja desktopowa częściowo to niweluje
To różnice w przepływie pracy, a nie miary jakości kodu. Większa kontrola nad modelami i uprawnieniami oznacza też więcej konfiguracji.
Przyszłość OpenCode
Prawie wyciąłem tę sekcję, bo drogowskazy szybko się dezaktualizują. Wysłane zmiany nadal pokazują kierunek prac zespołu.
OpenCode wydał ponad 800 wersji w pierwszym roku. Ostatnie wydania dodały karty w aplikacji desktopowej i eksperymentalnych agentów działających w tle. Ta liczba wydań pokazuje aktywność, ale nie traktowałbym jej jako obietnicy stabilności czy jakiejkolwiek przyszłej funkcji.
Opcje Zen i Go, omówione wcześniej, dodały metody płatności obok BYOK. Wsparcie MCP i subagenci pozostają też aktywnymi częściami projektu. Podobne obszary zmieniają się w innych narzędziach do kodowania.
Brak publicznej mapy drogowej, która potwierdzałaby kolejną funkcję lub datę jej wydania. Deklaracje o przyszłych wydaniach pozostają niepewne.
Wnioski
Podział na agenta i model z początku to punkt, który warto zapamiętać. Listy dostawców się zmieniają, ceny się ruszają, zasady dostępu się przesuwają, subskrypcje znikają; OpenCode może pozostać na miejscu, gdy zmienia się wybrany model. Ten rozdział wiąże się z pracą, bo ktoś wciąż musi zarządzać konfiguracją, uprawnieniami i rozliczeniami.
Moje podejście jest proste: wybieraj w zależności od tego, ile kontroli chcesz utrzymywać. Jedna opcja nie będzie pasować każdemu deweloperowi ani każdemu zespołowi.
Powiązane zasoby to samouczek Claude Code oraz kurs AI-Assisted Coding for Developers.
FAQs
Czy OpenCode naprawdę jest darmowy?
Jak wspomniano, oprogramowanie na licencji MIT jest darmowe. Koszty wynikają z wybranej ścieżki do modelu: tokeny u dostawcy, Zen lub Go, albo sprzęt użyty dla modelu lokalnego.
Czy mogę używać modeli Claude w OpenCode?
Tak, przez standardowy klucz API Anthropic. Jak omówiono wcześniej, osobistych subskrypcji Claude Pro i Max nie da się trasować przez OpenCode, więc Anthropic rozlicza to użycie według stawek API.
Czy OpenCode działa bez połączenia z internetem?
Tak. Sekcja o modelach lokalnych wyjaśniła, że OpenCode może łączyć się przez Ollamę lub inny endpoint zgodny z OpenAI. Mniejsze modele lokalne mogą popełniać więcej błędów w wywołaniach narzędzi niż większe modele hostowane.
Czy zarchiwizowane repozytorium opencode-ai/opencode to ten sam projekt?
Nie. Jak wspomniano we wstępie, ten projekt oparty na Go został zarchiwizowany we wrześniu 2025. Dodatkową wskazówką jest format konfiguracji: poradniki używające starych komend lub pliku .yml nie dotyczą obecnego projektu.
Jak OpenCode traktuje prywatność mojego kodu źródłowego?
Jak omówiono w sekcji o użyciu lokalnym, żądania wysyłane do modelu hostowanego opuszczają maszynę. Sam OpenCode nie przechowuje twojego kodu. Innym wyjątkiem jest komenda /share, bo wysyła sesję pod publiczny link, dopóki jej nie wyłączysz.