Documentazione
Qwen Code
Qwen Code gestisce gli endpoint in un unico file. Dichiara Kunavo una volta sotto modelProviders, imposta selectedType su openai e usa il selettore /model per passare da Claude a GPT con una sola chiave.
Qwen Code legge gli endpoint da modelProviders in ~/.qwen/settings.json — una voce con baseUrl e envKey mette Claude e GPT nel suo selettore /model.
{
"modelProviders": {
"openai": [
{
"id": "claude-sonnet-5",
"name": "Claude Sonnet 5 (Kunavo)",
"baseUrl": "https://api.kunavo.com/v1",
"description": "Kunavo, OpenAI-compatible",
"envKey": "KUNAVO_API_KEY"
}
]
},
"env": {
"KUNAVO_API_KEY": "sk-kn-..."
},
"security": {
"auth": {
"selectedType": "openai"
}
},
"model": {
"name": "claude-sonnet-5"
}
}/v1. La documentazione sui provider di modelli chiarisce il punto in una frase: per indirizzare una voce verso un gateway ospitato compatibile con OpenAI, imposta baseUrl sulla «radice /v1» dell'API, anziché sul percorso completo /v1/chat/completions, perché «l'SDK aggiunge autonomamente il percorso della richiesta». Tutti gli esempi OPENAI_BASE_URL nella pagina di autenticazione terminano allo stesso modo. Se la base URL include già il percorso, si ottiene un 404, non un errore di autenticazione.realtimeOnly sia un endpoint DashScope, quindi quella funzionalità continua a usare una chiave dedicata, indipendentemente dall'endpoint a cui indirizzi il modello di chat./auth.sk-kn-) e aggiungi credito da $10: le chiamate vengono pagate con quel saldo e le chiamate non riuscite non vengono addebitate. La dashboard si apre quindi sulla configurazione Qwen Code.Passo dopo passo
- Crea una chiave su
/app/keyse copiala: viene mostrata una sola volta. - Apri
~/.qwen/settings.json(crealo se non esiste) e aggiungi i quattro blocchi precedenti. La documentazione consiglia di dichiararemodelProvidersnel file a livello utente «per evitare conflitti di unione tra le impostazioni del progetto e quelle utente». - Se possibile, conserva la chiave in un posto più sicuro di
env. Qwen Code la legge daprocess.env[envKey]e la documentazione ordina le fonti dalla più prioritaria alla meno prioritaria: unaexportdella shell, poi un file.env, infine il bloccoenvinsettings.json— che viene indicato come archiviazione in testo semplice. Il bloccoenvqui sopra è la configurazione minima funzionante, non la soluzione migliore da mantenere. - Esegui
qwen. Consecurity.auth.selectedTypeimpostato suopenaiemodel.namecorrispondente a unidche hai dichiarato, non serve alcun passaggio interattivo di/auth: la documentazione lo afferma chiaramente dopo l’esempio con un solo file. - Assegna un’attività che legga e modifichi un file, non un semplice saluto. Qwen Code è un agente: la prima esecuzione dovrebbe verificare le chiamate agli strumenti e lo streaming, che sarebbero i primi a non funzionare con un endpoint solo parzialmente compatibile.
- Aggiungi altre voci sotto
modelProviders.openaiper cambiare modello durante l’esecuzione con/model. Le modifiche vengono caricate automaticamente nella sessione in corso;providerProtocolviene letto una sola volta all’avvio e richiede un riavvio.
Verificato rispetto a Pagina di autenticazione di Qwen Code, opzione 4: API Key (flessibile) il 21 settembre 2026. Le impostazioni di terze parti cambiano; se il nome di un campo qui non corrisponde più a quello visualizzato, fa fede quella pagina, non questa.
Verifica prima di eseguire il debug del client
Una sola richiesta stabilisce se il problema riguarda l'endpoint, la chiave o il file di configurazione. Se restituisce JSON, lo stesso base URL e la stessa chiave funzionano in Qwen Code.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Quale model id inserire nel campo
Ogni modello di testo è raggiungibile come model id: l'elenco aggiornato è GET /v1/models e il catalogo con i prezzi è nella pagina dei modelli. Le tariffe sono in USD per 1M di token, input / output.
| ID del modello | Kunavo ingresso / uscita | Dove si inserisce in Qwen Code |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | il modello di lavoro predefinito: impostalo come model.name |
claude-opus-5 | $3.50 / $17.50 | un piano che sarebbe costoso sbagliare |
claude-haiku-4-5 | $0.70 / $3.50 | turni economici: smistamento, riepiloghi e il ciclo che gira tutto il giorno |
gpt-5-6-sol | $2.00 / $12.00 | un secondo parere da un'altra famiglia, con la stessa chiave e lo stesso baseUrl |
gpt-5-6-terra | $0.70 / $4.20 | lettura con contesto lungo, sempre tramite la chiave del protocollo openai |
Tre cose chiarite dalla documentazione che molti presumono erroneamente
Queste informazioni provengono dalla pagina di autenticazione e dal riferimento ai provider di modelli citati sopra. Darle per scontate invece di leggerle fa perdere tempo prezioso nel debugging.
- Una voce
modelProvidersha la precedenza sui flag della CLI. L’ordine documentato, dal più prioritario, è: le modifiche apportate tramite/authnella sessione in corso, poienvKeydel provider di modelli selezionato, quindi gli argomenti della CLI come--openai-api-key, poi le variabili d’ambiente e infinesecurity.auth.apiKeynelle impostazioni. Molti si aspettano che prevalga il flag. Non è così: per questo--openai-base-urlpuò sembrare ignorato. security.auth.apiKeyesecurity.auth.baseUrlsono deprecati. Il riferimento lo specifica e consiglia di migrare amodelProviders. Se una vecchia guida ti fa modificare queste due chiavi, ti sta indirizzando verso un percorso destinato a essere dismesso.wireApidetermina il formato della richiesta e non viene rilevata alcuna incompatibilità. Se lo ometti, viene usato Chat Completions, come nel blocco qui sopra. Impostare"wireApi": "responses"richiede un endpoint effettivamente compatibile con Responses; la documentazione dichiara chiaramente che, in caso di errore della richiesta, non viene rilevato l’endpoint né viene eseguito alcun fallback automatico. Kunavo risponde sia a/v1/responsessia a/v1/chat/completions, ma questa pagina non ha testato nessuna delle due combinazioni, quindi inizia con l’impostazione predefinita.
Se sei arrivato qui cercando il piano gratuito
Gran parte delle informazioni ancora disponibili su Qwen Code descrive un accesso OAuth a Qwen con una quota giornaliera gratuita. Questa opzione non è più disponibile: la documentazione registra l’interruzione del piano gratuito il 15 aprile 2026 e afferma che Qwen OAuth non è più selezionabile nella finestra /auth. Ora sono elencate tre opzioni: Alibaba ModelStudio, con Coding Plan, Token Plan e Standard API Key nel sottomenu; Third-party Providers; e Custom Provider, descritto come un modo per connettere «un server locale, un proxy o un provider non supportato». Kunavo è il terzo. Nota inoltre che le voci del sottomenu ModelStudio non sono tre modi per pagare un’unica fattura: ciascuna ha il proprio host e la propria chiave, e una chiave Coding Plan non funziona con un host Token Plan.
Domande frequenti
Come si configura un endpoint API personalizzato in Qwen Code?
Dichiara l’endpoint in ~/.qwen/settings.json sotto modelProviders. Usa la chiave "openai" per qualsiasi host compatibile con OpenAI, assegna alla voce del modello un id, un baseUrl e un envKey che indichi la variabile d’ambiente contenente la chiave API, quindi imposta security.auth.selectedType su "openai" e model.name su quell’id. Esegui qwen e verrà avviato usando quel percorso senza il passaggio interattivo /auth. Il percorso equivalente tramite variabili d’ambiente usa OPENAI_API_KEY, OPENAI_BASE_URL e OPENAI_MODEL, ma la documentazione consiglia il file delle impostazioni perché persiste tra le shell e supporta più endpoint contemporaneamente.
Il baseUrl di Qwen Code deve terminare con /v1?
Sì, per un endpoint compatibile con OpenAI. Il riferimento ai provider di modelli di Qwen Code indica di impostare baseUrl sulla radice API /v1, per esempio https://gateway.example.com/v1, invece di usare il percorso completo /v1/chat/completions, perché l’SDK aggiunge autonomamente il percorso della richiesta. Per Kunavo, il valore è https://api.kunavo.com/v1. Se lasci il percorso completo, otterrai un 404 anziché un errore di autenticazione: è il sintomo più comune in questo caso.
Il piano gratuito di Qwen Code è ancora disponibile?
No. La documentazione di Qwen Code registra l’interruzione del piano gratuito Qwen OAuth il 15 aprile 2026 e Qwen OAuth non è più selezionabile nella finestra /auth. La documentazione precisa inoltre che i modelli Qwen OAuth sono codificati in modo fisso e non possono essere sovrascritti tramite modelProviders, quindi il vecchio percorso non può essere semplicemente reindirizzato altrove. Restano Alibaba ModelStudio, un provider di terze parti integrato oppure un endpoint personalizzato configurato autonomamente.
Qwen Code può usare modelli Claude o GPT invece di Qwen?
Sì. La tabella dei protocolli di Qwen Code indica che la chiave del provider openai accetta qualsiasi endpoint compatibile con OpenAI; inoltre, l’id del modello in una voce modelProviders viene inoltrato direttamente al baseUrl configurato e viene quindi risolto presso quell’endpoint, non all’interno del client. Di conseguenza, un id Claude o GPT funziona se l’endpoint lo offre. Kunavo offre id Claude e GPT tramite la propria interfaccia compatibile con OpenAI e ha pubblicato questa configurazione sulla base della documentazione del fornitore, non di una prova eseguita.
Perché Qwen Code ignora --openai-base-url?
Perché una voce modelProviders ha la precedenza. L’ordine documentato delle credenziali mette al primo posto le modifiche inserite tramite /auth nella sessione in corso, al secondo baseUrl ed envKey del provider di modelli selezionato e al terzo gli argomenti della CLI, prima delle variabili d’ambiente e delle impostazioni. Se è selezionata una voce provider, prevale il suo baseUrl, non il flag. Modifica quella voce — le modifiche a modelProviders vengono caricate automaticamente nella sessione in corso — oppure rimuovila se intendevi usare il flag.