Resolvendo as 3 causas fundamentais e soluções para as interrupções frequentes do modelo Claude no OpenCode

"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.

opencode-claude-model-disconnect-fix-anthropic-native-api-apiyi-guide-pt-pt 图示

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."

opencode-claude-model-disconnect-fix-anthropic-native-api-apiyi-guide-pt-pt 图示

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 maxTokens como 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

opencode-claude-model-disconnect-fix-anthropic-native-api-apiyi-guide-pt-pt 图示

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/token na 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.

opencode-claude-model-disconnect-fix-anthropic-native-api-apiyi-guide-pt-pt 图示

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:

  1. Use um serviço de API que suporte o formato nativo da Anthropic — como o endpoint /v1/messages da APIYI.
  2. Configure as variáveis de ambiente corretamenteANTHROPIC_BASE_URL=https://api.apiyi.com.
  3. Escolha o modelo adequado — use claude-sonnet-4-6 para o dia a dia e claude-sonnet-4-6-thinking para 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

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Deixe um comentário