DEV Community

Cover image for Como Usar DeepSeek V4-Pro com Cursor: Guia de Configuração Reasoning Proxy (2026)
Lucas
Lucas

Posted on • Originally published at apidog.com

Como Usar DeepSeek V4-Pro com Cursor: Guia de Configuração Reasoning Proxy (2026)

Conecte o DeepSeek V4-Pro ao Cursor usando as configurações compatíveis com OpenAI e a primeira chamada de ferramenta pode retornar HTTP 400. A causa: o V4-Pro retorna reasoning_content, o Cursor remove esse campo nas mensagens seguintes, e a API do DeepSeek rejeita chamadas de ferramenta sem a cadeia de raciocínio anterior. A solução prática é usar o proxy open source yxlao/deepseek-cursor-proxy, que armazena o reasoning_content em cache e o reinjeta nas próximas solicitações.

Experimente o Apidog hoje

Em resumo

  • Cursor + DeepSeek V4-Pro retornam erro 400 por padrão porque o Cursor descarta reasoning_content.
  • O deepseek-cursor-proxy fica entre Cursor e DeepSeek, salva o raciocínio da conversa e o reinjeta antes das próximas chamadas.
  • Fluxo de setup:
    1. Instale o proxy com uv ou pip.
    2. Configure o ngrok.
    3. Rode deepseek-cursor-proxy.
    4. Adicione o endpoint HTTPS no modelo personalizado do Cursor.
  • O V4-Pro no Cursor usa os preços da API DeepSeek. Veja o contexto de preço em DeepSeek V4-Pro 75% Price Cut Is Now Permanent.

Por que você precisa de um proxy

O V4-Pro retorna dois campos principais em cada resposta:

{
  "content": "resposta final",
  "reasoning_content": "cadeia de raciocínio"
}
Enter fullscreen mode Exit fullscreen mode

Em um chat simples, você poderia ignorar reasoning_content. O problema aparece quando há tool_calls.

Para modelos de pensamento, a API do DeepSeek exige que a próxima mensagem da conversa inclua o reasoning_content anterior junto com o resultado da ferramenta. Esse campo faz parte do estado da conversa.

O Cursor, porém, usa um cliente no estilo OpenAI Chat Completions. Como reasoning_content não faz parte do esquema OpenAI, ele é descartado. Na próxima chamada, o DeepSeek responde com erro 400 indicando que o reasoning_content está ausente.

Isso é uma incompatibilidade de contrato entre APIs parecidas, não exatamente um bug do Cursor. Até o Cursor oferecer suporte nativo ao V4-Pro, o proxy resolve o problema lembrando o que o Cursor remove.

O que o proxy faz

O proxy executa três tarefas:

  1. Escuta solicitações locais do Cursor, por padrão na porta 9000.
  2. Armazena o reasoning_content retornado pelo DeepSeek em SQLite.
  3. Reinjeta esse conteúdo nas próximas solicitações antes de encaminhá-las ao DeepSeek.

O cache fica em:

~/.deepseek-cursor-proxy/reasoning_content.sqlite3
Enter fullscreen mode Exit fullscreen mode

O proxy indexa cada entrada usando SHA-256 do prefixo canônico da conversa. Isso evita colisões entre conversas paralelas.

Ele também expõe a porta local via ngrok, porque o Cursor exige uma URL HTTPS no campo de modelo personalizado e não aceita localhost em configurações padrão.

Pré-requisitos

Antes de começar, tenha:

  • Cursor 2.0 ou mais recente.
  • Chave de API DeepSeek. Crie uma em platform.deepseek.com.
  • Python 3.11 ou mais recente.
  • Conta ngrok com authtoken.

Se ainda não usa uv, siga a documentação oficial de instalação do uv.

Para ngrok, use o guia de início rápido do ngrok para configurar o authtoken.

Passo 1: Instale o proxy

Com uv:

uv tool install deepseek-cursor-proxy
Enter fullscreen mode Exit fullscreen mode

Ou com pip:

git clone https://github.com/yxlao/deepseek-cursor-proxy.git
cd deepseek-cursor-proxy
pip install -e .
Enter fullscreen mode Exit fullscreen mode

Verifique a instalação:

deepseek-cursor-proxy --help
Enter fullscreen mode Exit fullscreen mode

Passo 2: Configure o ngrok

Adicione seu authtoken:

ngrok config add-authtoken SEU_AUTHTOKEN_NGROK
Enter fullscreen mode Exit fullscreen mode

A camada gratuita do ngrok gera um subdomínio aleatório a cada reinicialização. Se você quiser uma URL estável, reserve um domínio no painel do ngrok e use:

deepseek-cursor-proxy --ngrok-url https://seu-reservado.ngrok-free.app
Enter fullscreen mode Exit fullscreen mode

Passo 3: Inicie o proxy

Execute:

deepseek-cursor-proxy
Enter fullscreen mode Exit fullscreen mode

Na primeira execução, o proxy cria:

~/.deepseek-cursor-proxy/config.yaml
Enter fullscreen mode Exit fullscreen mode

A saída será parecida com:

Starting deepseek-cursor-proxy
Tunnel: https://random-name.ngrok-free.app
Local:  http://127.0.0.1:9000
Cache:  /Users/you/.deepseek-cursor-proxy/reasoning_content.sqlite3
Enter fullscreen mode Exit fullscreen mode

Flags úteis:

deepseek-cursor-proxy --port 9001
Enter fullscreen mode Exit fullscreen mode

Altera a porta local.

deepseek-cursor-proxy --verbose
Enter fullscreen mode Exit fullscreen mode

Mostra corpos de request/response nos logs.

deepseek-cursor-proxy --no-ngrok
Enter fullscreen mode Exit fullscreen mode

Desativa o túnel. Útil apenas para ferramentas que aceitam localhost.

deepseek-cursor-proxy --no-display-reasoning
Enter fullscreen mode Exit fullscreen mode

Oculta os blocos de raciocínio no Cursor, mas mantém o fluxo técnico necessário para as chamadas de ferramenta.

Mantenha o proxy rodando em um terminal separado enquanto usa o Cursor.

Passo 4: Configure o Cursor

No Cursor:

  1. Abra Settings.
  2. Vá para Models.
  3. Adicione um modelo personalizado.

Use estes campos:

Campo Valor
Nome do modelo deepseek-v4-pro
URL Base https://random-name.ngrok-free.app/v1
Chave de API sua chave DeepSeek, começando com sk-

A URL precisa terminar com /v1.

Se quiser usar a variante mais barata, configure o nome do modelo como:

deepseek-v4-flash
Enter fullscreen mode Exit fullscreen mode

O proxy encaminha o nome do modelo diretamente ao DeepSeek. Ele não traduz aliases.

Depois clique em Verify model. Um tick verde indica que a conexão está correta.

Se houver erro de conexão:

  • confirme se o proxy está rodando;
  • copie novamente a URL do ngrok;
  • verifique se a URL termina com /v1;
  • confirme se a chave DeepSeek está correta.

Passo 5: Teste uma chamada de ferramenta

Escolha o modelo personalizado no chat do Cursor e rode um prompt que force uso de ferramenta, por exemplo:

Abra o README neste repositório, liste todos os blocos de código e diga quais estão sem indicação de linguagem.

O fluxo esperado é:

  1. Cursor envia a mensagem ao proxy.
  2. Proxy encaminha ao DeepSeek.
  3. DeepSeek retorna content, reasoning_content e tool_calls.
  4. Proxy salva o reasoning_content no SQLite.
  5. Cursor executa a ferramenta, como read_file.
  6. Cursor envia o resultado da ferramenta sem reasoning_content.
  7. Proxy encontra o raciocínio em cache e reinjeta o campo.
  8. DeepSeek aceita a continuação e retorna a resposta final.

Para confirmar a injeção, rode o proxy com:

deepseek-cursor-proxy --verbose
Enter fullscreen mode Exit fullscreen mode

Como o custo fica na prática

O V4-Pro dentro do Cursor usa os preços da API DeepSeek, não os créditos agrupados do Cursor. As taxas permanentes a partir de maio de 2026 são:

Tipo de token Taxa por 1M de tokens
Entrada, cache miss US$ 0,435
Entrada, cache hit US$ 0,003625
Saída US$ 0,87

Exemplo de dia intenso:

  • 50 turnos de chat
  • média de 8.000 tokens de entrada por turno
  • média de 1.500 tokens de saída por turno

Cálculo aproximado:

50 × 8.000 × 0,435 / 1.000.000 = US$ 0,174
50 × 1.500 × 0,87 / 1.000.000 = US$ 0,065
Enter fullscreen mode Exit fullscreen mode

Com cache hits em prefixos repetidos, o custo de entrada cai mais. O artigo completo sobre preços está em DeepSeek V4-Pro 75% Price Cut Is Now Permanent.

Para contexto adicional sobre a linha DeepSeek, veja:

Como o V4-Pro se comporta dentro do Cursor

1. Tokens de pensamento aparecem no chat

Por padrão, o proxy renderiza o raciocínio do DeepSeek como um bloco markdown recolhível usando <details>.

Para ocultar:

deepseek-cursor-proxy --no-display-reasoning
Enter fullscreen mode Exit fullscreen mode

2. A primeira chamada de ferramenta tem mais latência

Como o V4-Pro é um modelo de pensamento, ele executa parte do raciocínio antes de chamar ferramentas. Espere alguns segundos extras antes da primeira ferramenta.

3. Refatorações complexas ficam mais consistentes

O V4-Pro tende a lidar melhor com dependências multi-arquivo, renomeações, mudanças de assinatura e refatorações orientadas por configuração. O ganho aparece principalmente em tarefas que exigem contexto entre vários arquivos.

Guias relacionados para modelos anteriores:

Testando sua configuração DeepSeek com Apidog

A integração com o Cursor valida apenas o caminho Cursor → proxy → DeepSeek. Se você usa o V4-Pro em outros contextos, como bot de CI, agente backend ou plugin de IDE, vale manter uma suíte de testes contra o endpoint DeepSeek.

Apidog

Com o Apidog, você pode criar um ambiente apontando para:

https://api.deepseek.com/v1
Enter fullscreen mode Exit fullscreen mode

Depois, importe o esquema OpenAI Chat Completion e configure sua chave de API.

Use esse setup para:

  • registrar respostas “golden” do V4-Pro;
  • reproduzir testes após alterações de prompt;
  • validar o formato de tool_calls com asserções JSON;
  • comparar V4-Pro e GPT-5.5 no mesmo lote de entrada.

Baixe o Apidog e use o mesmo fluxo descrito em Como usar a API DeepSeek V4.

Armadilhas comuns

Erro 400 após a primeira chamada de ferramenta

Esse é o problema que o proxy corrige. Se ainda acontecer:

  • confirme se o proxy está rodando;
  • verifique se o Cursor aponta para a URL do ngrok;
  • confirme se a URL termina com /v1;
  • rode com --verbose e veja se as requisições chegam ao proxy.

O túnel ngrok reconecta ou muda de URL

Na camada gratuita, a URL muda em reinicializações. Se isso atrapalhar, use um domínio reservado no ngrok e passe-o ao proxy:

deepseek-cursor-proxy --ngrok-url https://seu-reservado.ngrok-free.app
Enter fullscreen mode Exit fullscreen mode

O conteúdo de raciocínio aparece duplicado

Isso pode acontecer se duas instâncias do proxy usarem o mesmo SQLite.

Corrija assim:

pkill -f deepseek-cursor-proxy
rm ~/.deepseek-cursor-proxy/reasoning_content.sqlite3
deepseek-cursor-proxy
Enter fullscreen mode Exit fullscreen mode

A taxa de cache hit parece baixa

O cache de prompt do DeepSeek exige prefixos idênticos byte a byte. Se o Cursor injeta timestamps ou IDs de sessão no prompt do sistema, os hits caem.

Mitigações:

  • evite conteúdo variável no prompt do sistema;
  • mova dados variáveis para a mensagem do usuário;
  • use modo sem prompt do sistema para sessões V4-Pro, se aplicável.

O Cursor mostra “modelo não encontrado”

O nome do modelo precisa corresponder a um identificador real do DeepSeek.

Exemplos válidos:

deepseek-v4-pro
deepseek-v4-flash
deepseek-v3-2-pro
deepseek-r1-1
Enter fullscreen mode Exit fullscreen mode

Alternativas ao proxy

Usar V4-Flash sem proxy

O V4-Flash não é um modelo de pensamento e não retorna reasoning_content. O Cursor consegue chamá-lo diretamente. Você perde o raciocínio explícito, mas simplifica a integração.

Preço citado:

US$ 0,14 / US$ 0,28 por milhão de tokens
Enter fullscreen mode Exit fullscreen mode

Usar outro plugin de IDE com suporte nativo

Ferramentas como Cline, Continue e outros plugins podem lidar com modelos de pensamento diretamente. Se você não precisa ficar no Cursor, trocar a camada de IDE pode ser mais simples do que manter o proxy.

Veja também Melhores assistentes de codificação de código aberto em 2026: alternativas gratuitas ao Cursor.

Outras integrações relacionadas:

FAQ

Por que o Cursor não suporta DeepSeek V4-Pro nativamente?

Porque o cliente de chat do Cursor segue o esquema OpenAI Chat Completions. O campo reasoning_content é uma extensão específica do DeepSeek e não faz parte desse esquema.

O proxy funciona com DeepSeek R1 ou V3.2?

Sim. Ele funciona com modelos DeepSeek que retornam reasoning_content e exigem esse campo em continuações com chamadas de ferramenta.

É seguro deixar o proxy rodando?

Sim, mas o SQLite contém conteúdo bruto de raciocínio das sessões. Em máquinas compartilhadas, restrinja permissões do diretório de cache.

Se quiser evitar cache persistente, use:

deepseek-cursor-proxy --no-cache
Enter fullscreen mode Exit fullscreen mode

Nesse modo, o cache fica apenas em memória.

Posso usar sem ngrok?

Sim:

deepseek-cursor-proxy --no-ngrok
Enter fullscreen mode Exit fullscreen mode

Mas o Cursor normalmente rejeita URLs http://localhost. Para a maioria dos usuários, ngrok, Cloudflare Tunnel ou Tailscale Funnel são opções mais práticas.

Funciona com Cursor Composer 2.5?

Sim. O Composer usa o mesmo pipeline de roteamento de modelo do chat. A primeira chamada de ferramenta tem o mesmo requisito de reasoning_content, e o proxy corrige da mesma forma.

Qual é a sobrecarga de latência?

Baixa. O proxy adiciona:

  • um salto local;
  • uma consulta SQLite;
  • manipulação JSON;
  • o túnel ngrok.

A sobrecarga típica fica na casa de milissegundos. O gargalo continua sendo a inferência do modelo.

Como o proxy decide o que armazenar?

Ele calcula um hash SHA-256 do prefixo da conversa, associa esse hash ao reasoning_content retornado pelo DeepSeek e salva no SQLite. Na próxima solicitação, calcula o hash do novo prefixo e procura uma entrada correspondente.

Isso pode quebrar no futuro?

Sim, se o Cursor mudar o formato das solicitações ou adicionar suporte nativo a modelos de pensamento. Nesse caso, o proxy pode precisar de atualização ou deixar de ser necessário.

Próximos passos

A capacidade de codificação do V4-Pro fica próxima do GPT-5.5 em benchmarks citados pela comparação da DataCamp, com custo de saída aproximadamente 1/34. O bloqueio prático no Cursor é a incompatibilidade em torno de reasoning_content.

Para testar no seu projeto:

  1. Instale o proxy.
  2. Configure o modelo personalizado no Cursor.
  3. Rode cinco tarefas reais do seu repositório.
  4. Compare com seu modelo padrão atual.
  5. Configure testes de regressão no Apidog contra api.deepseek.com.

O imposto dos tokens de pensamento existe. O custo, neste caso, continua baixo.

Top comments (0)