Aggiungi un provider personalizzato compatibile OpenAI a Zed.

Updated 2026-07-29

Zed legge i provider personalizzati direttamente da settings.json. Dichiara un blocco language_models.openai_compatible con api_url impostato su https://api.apisrouter.com/v1, elenca gli id dei modelli che vuoi, e ognuno di essi compare nel selettore di modelli del pannello agente sotto un'unica chiave.

Risposta rapida: un blocco in settings.json.

Zed supporta nativamente i provider personalizzati compatibili OpenAI. Aggiungi una voce provider sotto language_models.openai_compatible in settings.json, imposta api_url su https://api.apisrouter.com/v1, e dichiara ogni modello che vuoi sotto available_models con il suo nome e la dimensione del contesto. I modelli compaiono immediatamente nel menu a tendina dei modelli del pannello agente. La chiave API deliberatamente non va in settings.json. Zed la memorizza nel portachiavi di sistema quando la inserisci tramite la UI delle impostazioni provider, oppure la legge da una variabile d'ambiente derivata dalla tua chiave provider: un provider chiamato apisrouter legge APISROUTER_API_KEY. Le variabili d'ambiente hanno la precedenza sui valori del portachiavi.

{
  "language_models": {
    "openai_compatible": {
      "apisrouter": {
        "api_url": "https://api.apisrouter.com/v1",
        "available_models": [
          {
            "name": "claude-sonnet-4-6",
            "display_name": "Claude Sonnet 4.6",
            "max_tokens": 200000
          }
        ]
      }
    }
  }
}

Come Zed risolve provider e modelli personalizzati.

Zed (zed-industries su GitHub, circa 87K stelle) è un editor ad alte prestazioni con un pannello agente che pianifica, modifica file, ed esegue strumenti. Il suo tipo di provider openai_compatible parla il protocollo standard /v1/chat/completions, che è esattamente ciò che serve un gateway multi-fornitore, quindi nessun plugin o estensione si frappone tra l'editor e l'endpoint. La chiave provider che scegli ("apisrouter" sopra) svolge un doppio ruolo. Nomina il provider nelle impostazioni del pannello agente, e genera la variabile d'ambiente che Zed controlla per la chiave, in upper-snake-case con un suffisso _API_KEY. Questa regola di denominazione vale la pena interiorizzarla prima di fare debug di qualsiasi cosa: rinomina il provider e il nome atteso della variabile cambia di conseguenza. available_models è una allowlist. Zed non può enumerare da solo un endpoint personalizzato, quindi diventano selezionabili solo gli id che dichiari, ciascuno una stringa esatta incluso qualsiasi suffisso di versione. Quando l'endpoint dietro api_url serve id Claude, GPT, Gemini e Kimi fianco a fianco, un blocco provider trasforma il selettore del pannello agente in un centralino cross-fornitore dietro una chiave. Una nota di ambito: la funzionalità edit predictions di Zed usa i propri modelli dedicati ed è configurata separatamente; un provider personalizzato alimenta il pannello agente e l'assistente inline, non le edit predictions.

Configurazione completa: modelli, dimensioni del contesto, e capacità.

Ogni voce available_models richiede più di un nome. max_tokens dichiara la finestra di contesto del modello, e max_output_tokens limita la lunghezza di generazione; Zed usa questi valori per gestire i thread agente lunghi, quindi dichiarare un modello a contesto lungo con un max_tokens piccolo spreca silenziosamente il margine del modello. L'oggetto capabilities dice a Zed cosa supporta il modello: imposta tools su true per qualsiasi cosa tu intenda usare per guidare il pannello agente, e abilita images solo per i modelli che accettano davvero input immagine. Per la chiave, il percorso affidabile su un editor desktop è la UI delle impostazioni provider, che memorizza il valore nel portachiavi di sistema. Funziona anche il percorso via variabile d'ambiente, con un avvertimento trattato nella sezione di debug: le applicazioni GUI lanciate dal dock non ereditano il tuo profilo di shell.

{
  "language_models": {
    "openai_compatible": {
      "apisrouter": {
        "api_url": "https://api.apisrouter.com/v1",
        "available_models": [
          {
            "name": "claude-sonnet-4-6",
            "display_name": "Claude Sonnet 4.6",
            "max_tokens": 200000,
            "max_output_tokens": 64000,
            "capabilities": { "tools": true, "images": false }
          },
          {
            "name": "claude-opus-4-7",
            "display_name": "Claude Opus 4.7",
            "max_tokens": 200000,
            "capabilities": { "tools": true }
          },
          { "name": "gpt-5.5", "display_name": "GPT-5.5", "max_tokens": 200000 },
          { "name": "kimi-k2.7-code", "display_name": "Kimi K2.7 Code", "max_tokens": 200000 }
        ]
      }
    }
  }
}

Scegliere modelli per il pannello agente.

Poiché ogni modello dichiarato risiede nello stesso selettore, il workflow pratico è il confronto su lavoro reale piuttosto che sui benchmark: esegui lo stesso tipo di task attraverso due candidati in giorni diversi e lascia che il log di utilizzo per chiave prezzi ciascuno. Un cambio di modello in Zed è una selezione da menu a tendina, quindi il costo dell'esperimento è configurazione zero.

  • Il pannello agente porta ingegneria vera: leggere file, pianificare modifiche multi-step, eseguire strumenti su thread lunghi. Un modello di coding di frontiera (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5) appartiene a questo slot.
  • Gli id ottimizzati per il coding come kimi-k2.7-code vale la pena dichiararli anche quando non sono il tuo default; cambiare per una sessione ricca di refactoring è una singola selezione nel selettore, non una modifica di configurazione.
  • Modelli a contesto lungo come gemini-3.1-pro-preview si guadagnano il loro posto quando i thread tirano dentro regolarmente file grandi o contesto di interi moduli in un'unica conversazione.
  • L'inline assist ha vita più breve dei thread agente, quindi un id veloce di fascia media mantiene reattive le trasformazioni single-shot senza bruciare token di frontiera su riscritture di una riga.

Pagamento a consumo · sotto i prezzi ufficiali

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

ModelloPrezzo ufficialeIl nostro prezzo
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
Claude Opus 4.7$5.00 / $25.00 per M$4.00 / $20.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Kimi K2.7 Code$0.95 / $4.00 per M$1.00 / $4.00 per M
Gemini 3.1 Pro Preview$2.00 / $12.00 per M$1.60 / $9.60 per M

Le modalità di errore specifiche dei provider personalizzati di Zed.

La chiave è in settings.json e non funziona nulla. Zed non legge le chiavi API da settings.json per design. Inserisci la chiave nella UI delle impostazioni provider, oppure esporta la variabile d'ambiente derivata; una chiave incollata nel JSON viene ignorata. La variabile d'ambiente è impostata ma Zed chiede ancora una chiave. Il nome della variabile è derivato dalla chiave provider, in upper-snake-case con _API_KEY aggiunto, quindi un provider chiamato apisrouter ha bisogno di APISROUTER_API_KEY, non di OPENAI_API_KEY. E su macOS, un'app lanciata dal dock non carica mai il tuo profilo di shell, quindi gli export del profilo le sono invisibili. Lancia Zed da un terminale con il comando zed, oppure usa il percorso del portachiavi e salta del tutto il problema. Un modello manca dal selettore. available_models è una allowlist; un id che hai dato per scontato ma mai dichiarato semplicemente non esiste. Gli id sono stringhe esatte inclusi i suffissi di versione, e l'elenco /v1/models del gateway è l'ortografia autorevole da cui copiare. L'agente non può usare strumenti. Se il blocco capabilities di un modello dice che tools è false, Zed non offrirà l'uso di strumenti con esso. Dichiara le capabilities in modo che corrispondano a ciò che il modello supporta davvero. api_url senza /v1. Il client aggiunge percorsi di route come /chat/completions alla base che gli dai, quindi https://api.apisrouter.com/v1 è corretto e l'host nudo non lo è. Un fallimento a forma di 404 su un blocco altrimenti corretto è quasi sempre questo.

Chi instrada Zed tramite un gateway.

  • Sviluppatori che vivono nell'editor e vogliono Claude, GPT e Kimi in un unico selettore del pannello agente invece di mantenere credenziali di provider separate per fornitore.
  • Ingegneri che confrontano modelli di coding su modifiche reali. Ogni candidato è una voce dichiarata e una selezione da menu a tendina; nessun nuovo account per esperimento.
  • Team che standardizzano su un solo segreto. Un'unica APISROUTER_API_KEY nella documentazione di onboarding sostituisce una checklist di chiavi per fornitore, e l'utilizzo per chiave mostra cosa spende ciascuna postazione.
  • Utenti che abbinano un modello agente di frontiera con un veloce modello inline-assist di un fornitore diverso, cosa che le configurazioni a fornitore singolo non possono esprimere.
  • Sviluppatori senza accesso alla fatturazione di un dato fornitore. L'accesso basato su ricarica senza obbligo di carta rimuove la dipendenza dalla registrazione per provider.

Verifica l'endpoint e fai debug del primo thread.

Prima di avviare un thread agente, elenca cosa serve il gateway. Gli id restituiti da /v1/models sono esattamente le stringhe che le tue voci available_models devono usare. I fallimenti del primo thread sono coerenti. Un 401 significa che la chiave che Zed ha risolto è sbagliata o assente: controlla la voce del portachiavi nelle impostazioni provider, oppure conferma che la variabile d'ambiente derivata sia visibile al processo Zed e non solo al tuo terminale. Un errore modello-non-trovato dal gateway significa che un nome dichiarato non corrisponde a un id servito, suffisso di versione incluso. Se il blocco provider non compare affatto nelle impostazioni, valida il JSON; settings.json tollera i commenti ma non gli errori strutturali. Una volta che le richieste scorrono, la console di APIsRouter mostra modello per richiesta, conteggi dei token e spesa. I thread agente sono carichi di lavoro a contesto lungo e molti turni, e vedere quali thread e quali modelli consumano i token è come decidi se il tuo modello predefinito si sta guadagnando il suo slot.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

Domande frequenti

Zed può usare modelli Claude, GPT e Kimi tramite un unico provider personalizzato?

Sì. Un provider personalizzato è un api_url più una allowlist available_models. Quando l'endpoint serve più fornitori, dichiara una voce per id e ogni modello dichiarato compare nel selettore del pannello agente sotto lo stesso provider e chiave, commutabile per thread.

Dove va la chiave API per un provider personalizzato di Zed?

Non in settings.json. Inseriscila nella UI delle impostazioni provider, che la memorizza nel portachiavi di sistema, oppure esporta la variabile d'ambiente derivata dalla tua chiave provider: un provider chiamato apisrouter legge APISROUTER_API_KEY. Le variabili d'ambiente hanno la precedenza sui valori del portachiavi.

Perché Zed ignora la chiave API che ho esportato nel mio profilo di shell?

Le app GUI lanciate dal dock non caricano mai il tuo profilo di shell, quindi l'export è invisibile per loro. Lancia Zed da un terminale con il comando zed così che erediti la variabile, oppure usa la UI delle impostazioni e lascia che il portachiavi tenga la chiave.

Perché il mio modello manca dal selettore del pannello agente?

I modelli dei provider personalizzati devono essere dichiarati esplicitamente; Zed non può enumerare un endpoint personalizzato. Controlla che available_models contenga la stringa id esatta, suffissi di versione inclusi, e copia gli id dalla risposta /v1/models del gateway invece di digitarli a memoria.

Cosa controllano max_tokens e max_output_tokens in available_models?

max_tokens dichiara la finestra di contesto del modello e max_output_tokens limita la lunghezza di generazione. Zed li usa per gestire i thread agente lunghi, quindi imposta max_tokens su ciò che il modello supporta davvero; sottostimarlo spreca contesto che il modello ha effettivamente.

Un provider personalizzato cambia le edit predictions di Zed?

No. Le edit predictions girano sui modelli dedicati propri di Zed e sono configurate separatamente. Un provider personalizzato compatibile OpenAI alimenta il pannello agente e l'assistente inline, che è dove va il traffico /v1/chat/completions.