Adicione um provider compatível com OpenAI personalizado ao Zed.
Updated 2026-07-29
O Zed lê providers personalizados direto do settings.json. Declare um bloco language_models.openai_compatible com api_url definido como https://api.apisrouter.com/v1, liste os ids de modelo que você quer, e cada um deles aparece no seletor de modelo do painel de agente sob uma única chave.
Resposta rápida: um bloco no settings.json.
O Zed suporta providers personalizados compatíveis com OpenAI nativamente. Adicione uma entrada de provider sob language_models.openai_compatible no settings.json, defina api_url como https://api.apisrouter.com/v1, e declare cada modelo que você quer sob available_models com seu nome e tamanho de contexto. Os modelos aparecem no menu suspenso de modelo do painel de agente imediatamente. A chave de API deliberadamente não vai no settings.json. O Zed a guarda no keychain do sistema quando você a insere pela UI de configurações de provider, ou a lê de uma variável de ambiente derivada da sua chave de provider: um provider chamado apisrouter lê APISROUTER_API_KEY. Variáveis de ambiente têm precedência sobre valores no keychain.
{
"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
}
]
}
}
}
}Como o Zed resolve providers e modelos personalizados.
O Zed (zed-industries no GitHub, cerca de 87 mil estrelas) é um editor de alta performance com um painel de agente que planeja, edita arquivos e roda ferramentas. Seu tipo de provider openai_compatible fala o protocolo padrão /v1/chat/completions, que é exatamente o que um gateway multi-fornecedor serve, então nenhum plugin ou extensão fica entre o editor e o endpoint. A chave de provider que você escolhe ("apisrouter" acima) tem dupla função. Ela nomeia o provider nas configurações do painel de agente, e gera o nome da variável de ambiente que o Zed verifica para a chave, em caixa alta com um sufixo _API_KEY. Essa regra de nomeação vale a pena internalizar antes de depurar qualquer coisa: renomeie o provider e o nome de variável esperado muda junto. available_models é uma allowlist. O Zed não consegue enumerar um endpoint personalizado por conta própria, então só os ids que você declara ficam selecionáveis, cada um uma string exata incluindo qualquer sufixo de versão. Quando o endpoint atrás de api_url serve ids Claude, GPT, Gemini e Kimi lado a lado, um bloco provider transforma o seletor do painel de agente em um painel de troca entre fornecedores atrás de uma chave. Uma observação de escopo: o recurso de edit predictions do Zed usa seus próprios modelos dedicados e é configurado separadamente; um provider personalizado alimenta o painel de agente e o assistente inline, não as edit predictions.
Configuração completa: modelos, tamanhos de contexto e capacidades.
Cada entrada de available_models aceita mais que um nome. max_tokens declara a janela de contexto do modelo, e max_output_tokens limita o tamanho da geração; o Zed usa esses números para gerenciar threads de agente longas, então declarar um modelo de contexto longo com um max_tokens pequeno desperdiça silenciosamente a margem do modelo. O objeto capabilities diz ao Zed o que o modelo suporta: defina tools como true para qualquer coisa que você planeja dirigir com o painel de agente, e habilite images só para modelos que genuinamente aceitam entrada de imagem. Para a chave, o caminho confiável em um editor de desktop é a UI de configurações de provider, que guarda o valor no keychain do sistema. O caminho por variável de ambiente também funciona, com uma ressalva coberta na seção de depuração: aplicativos gráficos lançados do dock não herdam o perfil do seu 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 }
]
}
}
}
}Escolhendo modelos para o painel de agente.
Como cada modelo declarado fica no mesmo seletor, o fluxo de trabalho prático é a comparação em trabalho real em vez de benchmarks: rode o mesmo tipo de tarefa por dois candidatos em dias diferentes e deixe o log de uso por chave precificar cada um. Uma troca de modelo no Zed é uma seleção de menu suspenso, então o custo do experimento é zero de configuração.
- O painel de agente carrega engenharia de verdade: ler arquivos, planejar edições em múltiplos passos, rodar ferramentas em threads longas. Um modelo de codificação de ponta (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5) pertence a esse slot.
- Ids ajustados para código como kimi-k2.7-code valem a pena declarar mesmo quando não são seu padrão; trocar para uma sessão pesada de refatoração é uma seleção no seletor, não uma edição de configuração.
- Modelos de contexto longo como gemini-3.1-pro-preview ganham seu lugar quando threads puxam rotineiramente arquivos grandes ou contexto de módulo inteiro para uma única conversa.
- O assistente inline dura menos que threads de agente, então um id rápido de nível intermediário mantém transformações de tiro único ágeis sem queimar tokens de ponta em reescritas de uma linha.
Pague pelo uso · abaixo do preço oficial
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Modelo | Preço oficial | Nosso preço |
|---|---|---|
| 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 |
Os modos de falha específicos dos providers personalizados do Zed.
A chave está no settings.json e nada funciona. O Zed não lê chaves de API do settings.json por design. Insira a chave na UI de configurações de provider, ou exporte a variável de ambiente derivada; uma chave colada no JSON é ignorada. A variável de ambiente está definida mas o Zed ainda pede uma chave. O nome da variável é derivado da chave de provider, em caixa alta com _API_KEY anexado, então um provider chamado apisrouter precisa de APISROUTER_API_KEY, não OPENAI_API_KEY. E no macOS, um app lançado do dock nunca carrega o perfil do seu shell, então exports de perfil ficam invisíveis para ele. Lance o Zed de um terminal com o comando zed, ou use o caminho do keychain e evite o problema por completo. Um modelo está ausente do seletor. available_models é uma allowlist; um id que você assumiu mas nunca declarou simplesmente não existe. Ids são strings exatas incluindo sufixos de versão, e a listagem /v1/models do gateway é a grafia autoritativa para copiar. O agente não consegue usar ferramentas. Se o objeto capabilities de um modelo diz que tools é false, o Zed não vai oferecer uso de ferramentas com ele. Declare capabilities para corresponder ao que o modelo de fato suporta. api_url sem /v1. O cliente anexa caminhos de rota como /chat/completions à base que você fornece, então https://api.apisrouter.com/v1 está correto e o host puro não. Uma falha no formato 404 em um bloco aparentemente correto quase sempre é isso.
Quem roteia o Zed por um gateway.
- Desenvolvedores que vivem no editor e querem Claude, GPT e Kimi em um seletor do painel de agente em vez de manter credenciais de provider separadas por fornecedor.
- Engenheiros comparando modelos de codificação em edições reais. Cada candidato é uma entrada declarada e uma seleção no menu suspenso; sem contas novas por experimento.
- Times padronizando um único segredo. Um único APISROUTER_API_KEY na documentação de onboarding substitui uma checklist de chaves por fornecedor, e o uso por chave mostra o que cada assento gasta.
- Usuários combinando um modelo de agente de ponta com um modelo de assistente inline rápido de um fornecedor diferente, algo que configurações de fornecedor único não conseguem expressar.
- Desenvolvedores sem acesso ao faturamento de um determinado fornecedor. O acesso baseado em recarga sem exigência de cartão remove a dependência de cadastro por provedor.
Verifique o endpoint e depure a primeira thread.
Antes de começar uma thread de agente, liste o que o gateway serve. Os ids retornados por /v1/models são exatamente as strings que suas entradas de available_models precisam usar. As falhas da primeira thread são consistentes. Um 401 significa que a chave que o Zed resolveu está errada ou ausente: verifique a entrada no keychain nas configurações de provider, ou confirme que a variável de ambiente derivada está visível para o processo do Zed e não só para o seu terminal. Um erro de modelo não encontrado do gateway significa que um nome declarado não corresponde a um id servido, sufixo de versão incluído. Se o bloco provider não aparecer nas configurações de jeito nenhum, valide o JSON; o settings.json tolera comentários mas não erros estruturais. Assim que as requisições fluem, o console da APIsRouter mostra modelo, contagens de token e gasto por requisição. Threads de agente são cargas de trabalho de contexto longo e muitos turnos, e ver quais threads e quais modelos consomem os tokens é como você decide se seu modelo padrão está valendo o lugar.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Perguntas frequentes
O Zed pode usar modelos Claude, GPT e Kimi por um único provider personalizado?
Sim. Um provider personalizado é um api_url mais uma allowlist de available_models. Quando o endpoint serve múltiplos fornecedores, declare uma entrada por id e cada modelo declarado aparece no seletor do painel de agente sob o mesmo provider e chave, trocável por thread.
Onde vai a chave de API para um provider personalizado do Zed?
Não vai no settings.json. Insira-a na UI de configurações de provider, que a guarda no keychain do sistema, ou exporte a variável de ambiente derivada da sua chave de provider: um provider chamado apisrouter lê APISROUTER_API_KEY. Variáveis de ambiente têm precedência sobre valores no keychain.
Por que o Zed ignora a chave de API que exportei no perfil do meu shell?
Apps gráficos lançados do dock nunca carregam o perfil do seu shell, então o export fica invisível para eles. Lance o Zed de um terminal com o comando zed para que ele herde a variável, ou use a UI de configurações e deixe o keychain guardar a chave.
Por que meu modelo está ausente do seletor do painel de agente?
Modelos de provider personalizado precisam ser declarados explicitamente; o Zed não consegue enumerar um endpoint personalizado. Verifique que available_models contém a string de id exata, sufixos de versão incluídos, e copie os ids da resposta /v1/models do gateway em vez de digitá-los de memória.
O que max_tokens e max_output_tokens controlam em available_models?
max_tokens declara a janela de contexto do modelo e max_output_tokens limita o tamanho da geração. O Zed usa esses valores para gerenciar threads de agente longas, então defina max_tokens para o que o modelo genuinamente suporta; subestimá-lo desperdiça contexto que o modelo realmente tem.
Um provider personalizado muda as edit predictions do Zed?
Não. As edit predictions rodam nos próprios modelos dedicados do Zed e são configuradas separadamente. Um provider personalizado compatível com OpenAI alimenta o painel de agente e o assistente inline, que é para onde vai o tráfego /v1/chat/completions.