Codex z lokalnym Qwen3.8-27B przez Responses API
Codex pozwala wskazać własny serwer przez protokół Responses. Pokazujemy działającą konfigurację, granicę wsparcia i wynik lokalnego Qwena.
Syntalith
Codex ma udokumentowaną konfigurację własnego dostawcy modeli przez protokół Responses. W eksperymencie przeprowadzonym po godzinach skierowaliśmy klienta Codex do Qwen3.8-27B działającego za zmodyfikowanym vLLM. Transport, narzędzia i kompresja kontekstu zadziałały. Po przebiegu Codex oceniał zmiany według sześciu kryteriów Syntalith: poprawność (40 punktów), testy regresji (20), zgodność (15), zakres zmian i utrzymywalność (10), weryfikacja (10) oraz dokumentacja (5). Poprawka wykonana przez Codex dostała 87/100, a poprawka Qwen Code na tym samym serwerze 100/100. Codex był tu także oceniającym. Wyniki nie pochodziły od niezależnego audytora.
Konfiguracja własnego dostawcy jest funkcją klienta Codex. OpenAI nie certyfikuje przez to Qwena, jego wag ani zmodyfikowanej instancji vLLM. Po każdej aktualizacji klienta lub serwera trzeba ponownie uruchomić pięć opisanych niżej kontroli integracji.
Profil, którego rzeczywiście użyliśmy
Oficjalna dokumentacja Codex opisuje base_url, źródło klucza i protokół przesyłania. Poniżej znajduje się użyty profil z usuniętymi lokalnymi ścieżkami i nazwą hosta:
# ~/.codex/qwen-vllm.config.toml
model = "qwen3.8-27b"
model_provider = "qwen_vllm"
model_context_window = 150000
model_auto_compact_token_limit = 120000
model_auto_compact_token_limit_scope = "total"
model_reasoning_effort = "medium"
tool_output_token_limit = 6000
[model_providers.qwen_vllm]
name = "Qwen3.8-27B through local vLLM"
base_url = "http://127.0.0.1:18020/v1"
env_key = "QWEN_VLLM_API_KEY"
wire_api = "responses"
request_max_retries = 1
stream_max_retries = 1
Na innym urządzeniu 127.0.0.1 powinno wskazywać lokalny tunel do hosta z GPU. Portu nie należy wystawiać publicznie. Klucz przechowuj wyłącznie w QWEN_VLLM_API_KEY, poza plikiem TOML i repozytorium. Profil uruchamialiśmy osobno:
export QWEN_VLLM_API_KEY="$(< ~/.config/qwen-vllm/api-key)"
codex --profile qwen-vllm
Dokumentacja Codex zaznacza, że projektowy .codex/config.toml nie może nadpisać model_provider ani model_providers. Dostawcę umieść w konfiguracji użytkownika albo w osobnym pliku profilu. Poprawna tabela w niewłaściwej warstwie konfiguracji wygląda wtedy jak niesprawny dostawca.
Pięciominutowa bramka przed dostępem do repozytorium
Po uruchomieniu modelu sprawdź najpierw warstwę HTTP:
curl -fsS http://127.0.0.1:18020/health
curl -fsS \
-H "Authorization: Bearer $QWEN_VLLM_API_KEY" \
http://127.0.0.1:18020/v1/models
Następnie uruchom profil w pustym, jednorazowym repozytorium i podaj dokładnie to polecenie:
Utwórzresult.jsonz polamisource: "codex-qwen-smoke"iok: true. Sprawdź plik poleceniemjq -e '.source == "codex-qwen-smoke" and .ok == true' result.json. Nie zmieniaj innych plików.
To małe zadanie sprawdza pięć elementów: odpowiedź przez Responses, wywołanie narzędzia, zapis pliku, odczyt wyniku polecenia i poprawne zakończenie sesji. W tej klasie prób nasze przebiegi trwały około 33–113 sekund. Jeśli test przekroczy pięć minut, przerwij go i sprawdź transport lub pętlę agenta. Taki czas nie powinien zostać uznany za zwykły koszt krótkiej kontroli.
W tej samej sesji poproś o zmianę source na codex-qwen-resume i ponowną walidację. Nowa tura może działać, gdy wznowienie historii jest zepsute.
Dwie awarie, które naprawdę wystąpiły
Zły klucz. Użycie klucza starego serwera llama.cpp przy vLLM zwracało HTTP 401. Kod obsługujący przebieg początkowo mógł potraktować tekstowy komunikat API jak wynik zadania. Zmieniliśmy go tak, aby błąd dostawcy oznaczał przebieg jako awarię integracji i pomijał go przy ocenie jakości modelu.
Wznowienie sesji. W profilu llama.cpp nowa tura działała, lecz wznowiona sesja Codex kończyła się błędem System message must be at the beginning. Codex umieszczał późniejszą wiadomość developer w historii, a szablon Qwena dopuszczał treść systemową wyłącznie na początku. Poprawiony szablon zbiera wiadomości system i developer w początkowym bloku. Osobno sprawdziliśmy nową turę, historię system,user,assistant,developer,user oraz wznowienie zwracające resumed-ok.
Sam /health sprawdza dostępność serwera. Nie sprawdza całej integracji klienta, narzędzi i historii sesji.
Wynik Codex w domowym eksperymencie
Na zmodyfikowanym vLLM z kontekstem 150 000 tokenów i poziomem medium, na domowym RTX 3090, zapisaliśmy:
| Miara | Codex | Qwen Code |
|---|---|---|
| Ocena według kryteriów Syntalith | 87/100 | 100/100 |
| Czas przebiegu | 1150,42 s | 502,14 s |
| Kompresje kontekstu | 1 | 0 |
| Wywołania narzędzi | 56 poleceń terminala | 52 użycia narzędzi |
Ocena 87/100 wynikała z istotnej wady wykrytej podczas kontroli. Codex zbudował projekt, przeszedł testy i przygotował dokumentację, lecz zachowanie awaryjne opisane jako deterministyczne mogło wypisać adres pamięci wskaźnika albo kanału. Testy obejmowały prostsze przypadki i tej własności nie wykryły. Ocena 100/100 oznacza, że Codex nie odjął punktów poprawce Qwen Code w żadnym z sześciu kryteriów podczas tej jednej próby. Żaden wynik nie mówi o powtarzalności ani ogólnej niezawodności modelu.
W małym zadaniu importu Codex uzyskał 5/5 ukrytych kontroli, a Qwen Code pominął jedną walidację. Ten dodatkowy wynik dotyczył innego zadania i nie zmienia oceny długiej poprawki. O wyborze klienta decyduje zestaw zadań oraz jego kryteria.
Odchudzony profil Codex
Pełne środowisko klienta zawierało wiele instrukcji i opisów umiejętności. Izolowany profil codex-qwen-vllm-slim zmniejszył zmierzoną liczbę bajtów wejściowych z 19 748 do 10 573, czyli o 46,5%.
Ta liczba opisuje wyłącznie rozmiar instrukcji wejściowych. Nie jest miarą jakości ani czasu całego przebiegu. Krótsze instrukcje mogą obniżyć koszt i zostawić więcej miejsca na kod, lecz mogą też usunąć potrzebną procedurę. Aby nazwać profil lepszym, trzeba sprawdzić go na nowym zadaniu z ukrytymi kontrolami.
Bezpieczny sposób użycia
- Użyj osobnego profilu Codex i pozostaw normalnego dostawcę bez zmian.
- Przechowuj lokalny klucz w pliku z prawami
0600. - Pierwszą próbę wykonaj w odłączonej kopii repozytorium.
- Usuń polecenia wdrożeniowe i sekrety.
- Ustaw limit kontekstu zgodny z serwerem.
- Niezależnie sprawdź format narzędzi i wznowienie sesji.
- Zachowaj sprawdzony profil lub zatwierdzone API jako rozwiązanie zapasowe.
- Po każdej aktualizacji Codex, vLLM albo szablonu czatu powtórz krótki test podstawowy.
Domowy RTX 3090 był tutaj stanowiskiem testowym. Oferta Syntalith obejmuje konfigurację, scenariusze kontroli, uprawnienia, dokumentację awarii i szkolenie zespołu. Na Kursie AI-Native zespół uczy się rozdzielać klienta, model i protokół. Bezpłatny skan procesu pomaga ustalić, czy lokalny profil ma sens i jakie kontrole powinien przejść.
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