"Por que minhas chamadas do modelo Claude no OpenCode vivem caindo?" — este é o problema que mais tira o sono dos desenvolvedores que usam o OpenCode (agora renomeado para Crush) para acessar os modelos da Claude. O motivo central é bem simples: O OpenCode utiliza o SDK nativo da Anthropic para invocar a Claude, enquanto muitos serviços proxy de API de terceiros suportam apenas o formato compatível com OpenAI. Essa incompatibilidade de formato causa erros frequentes e desconexões.
Valor principal: Ao terminar este artigo, você entenderá a arquitetura subjacente das chamadas da Claude no OpenCode, os 3 motivos comuns para interrupções e a solução completa utilizando a interface de formato nativo Anthropic da APIYI.

O que é o OpenCode: Do OpenCode ao Crush
O OpenCode é um assistente de codificação de IA para terminal baseado na linguagem Go, que utiliza o framework Bubble Tea para construir uma TUI (interface de usuário de terminal) elegante. O projeto acumulou mais de 11.600 estrelas no GitHub e foi posteriormente incorporado pela equipe da Charm, sendo renomeado para Crush (charmbracelet/crush, com mais de 22.200 estrelas).
| Informações do Projeto | Detalhes |
|---|---|
| Nome Original | OpenCode (opencode-ai/opencode) |
| Nome Atual | Crush (charmbracelet/crush) |
| Linguagem de Desenvolvimento | Go |
| Interface | TUI (Bubble Tea) |
| GitHub Stars | 22.200+ (Crush) |
| Fornecedores de IA suportados | Anthropic, OpenAI, Gemini, Groq, OpenRouter, xAI, Bedrock, Azure |
| Sistema de Ferramentas | Operações de arquivo, Bash, Grep, Glob, LSP, MCP |
| Licença Open Source | MIT |
Diferenças principais entre OpenCode, Claude Code e Aider
| Característica | OpenCode/Crush | Claude Code | Aider |
|---|---|---|---|
| Suporte a múltiplos fornecedores | SDK nativo de 7+ fornecedores | Apenas Anthropic | Múltiplos fornecedores |
| Formato de API | Formato nativo de cada fornecedor | Nativo Anthropic | Principalmente compatível com OpenAI |
| Método de invocação da Claude | Nativo via SDK Anthropic | Nativo via SDK Anthropic | Formato compatível com OpenAI |
| Raciocínio estendido | Gatilho condicional (inclui palavra-chave "think") | Suporte nativo | Depende do modelo |
| Suporte a MCP | Suportado | Suportado | Não suportado |
| UI | Interface gráfica TUI | CLI + TUI | Apenas CLI |
Diferença chave: O OpenCode usa SDKs nativos para cada fornecedor de IA, em vez de seguir um formato unificado compatível com OpenAI. Isso significa que, ao chamar a Claude, ele utiliza a API Messages nativa da Anthropic (/v1/messages), e não a API Chat Completions da OpenAI (/v1/chat/completions).
🎯 Dica fundamental: Esta é a raiz do problema — se o seu serviço proxy oferece apenas a interface
/v1/chat/completions, o SDK nativo da Anthropic do OpenCode não conseguirá realizar a chamada corretamente. A APIYI (apiyi.com) suporta tanto o formato compatível com OpenAI quanto o formato nativo da Anthropic, resolvendo esse problema de vez.
title: "3 motivos fundamentais para as interrupções frequentes do Claude no OpenCode"
description: "Entenda por que o Claude falha no OpenCode: incompatibilidade de API, problemas de streaming e divergências no formato de pensamento estendido."

Motivo 1: Incompatibilidade de formato de API (o mais comum)
Esta é a raiz do problema para 90% dos usuários.
Caminho de invocação do Claude no OpenCode:
OpenCode → Anthropic Go SDK → POST /v1/messages
↑ Usa o formato nativo da Anthropic
Muitos serviços proxy de API oferecem apenas:
Serviço proxy de API → Suporta apenas POST /v1/chat/completions
↑ Formato compatível com OpenAI
A estrutura das requisições entre os dois formatos é completamente diferente:
| Comparação | Nativo Anthropic (/v1/messages) |
Compatível com OpenAI (/v1/chat/completions) |
|---|---|---|
| Endpoint de requisição | /v1/messages |
/v1/chat/completions |
| Cabeçalho de autenticação | x-api-key: sk-ant-xxx |
Authorization: Bearer sk-xxx |
| Formato de mensagem | messages: [{role, content: [{type, text}]}] |
messages: [{role, content: "text"}] |
| Comando de sistema | system: "..." (campo de nível superior) |
messages: [{role: "system", content: "..."}] |
| Invocação de ferramenta | Tipo tool_use / tool_result |
Formato function_call / tool_calls |
| Resposta em streaming | message_start, content_block_delta |
data: {"choices": [...]} |
| Pensamento estendido | Suporte nativo ao bloco thinking |
Não suportado ou requer tratamento especial |
Quando o OpenCode envia uma requisição no formato Anthropic para um endpoint que suporta apenas o formato OpenAI, o servidor não consegue analisar a requisição, resultando em erro ou desconexão.
Motivo 2: Interrupção no streaming
O OpenCode utiliza o Messages.NewStreaming() do SDK da Anthropic para respostas em streaming. A sequência de eventos durante o streaming é:
ContentBlockStartEvent → ContentBlockDeltaEvent (múltiplos) → ContentBlockStopEvent → MessageStopEvent
Se o serviço proxy de API não oferecer suporte completo ao formato de streaming da Anthropic (por exemplo, se não retornar o evento thinking_delta ou se o formato content_block_stop estiver incorreto), a análise de eventos do OpenCode falhará e a conexão será interrompida.
A lógica de repetição do OpenCode cobre apenas HTTP 429 (limite de taxa) e 529 (sobrecarga); outros códigos de erro encerram a conexão imediatamente sem tentar novamente. Isso significa que respostas 400/500 causadas por erros de formato falham instantaneamente.
Motivo 3: Diferenças de formato no pensamento estendido e invocação de ferramentas
O OpenCode possui uma lógica de processamento especial para o pensamento estendido do Claude:
- Ativado automaticamente quando a mensagem do usuário contém a palavra-chave "think".
- Após a ativação, aloca 80% do
maxTokenscomo orçamento de pensamento. - A temperatura é forçada para 1.0.
Se o serviço proxy de API não suportar o formato nativo de bloco thinking da Anthropic, o conteúdo do pensamento será perdido ou causará erros de análise. Da mesma forma, os formatos nativos tool_use / tool_result da Anthropic são completamente diferentes dos formatos function_call / tool_calls da OpenAI.
Solução: Usando uma interface de API que suporta o formato nativo da Anthropic

Arquitetura de suporte a formato duplo da APIYI
A APIYI (apiyi.com) suporta ambos os formatos de API simultaneamente, permitindo que os desenvolvedores escolham de acordo com as necessidades de suas ferramentas:
| Formato | Endpoint de Requisição | Ferramentas Compatíveis | Integridade de Funcionalidades |
|---|---|---|---|
| Anthropic Nativo | https://api.apiyi.com/v1/messages |
OpenCode/Crush, Claude Code | 100% Completo |
| Compatível com OpenAI | https://api.apiyi.com/v1/chat/completions |
Aider, Cursor, Aplicações próprias | Funcionalidades básicas |
Opção 1: Configurar o formato nativo da Anthropic no OpenCode (Recomendado)
Como o provedor Anthropic do OpenCode não expõe diretamente a configuração de Base URL, é necessário defini-la via variáveis de ambiente:
# Definir a chave API da Anthropic (use a chave da APIYI)
export ANTHROPIC_API_KEY="sk-suaChaveAPIYI"
# Definir a Base URL da Anthropic (apontando para a interface nativa da APIYI)
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
# Iniciar o OpenCode
opencode
Ou configure no arquivo .opencode.json:
{
"providers": {
"anthropic": {
"apiKey": "sk-suaChaveAPIYI"
}
},
"agents": {
"coder": {
"model": "claude-sonnet-4-6",
"maxTokens": 16000
},
"task": {
"model": "claude-haiku-4-5-20251001",
"maxTokens": 8000
}
}
}
Uso com variáveis de ambiente:
# Adicione ao seu .bashrc ou .zshrc
export ANTHROPIC_API_KEY="sk-suaChaveAPIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
Dessa forma, o OpenCode fará a invocação do modelo via SDK nativo da Anthropic para https://api.apiyi.com/v1/messages, mantendo todas as funcionalidades nativas: Prompt Caching, raciocínio estendido e chamadas de ferramentas nativas.
Opção 2: Usar o formato compatível com OpenAI via Local Provider (Alternativa)
Se a Opção 1 não funcionar, você pode configurar a APIYI como um Local Provider no OpenCode:
# Definir o endpoint local
export LOCAL_ENDPOINT="https://api.apiyi.com/v1"
export LOCAL_API_KEY="sk-suaChaveAPIYI"
{
"providers": {
"local": {
"apiKey": "sk-suaChaveAPIYI"
}
},
"agents": {
"coder": {
"model": "claude-sonnet-4-6",
"maxTokens": 16000
}
}
}
Atenção: Esta opção utiliza o formato compatível com OpenAI (/v1/chat/completions) e perderá as seguintes funcionalidades nativas:
- Prompt Caching (cache de contexto)
- Raciocínio estendido nativo (bloco de pensamento)
- Formato de chamada de ferramentas nativo da Anthropic
💡 Dica: Priorize a Opção 1 (formato nativo da Anthropic) para obter funcionalidade completa e melhor estabilidade.
Ao obter sua chave no painel da APIYI (apiyi.com), selecione o grupo 【ClaudeCode】 para aproveitar 88% de desconto.
title: Guia Completo de Invocação da API Claude via APIYI
Guia Completo de Invocação da API Claude via APIYI
Obtenção e Configuração da Chave
| Passo | Ação | Descrição |
|---|---|---|
| 1. Obter Chave | Acesse api.apiyi.com/token |
Página de gerenciamento de tokens no painel |
| 2. Selecionar Token | Use o token padrão ou crie um novo | Ao criar, selecione o grupo 【ClaudeCode】 para 12% de desconto |
| 3. Registrar Base URL | https://api.apiyi.com |
Endereço de entrada unificado |
Dois formatos de solicitação suportados
Formato 1: Formato nativo da Anthropic (Recomendado para OpenCode/Claude Code)
Endereço da solicitação: https://api.apiyi.com/v1/messages
import anthropic
client = anthropic.Anthropic(
api_key="sk-sua-chave-APIYI",
base_url="https://api.apiyi.com"
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
messages=[
{"role": "user", "content": "Escreva um quicksort em Python"}
]
)
print(message.content[0].text)
Formato 2: Formato compatível com OpenAI (Recomendado para Aider/Cursor/aplicações próprias)
Endereço da solicitação: https://api.apiyi.com/v1/chat/completions
import openai
client = openai.OpenAI(
api_key="sk-sua-chave-APIYI",
base_url="https://api.apiyi.com/v1"
)
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{"role": "user", "content": "Escreva um quicksort em Python"}
]
)
print(response.choices[0].message.content)
Lista de modelos Claude suportados
Principais modelos atuais (Recomendados):
| ID do Modelo | Série | Posicionamento | Cenários de uso |
|---|---|---|---|
claude-opus-4-6 |
Opus | Raciocínio mais forte | Design de arquitetura complexa, análise profunda |
claude-sonnet-4-6 |
Sonnet | Equilíbrio de desempenho | Programação diária, revisão de código |
claude-haiku-4-5-20251001 |
Haiku | Resposta rápida | Tarefas simples, classificação, extração |
Modelos de raciocínio (Ativação forçada de pensamento estendido):
| ID do Modelo | Descrição |
|---|---|
claude-opus-4-6-thinking |
Opus + Raciocínio forçado |
claude-sonnet-4-6-thinking |
Sonnet + Raciocínio forçado |
claude-haiku-4-5-20251001-thinking |
Haiku + Raciocínio forçado |
Os modelos de raciocínio são o mesmo modelo base dos modelos padrão; a diferença é que o modelo de raciocínio força a ativação do pensamento estendido (thinking), gerando um processo de raciocínio mais detalhado, ideal para cenários que exigem análise profunda.
Ver código de invocação com pensamento estendido no formato nativo da Anthropic
import anthropic
client = anthropic.Anthropic(
api_key="sk-sua-chave-APIYI",
base_url="https://api.apiyi.com"
)
# Usando o modelo thinking, forçando o pensamento estendido
message = client.messages.create(
model="claude-sonnet-4-6-thinking",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # Orçamento de tokens para o pensamento
},
messages=[
{"role": "user", "content": "Analise a complexidade de tempo deste código e otimize-o"}
]
)
for block in message.content:
if block.type == "thinking":
print(f"Processo de pensamento:\n{block.thinking}")
elif block.type == "text":
print(f"Resposta final:\n{block.text}")
🚀 Início rápido: Acesse
api.apiyi.com/tokenna APIYI para obter sua chave,
selecione o grupo 【ClaudeCode】 para aproveitar 12% de desconto.
Uma única chave suporta tanto o formato nativo da Anthropic quanto o formato compatível com OpenAI,
adaptando-se a todas as ferramentas de codificação de IA populares, como OpenCode, Claude Code, Aider e Cursor.
Melhores formas de integração para diferentes ferramentas de codificação de IA
| Ferramenta | Formato de interface recomendado | Base URL | Modelo recomendado |
|---|---|---|---|
| OpenCode/Crush | Nativo Anthropic | https://api.apiyi.com |
claude-sonnet-4-6 |
| Claude Code | Nativo Anthropic | https://api.apiyi.com |
claude-sonnet-4-6 |
| Aider | Compatível OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Cursor | Compatível OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Cline (VS Code) | Compatível OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Aplicações próprias (Python) | Ambos | Ver acima | Escolha conforme a necessidade |
Consulta rápida de configuração por ferramenta
OpenCode/Crush:
export ANTHROPIC_API_KEY="sk-sua-chave-APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
Claude Code:
export ANTHROPIC_API_KEY="sk-sua-chave-APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
claude
Aider:
export OPENAI_API_KEY="sk-sua-chave-APIYI"
export OPENAI_API_BASE="https://api.apiyi.com/v1"
aider --model claude-sonnet-4-6
🎯 Gerenciamento unificado: Gerencie a invocação de API para todas as ferramentas de codificação de IA com uma única chave da APIYI (apiyi.com),
suportando mais de 300 modelos, incluindo Claude, GPT e Gemini, com faturamento e gerenciamento centralizados.
Perguntas Frequentes
Q1: O que fazer se o OpenCode exibir “agent coder not found”?
Este é o erro mais comum no OpenCode e indica que não foi encontrada uma configuração válida de provedor de IA. Verifique os seguintes pontos: 1) Se a variável de ambiente ANTHROPIC_API_KEY está definida e válida; 2) Se o campo providers.anthropic.apiKey no arquivo .opencode.json está correto; 3) Se a chave possui saldo. As chaves obtidas através da APIYI (apiyi.com/token) podem ser usadas diretamente, sem necessidade de configurações adicionais.
Q2: Por que o formato nativo da Anthropic é mais estável que o formato compatível com OpenAI?
Porque o OpenCode utiliza o SDK Go oficial da Anthropic para realizar as chamadas diretamente, e o SDK gerencia internamente o formato de eventos de streaming, lógica de retentativa e tratamento de erros específicos da Anthropic. Ao utilizar o formato compatível com OpenAI, é necessária uma camada intermediária de conversão, onde informações cruciais como eventos thinking_delta e o formato tool_use podem ser perdidas, causando falhas na análise. O endpoint /v1/messages da APIYI (apiyi.com) oferece suporte completo ao protocolo nativo da Anthropic, dispensando qualquer conversão de formato.
Q3: Qual a diferença entre modelos “thinking” e modelos comuns? Quando usar cada um?
claude-sonnet-4-6 e claude-sonnet-4-6-thinking são baseados no mesmo modelo subjacente. A versão "thinking" força a ativação do raciocínio estendido, gerando um processo de pensamento detalhado. A versão comum não o ativa por padrão (no OpenCode, ele é ativado automaticamente quando a mensagem contém a palavra-chave "think"). Recomendação: use a versão comum para tarefas diárias de codificação (é mais rápida e economiza tokens) e a versão "thinking" para design de arquiteturas complexas ou depuração (debug).
Q4: O OpenCode mudou de nome para Crush, a configuração mudou?
A arquitetura central permanece a mesma, e o Crush herdou todo o código do OpenCode. O arquivo de configuração pode ter mudado de .opencode.json para .crush.json (dependendo da versão), mas as variáveis de ambiente permanecem inalteradas. A forma de configurar ANTHROPIC_API_KEY e ANTHROPIC_BASE_URL é exatamente a mesma. Recomendamos usar a versão mais recente do Crush para obter melhor estabilidade e funcionalidades.

Resumo: Escolha o formato de API correto e o Claude funcionará perfeitamente no OpenCode
A causa raiz das interrupções frequentes do modelo Claude no OpenCode/Crush é a incompatibilidade do formato da API — o OpenCode utiliza o formato nativo da Anthropic, mas muitos serviços proxy de API suportam apenas o formato compatível com OpenAI.
A solução é bem direta:
- Use um serviço de API que suporte o formato nativo da Anthropic — como o endpoint
/v1/messagesda APIYI. - Configure as variáveis de ambiente corretamente —
ANTHROPIC_BASE_URL=https://api.apiyi.com. - Escolha o modelo adequado — use
claude-sonnet-4-6para o dia a dia eclaude-sonnet-4-6-thinkingpara raciocínios complexos.
Recomendamos usar a APIYI (apiyi.com) para gerenciar centralizadamente todas as invocações de modelo de suas ferramentas de codificação por IA. Acesse api.apiyi.com/token para obter sua chave API, selecione o grupo 【ClaudeCode】 e aproveite 12% de desconto. Uma única chave é compatível tanto com o formato nativo da Anthropic quanto com o formato da OpenAI, adaptando-se a todas as principais ferramentas de codificação por IA do mercado.
📝 Autor deste artigo: Equipe Técnica APIYI | APIYI apiyi.com – Plataforma de acesso unificado para mais de 300 APIs de Modelos de Linguagem Grande.
Referências
-
Repositório GitHub do OpenCode (arquivado): Código-fonte e documentação do projeto original.
- Link:
github.com/opencode-ai/opencode - Nota: Renomeado para Crush.
- Link:
-
Repositório GitHub do Crush: Projeto sucessor em desenvolvimento ativo.
- Link:
github.com/charmbracelet/crush - Nota: Versão mais recente mantida pela equipe da Charm.
- Link:
-
Documentação da API Anthropic: Especificação do formato nativo da Messages API.
- Link:
docs.anthropic.com/en/api/messages - Nota: Formato completo de solicitação e resposta para o endpoint
/v1/messages.
- Link:
-
Documentação da APIYI: Guia de integração da API do Claude.
- Link:
apiyi.com - Nota: Suporte simultâneo ao formato nativo da Anthropic e ao formato compatível com OpenAI.
- Link: