Claude Code i OpenCode z lokalnym Qwenem
OpenCode ma udokumentowane połączenie z modelem lokalnym. Claude Code wymaga zgodnej bramy, a Anthropic nie wspiera kierowania klienta do modeli innych niż Claude.
Syntalith
OpenCode oficjalnie opisuje połączenie z lokalnym llama.cpp przez interfejs zgodny z API OpenAI. Claude Code potrafi łączyć się z bramą zgodną z API Anthropic, ale producent nie wspiera kierowania tego klienta do modeli innych niż Claude. Nasz Qwen ukończył zadanie przez Claude Code tylko dlatego, że zmodyfikowany vLLM emulował wymagany interfejs sieciowy.
Zgodność techniczna pozwala uruchomić próbę. Oficjalne wsparcie określa, czy producent zobowiązuje się utrzymać dane połączenie i pomóc po aktualizacji. Dla firmy ta różnica wpływa na ryzyko przestoju.
Porównanie wykonaliśmy po godzinach na domowym komputerze z RTX 3090. Pokazuje zachowanie klientów na tym jednym stosie. Nie jest rankingiem producentów ani obietnicą wyników na innym repozytorium.
Ścieżka opisana przez OpenCode
Dokumentacja OpenCode pokazuje konfigurację llama.cpp przez pakiet @ai-sdk/openai-compatible, baseURL i jawne limity kontekstu oraz wyjścia. Dla protokołu Responses wskazuje osobny pakiet @ai-sdk/openai.
Poniżej jest użyta przez nas sekcja dostawcy po usunięciu lokalnych ścieżek. Port, nazwa modelu i limity odpowiadają mierzonemu profilowi vLLM 150k:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"qwen-local": {
"npm": "@ai-sdk/openai-compatible",
"name": "Local Qwen vLLM",
"options": {
"baseURL": "http://127.0.0.1:18020/v1",
"apiKey": "{env:QWEN_VLLM_API_KEY}"
},
"models": {
"qwen3.8-27b": {
"name": "Qwen3.8-27B 150K Medium",
"limit": { "context": 150000, "output": 32768 },
"options": { "reasoningEffort": "medium" }
}
}
}
}
}
Klucz i dokładne limity muszą odpowiadać serwerowi. Konfiguracja testowa miała globalne "*": "allow", aby pytania o zgodę nie zniekształcały czasu. Tego ustawienia nie należy przenosić do normalnego repozytorium. Użyj pytań o zgodę albo jawnej listy dozwolonych operacji. Szerokie uprawnienia miały sens wyłącznie w jednorazowych kopiach bez sekretów.
Cztery realne próby OpenCode
| Zadanie | Ukryte kontrole | Czas | Co trzeba wiedzieć |
|---|---|---|---|
| eksport CSV | 1/3 | 32,69 s | pominął wymagany w README własny separator |
| paginacja | 3/3 | 325,88 s | minimalna poprawka, potem zbędna inspekcja .git i błędne zdanie w raporcie |
| import CSV | 5/5 | 89,04 s | najszybszy w pełni poprawny wynik tej komórki |
| druga tura importu | 3/3 | 130,03 s | poprawne tworzenie lub aktualizacja rekordu w tej samej sesji |
To przydatniejszy obraz niż „OpenCode działa”. Klient był świetny w jednym zadaniu, złamał jawny kontrakt w drugim i po poprawnym kodzie potrafił dalej błądzić. Dlatego do oceny dołączamy testy ukryte i sprawdzamy końcowy zestaw zmian oraz raport.
Brama Claude Code ma węższy zakres
Dokumentacja połączenia bramy Claude Code opisuje ANTHROPIC_BASE_URL i poświadczenie. Taka brama może centralizować uwierzytelnienie, logowanie oraz kierowanie żądań do obsługiwanych modeli Claude.
Granica wsparcia Anthropic jest jednoznaczna: kierowanie Claude Code do modeli innych niż Claude nie jest obsługiwane. Nie należy budować produkcyjnego standardu na nadziei, że następna wersja klienta zachowa przypadkową zgodność z emulatorem.
Co pokazał eksperyment Claude Code
Pierwsza próba Claude Code na llama.cpp trwała 7298,5 s, przekroczyła kontekst i pozostawiła niedający się skompilować test. Zadanie nie zostało ukończone, więc próba nie dostała końcowej oceny.
Na zmodyfikowanym vLLM z limitem 150k Claude Code i Qwen Code dostały to samo długie polecenie: naprawić dwa zignorowane błędy json.Marshal w Go, zachować format odpowiedzi, dodać deterministyczne zachowanie awaryjne, testy i dokumentację.
| Klient z Qwen3.8-27B | Ocena | Czas | Wywołania | Wynik |
|---|---|---|---|---|
| Qwen Code | 100/100 | 502,14 s | 52 | zaakceptowany |
| Claude Code przez emulację | 98/100 | 1732,38 s | 50 | poprawne zachowanie awaryjne i 6 testów |
Claude Code był 3,45 razy wolniejszy. To dobry wynik jakościowy i słaby kandydat na domyślną ścieżkę operacyjną. Dowodzi zgodności tej wersji klienta z tą wersją emulatora, niczego więcej.
Jak podjąć decyzję bez wojny marek
- Daj klientom ten sam stan kodu, polecenie, limit kontekstu, poziom wysiłku i politykę narzędzi.
- Oceniaj ukrytymi kontrolami, których agent nie widzi w prompcie.
- Odrzuć wynik za naruszenie kontraktu nawet wtedy, gdy publiczne testy są zielone.
- Zapisz wersję programu, dostawcy i szablonu czatu.
- Po aktualizacji powtórz krótki test podstawowy, wznowienie sesji i jedno zadanie regresyjne.
OpenCode jest rozsądniejszym kandydatem do dokumentowanego lokalnego profilu. Qwen Code wygrał nasze długie zadanie. Codex ma po swojej stronie oficjalną konfigurację własnego dostawcy. Emulacja Claude Code ma wartość badawczą, ale Anthropic nie wspiera tego parowania, więc nie proponujemy jej jako firmowego standardu.
Syntalith może zbudować dwa kontrolowane profile, zestaw ukrytych kontroli i procedurę aktualizacji, a potem nauczyć zespół samodzielnej oceny na Kursie AI-Native. Wartością usługi są przewidywalny wybór i odbiór. Domowy GPU nie jest przedmiotem sprzedaży. Bezpłatny skan procesu dobiera narzędzie do pracy i wymaganego poziomu wsparcia.
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
Terminy zobaczysz w swojej strefie czasowej.
Wolisz napisać? Opisz proces