Przejdź do treści
Wróć do bloga
qwen3.8Artykuł

Qwen Code, Codex, Claude Code czy OpenCode?

Ten sam lokalny Qwen dał różne wyniki w czterech programach sterujących agentem. Porównujemy zadania, czas, ukryte testy i jakość zmian.

Autor

Syntalith

Opublikowano Zaktualizowano 5 min czytania

Na domowym PC z RTX 3090 uruchomiliśmy ten sam lokalny Qwen3.8-27B przez Qwen Code, Codex, Claude Code i OpenCode. Te programy sterują rozmową z modelem, udostępniają mu narzędzia, skracają kontekst i decydują, kiedy zadanie się kończy. Dlatego ten sam model przygotował w każdym z nich inną zmianę. W długiej naprawie Go Qwen Code skończył w 8:22 i przeszedł niezależny odbiór. Codex potrzebował 19:10 i zostawił błąd w zachowaniu awaryjnym. Claude Code przygotował poprawny wariant w 28:52. W małym imporcie CSV najszybszy poprawny wynik należał do OpenCode.

To porównanie programów sterujących agentem. Model pozostawał ten sam. Nie porównywaliśmy lokalnego Qwena z modelami OpenAI ani Anthropic.

W tym tekście Qwen Code oznacza oficjalnego klienta terminalowego. Nie chodzi o osobny model „Qwen Coder”. Każda komórka była pojedynczym naturalnym przebiegiem na domowym sprzęcie. Wyniki pomagają wybrać konfigurację do dalszych prób, ale nie są rankingiem niezawodności.

Jedno zadanie, trzy różne poprawki

Długi test dotyczył problemu spotykanego w większym repozytorium Go. Polecenie wskazywało dwa miejsca, które ignorowały błąd json.Marshal, i wymagało:

  • zachowania istniejącego formatu dla poprawnych wartości;
  • bezpiecznego, deterministycznego zachowania awaryjnego;
  • testów zwykłego i błędnego wejścia;
  • kompilacji, właściwych testów oraz kontroli repozytorium;
  • aktualizacji istniejącej dokumentacji;
  • braku porządkowania niezwiązanych błędów.

Wszystkie trzy programy dostały to samo polecenie, ten sam commit, osobną kopię repozytorium, Qwen3.8-27B na tym samym zmodyfikowanym vLLM, 150k kontekstu i średni poziom rozumowania.

KlientCzasKompresjeNiezależny odbiór
Qwen Code8:220przyjęty
Codex19:101odrzucony przez istotny błąd zachowania awaryjnego
Claude Code28:520przyjęty, z potknięciami w weryfikacji

OpenCode nie występuje w tej tabeli, ponieważ dla długiej poprawki nie ma wykonanego przebiegu. Pojawia się dopiero niżej, w trzech zadaniach, które rzeczywiście uruchomiliśmy.

Co dokładnie zrobił Qwen Code

Qwen Code wykorzystał istniejący helper repozytorium do metadanych aktywności. Dla wartości, której JSON nie potrafi zakodować, helper zwracał pustą wartość, a pole z oznaczeniem omitempty znikało z odpowiedzi. Dla tekstu webhooka agent dodał stały znacznik (unavailable).

To rozwiązanie miało dwie ważne cechy:

  1. zwykłe, poprawne wartości zachowywały dotychczasowy format;
  2. błąd kodowania nie tworzył częściowego JSON ani zmiennej treści.

Agent dodał po jednym zestawie testów do obu ścieżek, zaktualizował trzy właściwe dokumenty i odróżnił nowe wyniki od błędów istniejących już na czystym commicie. Niezależna rubryka nie znalazła usterki w przyjętym zakresie.

Dlaczego wariant Codex odpadł

Codex postanowił zachować klucze metadanych i po błędzie zamienić każdą wartość przez format %v. Dla prostych skalarów wyglądało to dobrze. Dla niepustego kanału albo wskaźnika Go wypisuje jednak adres pamięci, na przykład wartość w rodzaju 0xc00001c1c0. Zmienia się ona między uruchomieniami.

Testy Codex obejmowały łatwe wartości i pusty kanał, więc przeszły. Dokumentacja powtórzyła twierdzenie, że zachowanie awaryjne jest deterministyczne. Dopiero niezależny test właściwości znalazł sprzeczność.

To praktyczna różnica między „testy są zielone” a „obietnica w opisie jest prawdziwa”. Kod budował się i większość pracy była sensowna, ale tej zmiany nie przyjęliśmy.

Co wybrał Claude Code

Claude Code, nadal sterując lokalnym Qwenem, rozdzielił zachowanie awaryjne według odbiorcy. Dla obiektu metadanych zwracał pusty obiekt JSON. Dla tekstu webhooka użył istniejącego znacznika (not available). Dodał sześć testów i cztery aktualizacje dokumentacji.

Implementacja przeszła odbiór. Czas obniżył jej wartość operacyjną na jednej 3090: 28:52 wobec 8:22 w Qwen Code. Agent kilka razy mylił ścieżki i escaping wyrażeń regularnych podczas weryfikacji.

Jest też ważniejsza granica: Anthropic nie wspiera kierowania Claude Code do modeli innych niż Claude. Nasz wynik sprawdza zgodność konkretnego emulatora interfejsu sieciowego. Nie jest konfiguracją, którą proponowalibyśmy firmie jako standard.

OpenCode pojawia się w małych zadaniach

OpenCode nie ma wyniku dla długiej poprawki JSON. Ma za to trzy uczciwe komórki z krótszego zestawu. Każdy klient otrzymywał naturalne zgłoszenie i czystą kopię małego projektu.

Pierwsze polecenie brzmiał:

Customers with several tags are showing up more than once in our CSV order export. Can you fix it? The export code is under src. Please keep the existing columns and add a regression test.

W README był jeszcze kontrakt separatora, którego polecenie nie powtarzało. Ukryte testy sprawdzały, czy agent przeczytał dokumentację.

ZadanieQwen Code mediumCodex mediumOpenCode medium
eksport CSV3/3 ukryte, 38,24 s3/3, 113,34 s1/3, 32,69 s
paginacja3/3, 264,53 s, najmniejsza zgodna poprawka3/3, 474,91 s, zbyt szeroka zmiana kontraktu3/3, 325,88 s, minimalny kod, potem zbędna praca
import CSV4/5, 93,14 s, brak walidacji pustych pól5/5, 212,00 s, poprawna większa poprawka5/5, 89,04 s, najszybszy poprawny wynik

Liczby testów publicznych różniły się, ponieważ agent mógł dopisywać własne testy. Kontrole ukryte były wspólne i dlatego nadają się do porównania.

OpenCode pominął jawny kontrakt w małym eksporcie, a potem wygrał import zarówno poprawnością, jak i czasem. Qwen Code przygotował najlepszy zakres paginacji, lecz w imporcie przyjął pustą nazwę lub rolę. Codex najwolniej, ale poprawnie obsłużył wszystkie trudne przypadki importu.

Żaden klient nie wygrał wszystkiego.

Dlaczego program sterujący zmienia wynik tego samego modelu

Klient decyduje, jakie instrukcje model widzi, jak opisane są narzędzia, kiedy historia jest kompresowana, co dzieje się po błędzie i jak szeroki jest kontekst startowy. W naszych przebiegach te różnice były widoczne:

  • Qwen Code znał parametry Qwena i najlepiej wykorzystał długie okno;
  • Codex lepiej orientował się na początku niektórych małych zadań, ale potrafił rozszerzyć zakres;
  • OpenCode bywał minimalny i szybki, po czym kontynuował pracę po rozwiązaniu problemu;
  • Claude Code ukończył pracę przez emulator, lecz ta ścieżka nie ma wsparcia producenta.

Dlatego nie wdraża się „modelu do kodu” bez wybrania klienta, profilu, uprawnień i testu repozytorium.

Co wybralibyśmy po tych próbach

Na tym domowym stanowisku Qwen Code medium pozostał klientem domyślnym dla długiej pracy. OpenCode zasłużył na dalsze testy przy małych, jasno ograniczonych zmianach. Codex pozostał wartościową kontrolą i działa przez oficjalnie konfigurowanego własnego dostawcę, ale jego lokalny profil wymaga własnego zestawu ocen. Claude Code z Qwenem pozostaje ciekawostką kompatybilności.

Inny zespół może dostać inną kolejność. Trzy własne zgłoszenia mówią więcej niż publiczna tabela: mały błąd, funkcja z ukrytym przypadkiem i zmiana wymagająca długiej historii.

Jak zamienić to w korzyść dla zespołu

Syntalith może przeprowadzić taki wybór na repozytorium klienta. Bierzemy trzy do kilkunastu reprezentatywnych zadań, przygotowujemy wspólne kryteria i ukryte kontrole, uruchamiamy dwa sensowne profile w odizolowanych kopiach, a potem oddajemy:

  • zaakceptowany profil klienta i modelu;
  • konkretne wyniki, odrzucone warianty i powody;
  • granice narzędzi oraz wymagane zatwierdzenia;
  • skrypt powtórzenia testu po aktualizacji;
  • warsztat, na którym zespół sam ocenia kolejną zmianę.

To może być część Kursu AI-Native na własnym repozytorium zespołu. Jeśli wybór ma prowadzić do lokalnego wdrożenia, Audyt procesu AI zaczyna się od 4990 zł netto. Bezpłatny skan procesu ustala, czy warto testować lokalnego Qwena, czy lepiej zostać przy już używanym narzędziu.

Pełne zanonimizowane liczby są w zestawieniu wyników. Osobno pokazujemy interfejs zbudowany przez Qwen Code w 26 minut.

Bezpłatny skan procesów

Zacznij od bezpłatnego skanu procesów.

  • 30 minut z inżynierem, który może prowadzić Twoje wdrożenie.
  • Przegląd procesów, które kosztują Cię najwięcej czasu i pieniędzy.
  • Pisemne podsumowanie: co zautomatyzować, w jakiej kolejności, z widełkami kosztów.

W 30 minut wybieramy proces do oceny, a w ciągu 2 dni roboczych dostajesz rekomendację, także gdy lepsza będzie prostsza droga.

0 zł

30 minut · pisemne podsumowanie w 2 dni robocze