Como conectar o DeepSeek ao Claude Code

Written by

in

Claude Code é um agente de console da Anthropic que pode ler arquivos de projeto, editar código, executar comandos e testes, pesquisar no repositório e trabalhar com git. O principal inconveniente de utilizá-lo é o custo: sessões longas e com muito contexto consomem rapidamente o orçamento da assinatura.

Existe uma solução. DeepSeek fornece um endpoint compatível com a API Antrópica. Basta alterar o endereço base e o token, e Claude Code começará a funcionar nos modelos DeepSeek, sem necessidade de reinstalação ou patches. Neste post irei descrever como configurar isso no macOS, Linux e Windows.

Por que isso é necessário

Os motivos podem ser diferentes:
Preço. Os modelos DeepSeek são visivelmente mais baratos que o Claude, e para tarefas rotineiras do agente – navegar em um projeto, pequenas edições, executar testes – nem sempre é necessária qualidade superior.
Disponibilidade. Se você não possui uma assinatura ou o pagamento com cartão Antrópico não está disponível por algum motivo, o DeepSeek se torna uma opção funcional.
Experimentos. É interessante comparar como diferentes modelos lidam com a mesma base de código no mesmo ambiente.

O que você precisa

Você precisa do Claude Code instalado e da chave da API DeepSeek. Se o Claude Code ainda não estiver instalado, a ordem é a seguinte:
1. Instale o Node.js 18 ou posterior. No Windows, você também precisará do Git para Windows.
2. Instale o próprio Claude Code usando o comando abaixo.
3. Verifique a instalação.

npm install -g @anthropic-ai/claude-code
claude --version

Se a versão for exibida, a instalação foi bem-sucedida. A chave API é criada em sua conta pessoal DeepSeek na página de chaves.

Configuração via variáveis ​​de ambiente

Toda integração se resume a variáveis ​​de ambiente. Para macOS e Linux é assim:

export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_AUTH_TOKEN=ваш_ключ_deepseek

export ANTHROPIC_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-flash[1m]
export ANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-flash
export CLAUDE_CODE_SUBAGENT_MODEL=deepseek-flash

export CLAUDE_CODE_EFFORT_LEVEL=max
export CLAUDE_CODE_AUTO_COMPACT_WINDOW=786432

Para Windows no PowerShell a sintaxe é diferente, mas os nomes das variáveis ​​são os mesmos:

$env:ANTHROPIC_BASE_URL="https://api.deepseek.com/anthropic"
$env:ANTHROPIC_AUTH_TOKEN="ваш_ключ_deepseek"
$env:ANTHROPIC_MODEL="deepseek-flash[1m]"

Vamos descobrir o que há aqui. A variável `ANTHROPIC_BASE_URL` redireciona solicitações de servidores Anthropic para DeepSeek. `ANTHROPIC_AUTH_TOKEN` substitui sua chave. As variáveis ​​restantes determinam qual modelo é usado em qual função. Existem modelos com o sufixo `[1m]` – esta é uma opção com uma janela de contexto de cerca de um milhão de tokens, o que permite ao agente armazenar significativamente mais arquivos de projeto por vez. Conseqüentemente, `CLAUDE_CODE_AUTO_COMPACT_WINDOW` é definido para o tamanho desta janela para que a compactação automática do histórico não funcione muito cedo.

É conveniente não exportar variáveis ​​manualmente todas as vezes, mas registrá-las na configuração do Claude Code. Em seguida, as configurações serão selecionadas automaticamente na inicialização.

{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
    "ANTHROPIC_AUTH_TOKEN": "ваш_ключ_deepseek",
    "ANTHROPIC_MODEL": "deepseek-flash[1m]",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-flash",
    "CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-flash"
  }
}

Depois disso, acesse o diretório do projeto e execute o agente:

cd ваш_проект
claude

Código Claude no Código VS

O Claude Code está disponível não apenas no terminal, mas também como uma extensão do VS Code. Ele é instalado normalmente: abra o painel de extensões usando Cmd+Shift+X, encontre “Claude Code” e clique em Instalar. A expansão é produzida pela própria Antrópica.

A extensão contém sua própria cópia da CLI e lê o mesmo arquivo ~/.claude/settings.json da versão do terminal. As configurações da seção anterior também se aplicam aqui – mas com uma ressalva, que geralmente causa confusão.

A verificação de entrada ocorre antes do lançamento

Antes de começar, a extensão verifica as credenciais de sua própria configuração `claudeCode.environmentVariables`, e não de settings.json. Os valores de settings.json chegam ao processo em execução – ou seja, o endereço da API e os modelos selecionados são escolhidos corretamente – mas não passam na verificação de login da própria extensão. Se você vir a tela de login mesmo que tudo já esteja funcionando no terminal, esse é o motivo.

Isso pode ser resolvido com algumas linhas nas configurações do VS Code: duplique as variáveis ​​em `claudeCode.environmentVariables` e desative a solicitação de login.

{
  "claudeCode.environmentVariables": [
    { "name": "ANTHROPIC_BASE_URL", "value": "https://api.deepseek.com/anthropic" },
    { "name": "ANTHROPIC_AUTH_TOKEN", "value": "ваш_ключ_deepseek" },
    { "name": "ANTHROPIC_MODEL", "value": "deepseek-flash[1m]" }
  ],
  "claudeCode.disableLoginPrompt": true
}

nuance do macOS

Se você iniciar o VS Code do Dock ou Finder, ele não herdará variáveis ​​de ambiente de ~/.zshrc. Este é o comportamento padrão do macOS e é discutido especificamente na documentação do Claude Code. Ou seja, `export ANTHROPIC_BASE_URL=…` em seu shell para a extensão simplesmente não funcionará – esta variável não estará em seu ambiente.

Há duas conclusões disso. Primeiramente, as configurações em `claudeCode.environmentVariables` são mais confiáveis ​​que as variáveis ​​do shell. Em segundo lugar, se você ainda prefere um shell, inicie o editor a partir do terminal, onde as variáveis ​​já foram exportadas:

code .

O que não funciona

Em um provedor terceirizado, alguns recursos de extensão não estão disponíveis porque exigem uma conta claude.ai:
– não haverá barra de uso do plano, entrada de voz e aba Web para sessões na nuvem;
– os comandos de logout não são mostrados no menu;
– `/usage` mostrará o consumo e o número de tokens da sessão atual em vez dos limites do plano;
– O Controle Remoto não funciona se o endereço base não for Antrópico.

Este é o comportamento esperado e não um sinal de que a configuração falhou.

Separadamente, gostaria de acrescentar que JetBrains possui seu próprio plugin, mas é projetado de forma diferente: não contém uma CLI integrada, mas inicia uma já instalada no terminal integrado. Não há configurações para variáveis ​​de ambiente, então você deve iniciar o IDE a partir do terminal com variáveis ​​já exportadas.

Como o DeepSeek entende os nomes dos modelos de Claude

Claude Code refere-se internamente a modelos por nomes como Claude-opus, Claude-sonnet e Claude-haiku. DeepSeek intercepta esses nomes e os substitui pelos seus próprios:
– tudo que começa com claude-opus vai para deepseek-v4-pro;
– tudo que começa com claude-sonnet ou claude-haiku vai para deepseek-flash;
– o nome do modelo desconhecido também é reduzido para deepseek-flash.

Isso significa que mesmo sem especificar explicitamente os modelos, a integração funcionará – mas é melhor controlar explicitamente quais modelos e a que tarifa atenderão a solicitação. É por isso que nas configurações acima todas as funções são escritas manualmente.

No que prestar atenção

A compatibilidade está incompleta e você deve saber disso com antecedência. DeepSeek simplesmente ignora alguns dos recursos da API Antrópica:

Prompts de cache. O campo `cache_control` não é suportado. Claude Code usa ativamente o cache para não pagar a mais pelo envio repetido do mesmo contexto. Isso não acontecerá aqui, portanto, sessões longas são mais caras do que você esperaria do preço por token. Inicie periodicamente um novo diálogo em vez de continuar indefinidamente o antigo.
Thinking Budget. O parâmetro `thinking` é suportado, mas os `budget_tokens` dentro dele são ignorados.
Diversos. Os campos `top_k`, `service_tier`, `container` e a conexão dos servidores MCP da API também são ignorados.
MCP. O mecanismo integrado do servidor MCP no lado do DeepSeek não funciona, embora as ferramentas usuais do agente – leitura de arquivos, edição, execução de comandos, pesquisa – funcionem normalmente.

Separadamente, vale a pena mencionar os proxies. Existem projetos na comunidade como `ds-cc-proxy`, que são colocados entre Claude Code e DeepSeek e assumem a tarefa de suavizar pequenas incompatibilidades, bem como separar a sessão principal e os subagentes em diferentes modelos. Se a configuração padrão se comportar de forma instável, essa camada intermediária pode ajudar.

Roteador Código Claude

O método descrito acima coloca um modelo em todas as tarefas. Mas o agente faz coisas muito diferentes: entende a estrutura do projeto, corrige pequenas coisas e às vezes resolve um problema verdadeiramente complexo. É lógico que diferentes modelos sejam utilizados para diferentes tipos de trabalho. Isso é exatamente o que o roteador de código claude (CCR) pode fazer – um gateway local que fica entre o Código Claude e os provedores modelo.

O que isso oferece

Roteamento por regras. Você pode definir qual modelo atende a sessão principal, qual atende tarefas em segundo plano, qual atende o modo de agendamento. Faz sentido usar um modelo caro apenas para raciocínios complexos e ceder a rotina a um modelo barato.
Opções de backup. Se o provedor retornar um erro, a solicitação vai para o próximo modelo na cadeia, em vez de descartar a sessão.
Observabilidade. A interface mostra o log de solicitações, atrasos, consumo de token e custo – algo que você só pode adivinhar com uma conexão direta.
Um endereço para vários agentes. Provedores, chaves e regras residem em um só lugar e os clientes se conectam a um endereço local.

Primeiro sobre versões – isso é importante

Vale a pena avisar aqui porque você economizará tempo. O CCR foi fortemente redesenhado ao longo de sua história, e quase todos os artigos que você encontra em uma pesquisa descrevem a versão desatualizada.

Nas versões mais antigas, a configuração estava no arquivo ~/.claude-code-router/config.json com os blocos Provedores e Roteadores, e tudo era iniciado com o comando `ccr code`. Agora não funciona mais assim. A versão atual (3.x) armazena configurações no banco de dados SQLite e é gerenciada por meio de uma interface web. O antigo config.json é lido exatamente uma vez como fonte de migração se ainda não houver banco de dados – depois disso, as edições nele não afetam nada.

Ou seja, se você encontrou instruções na Internet com a edição do config.json e do comando `ccr code` e nada funcionou para você, você está editando um arquivo que ninguém lê mais. Não é sua culpa.

Instalação

Você precisará do Node.js 22 ou posterior.

npm install -g @musistudio/claude-code-router
ccr ui

O comando `ccr ui` traz o serviço em segundo plano e abre a interface de gerenciamento no navegador. É útil conhecer os outros comandos: `ccr start` inicia um serviço, `ccr stop` o interrompe, `ccr serve` funciona em primeiro plano e é conveniente quando você precisa ver logs.

Por padrão, a interface de gerenciamento reside na porta 3458, e o próprio gateway para modelos reside na porta 3456.

Configurações

Tudo é feito na interface web, sem edição manual de arquivos:
1. Na seção Provedores, adicione o provedor DeepSeek e especifique sua chave. Observação: aqui é necessário o endereço completo até o chat/ponto de conclusão, não apenas o domínio.
2. Na seção Modelos, descreva o que é esse modelo – a descrição ajuda no roteamento.
3. Na seção Configuração do agente, defina o modelo padrão.
4. Na seção Roteamento, configure as regras: qual modelo responde a quais solicitações.
5. Na página API Keys, crie uma chave de cliente CCR – é isso que Claude Code usará, não a chave DeepSeek.

Depois disso, resta enviar o Código Claude ao gateway: especificar o endereço do gateway mostrado na interface como endereço base e a chave do cliente CCR como token.

Uma coisa boa: as regras de roteamento podem ser escritas não apenas com campos, mas também com um script JavaScript, se a lógica for mais complexa do que comparar um campo.

Vale a pena usá-lo

Conectar o DeepSeek ao Claude Code é principalmente uma forma de reduzir custos sem abrir mão de um ambiente de agente conveniente. Você obtém a mesma interface, as mesmas ferramentas e o mesmo fluxo de trabalho, mas em um modelo diferente. A configuração leva alguns minutos e é totalmente reversível: basta remover as variáveis ​​de ambiente para retornar aos modelos Antrópicos.

As limitações também são claras: não há cache de prompt, compatibilidade incompleta com relação aos campos da API e a qualidade do modelo pode diferir para tarefas arquitetônicas complexas. Para trabalho rotineiro no repositório – navegação, refatoração, execução de testes – isso é mais que suficiente.

Exemplo: Oni-Extendido

Um exemplo vivo dessa combinação é meu projeto Oni-Extended, um fork do port do jogo Oni (Bungie, 2001) para Apple Silicon. As fontes do jogo são escritas em C e existem há mais de vinte anos; nunca houve nenhum teste neles e os tamanhos dos arquivos são medidos em dezenas de milhares de linhas. No entanto, novos recursos foram adicionados ao projeto por meio de Claude Code do DeepSeek: salvamento e carregamento rápido via F5/F9, um bloco de retenção de tecla e um sinalizador de lançamento -nodamage que desativa os danos.

Esta é uma boa ilustração do que foi dito acima. Todas as tarefas estão relacionadas ao trabalho rotineiro em um grande repositório – o agente examina o código de outras pessoas, encontra conexões entre módulos e testa hipóteses, em vez de projetar uma arquitetura do zero. O custo dessas sessões no DeepSeek acaba sendo visivelmente menor do que nos modelos Antrópicos, apesar de o resultado ser verificado pela própria infraestrutura do projeto: montagem, bancada de nível e testes offline.

Links

https://platform.deepseek.com/api_keys
https://api-docs.deepseek.com
https://docs.anthropic.com/en/docs/claude-code
https://github.com/anthropics/claude-code
https://github.com/musistudio/claude-code-router
https://ccrdesk.top/en/guides/cli/
https://github.com/zefir1990/Oni-Extended

Fontes

https://api-docs.deepseek.com/guides/anthropic_api
https://api-docs.deepseek.com/quick_start/agent_integrations/claude_code
https://ccrdesk.top/en/routing/
https://code.claude.com/docs/en/vs-code

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *