Przejdź do treści
Wróć do bloga
qwen codeArtykuł

Lokalny Qwen Code: działająca konfiguracja krok po kroku

Wyjaśniamy każde ustawienie profilu Qwen Code: poziom rozumowania, limit odpowiedzi, zachowanie toku myślenia, długość kontekstu i liczbę agentów.

Autor

Syntalith

Opublikowano Zaktualizowano 3 min czytania

W domowym eksperymencie najstabilniejszy profil Qwen Code używał średniego poziomu rozumowania po stronie klienta i żądania, zachowanego toku myślenia, kontekstu 150k i braku stałego limitu max_tokens. Jedna RTX 3090 obsługiwała jednego agenta.

Każde z tych ustawień odpowiada na zaobserwowany błąd. Nie jest listą „najlepszych praktyk” skopiowaną z dokumentacji.

Rdzeń profilu

Poniższy fragment pokazuje strukturę. Zastąp URL i nazwę zmiennej. Klucza nie wpisuj do JSON:

{
  "$version": 4,
  "model": {
    "name": "qwen3.8-27b",
    "reasoningEffort": "medium",
    "skipLoopDetection": true
  },
  "tools": { "approvalMode": "auto-edit" },
  "modelProviders": {
    "openai": [{
      "id": "qwen3.8-27b",
      "envKey": "QWEN_VLLM_API_KEY",
      "baseUrl": "http://127.0.0.1:18020/v1",
      "generationConfig": {
        "timeout": 0,
        "maxRetries": 1,
        "contextWindowSize": 150000,
        "extra_body": {
          "top_k": 20,
          "min_p": 0,
          "reasoning_effort": "medium",
          "chat_template_kwargs": { "preserve_thinking": true }
        }
      }
    }]
  }
}

Sprawdź aktualny schemat w dokumentacji dostawców Qwen Code. Nasz pomiar używał Qwen Code 0.21.13. Aktualizacja klienta wymaga ponownego krótkiego testu.

Poziom rozumowania musi dotrzeć do modelu

Samo reasoningEffort w warstwie klienta nie wystarczyło dla ogólnego dostawcy OpenAI. Wbudowany szablon Qwena domyślnie wybiera xhigh, jeśli żądanie nie zawiera poziomu. Dlatego profil wysyła także extra_body.reasoning_effort.

W małym eksporcie CSV low było o 3,47 s szybsze od medium, ale pominęło separator opisany w README. xhigh w starszych komórkach zużywało więcej czasu bez powtarzalnej poprawy. Medium stało się domyślnym kompromisem; ten tryb nadal może się mylić.

Dlaczego usunęliśmy stałe max_tokens

Stały limit 8192 tokenów wyłączał adaptacyjną ścieżkę Qwen Code 8k–64k. Długie zapisy narzędzi kończyły się ucięciem, a agent próbował je powtarzać. Obecna konfiguracja nie narzuca tego pola i pozwala klientowi użyć mechanizmu ponowienia.

Brak stałego limitu nie oznacza braku granic systemu. Serwer ma limit kontekstu, kolejka ma limit zadań, a zewnętrzny nadzór może zatrzymać identyczną sekwencję bez postępu. Różnica polega na tym, że nie ucinamy poprawnego zapisu w przypadkowym miejscu.

Fałszywy detektor pętli

W pierwszym interfejsie Qwen Code wykonywał różne, udane edycje, które heurystyka uznała za stagnację. Sesja zakończyła się przed testem w przeglądarce. Ustawiliśmy skipLoopDetection: true, czyli wyłączyliśmy wbudowany detektor pętli w nieograniczonych próbach.

Zewnętrzna kontrola nadal zatrzymuje prawdziwy brak postępu: powtarzany identyczny błąd, tę samą komendę bez zmiany stanu albo rosnącą kolejkę. Heurystyka klienta i bezpieczeństwo procesu nie są tym samym.

Jedna karta, jeden agent

Serwer miał jedno miejsce na generowanie. Uruchamianie wielu subagentów tylko ustawiało rozmowy w kolejce i mnożyło kontekst. Profil zespołu powinien wyłączyć równoległych agentów albo skierować ich do oddzielnych procesów z własnymi zasobami.

Tak samo z uprawnieniami. auto-edit było właściwe w odłączonych kopiach repozytorium używanych do testów. W repozytorium produkcyjnym tryb zależy od gałęzi, testów i możliwości cofnięcia. Polecenia wdrożeniowe, sekrety i zasoby chmurowe wymagają osobnych bramek.

Higiena sesji

Wznawiaj sesję, gdy nowe polecenie zależy od wcześniejszych decyzji. Nowe, niezależne zadanie zacznij świeżo po zakończeniu poprzedniego. Kod już istnieje w repozytorium; nie trzeba ponownie przenosić milionów tokenów historii.

W naszej długiej sesji poprawka dwóch reguł CSS zajęła 477,80 s. Wynik był poprawny, lecz czas wynikał z nadmiernego rozumowania i dużej historii. To argument za sesjami zadaniowymi. Nie uzasadnia obniżenia jakości wszystkich prac.

Kopiowalny test profilu

Po zmianie klienta lub ustawień uruchom Qwen Code w pustej kopii repozytorium i podaj:

Utwórz qwen-smoke.json z dokładną treścią {"profile":"medium","ok":true}. Sprawdź ją poleceniem jq -e '.profile == "medium" and .ok == true' qwen-smoke.json. Nie zmieniaj innych plików.

Oczekiwany wynik to jeden nowy plik, kod wyjścia 0 z jq i końcowa odpowiedź, która nie deklaruje dodatkowych zmian. Potem w tej samej sesji poproś o zmianę profile na medium-resumed i ponowne wykonanie kontroli. To krótko sprawdza zapis narzędziowy, odczyt wyniku oraz wznowienie sesji. Nie ocenia jakości kodowania, więc po nim nadal uruchamiamy jedno zadanie repozytoryjne z ukrytą kontrolą.

Profil trzeba przekazać z testem

Plik ustawień bez kryteriów odbiorowych szybko staje się legendą. Do profilu dołącz:

  • skróty pliku modelu i obraz serwera;
  • wersję Qwen Code;
  • krótki test JSON i narzędzia;
  • jedno zadanie repozytoryjne z ukrytą kontrolą;
  • spodziewany zakres czasu i VRAM;
  • poprzedni działający profil.

Syntalith przygotowuje taki pakiet w lokalnym wdrożeniu i może nauczyć zespół, jak go aktualizować na Kursie AI-Native. Jeśli potrzebujesz architektury i wyceny, zacznij od bezpłatnego skanu procesu.

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