DEV Community

Cover image for Cursor에서 DeepSeek V4-Pro 사용하는 방법: 추론 프록시 설정 가이드 (2026)
Rihpig
Rihpig

Posted on • Originally published at apidog.com

Cursor에서 DeepSeek V4-Pro 사용하는 방법: 추론 프록시 설정 가이드 (2026)

기본 OpenAI 호환 설정으로 DeepSeek V4-Pro를 Cursor에 연결하면 첫 번째 도구 호출에서 HTTP 400 오류가 발생할 수 있습니다. 원인은 V4-Pro가 reasoning_content를 반환하는 사고 모델인데, Cursor가 후속 요청에서 이 필드를 제거하기 때문입니다. DeepSeek API는 사고 체인이 누락된 도구 호출 후속 메시지를 거부합니다. 해결책은 yxlao/deepseek-cursor-proxy를 Cursor와 DeepSeek 사이에 두고, reasoning_content를 캐시한 뒤 다음 요청에 다시 삽입하는 것입니다.

오늘 Apidog를 사용해 보세요

요약

  • Cursor에서 DeepSeek V4-Pro를 OpenAI 호환 모델로 바로 연결하면 도구 호출 후 400 오류가 발생할 수 있습니다.
  • 이유는 Cursor가 DeepSeek의 reasoning_content 필드를 보존하지 않기 때문입니다.
  • deepseek-cursor-proxy는 Cursor 요청을 중간에서 받아 reasoning_content를 캐시하고 후속 요청에 다시 삽입합니다.
  • 설치 흐름은 다음과 같습니다.
    1. 프록시 설치
    2. ngrok 설정
    3. 프록시 실행
    4. Cursor 사용자 지정 모델에 ngrok URL과 DeepSeek API 키 입력
    5. 도구 호출이 필요한 프롬프트로 검증
  • Cursor 내 V4-Pro는 DeepSeek API 요율을 따릅니다. 전체 가격 정보는 DeepSeek V4-Pro 75% 가격 인하가 영구화되었습니다를 참고하세요.

왜 프록시가 필요한가

DeepSeek V4-Pro 응답에는 일반적인 content 외에 사고 과정을 담는 reasoning_content가 포함됩니다.

일반 채팅에서는 이 필드를 무시해도 됩니다. 하지만 도구 호출에서는 문제가 됩니다.

DeepSeek의 사고 모델 API 계약은 다음을 요구합니다.

  • 이전 응답에 reasoning_content가 있었다면
  • 후속 요청에서 도구 결과와 함께 해당 reasoning_content도 유지해야 함

Cursor는 OpenAI 스타일 채팅 스키마를 기준으로 요청을 구성합니다. reasoning_content는 OpenAI 스키마의 표준 필드가 아니므로 Cursor가 제거합니다.

그 결과 다음 흐름에서 실패합니다.

Cursor -> DeepSeek V4-Pro: 사용자 요청
DeepSeek -> Cursor: content + reasoning_content + tool_calls
Cursor -> DeepSeek V4-Pro: tool 결과, 하지만 reasoning_content 없음
DeepSeek -> Cursor: 400 error
Enter fullscreen mode Exit fullscreen mode

이 문제는 Cursor의 단순 버그라기보다 OpenAI 호환 API와 DeepSeek 사고 모델 계약 사이의 불일치입니다.

deepseek-cursor-proxy는 Cursor가 제거한 reasoning_content를 대신 기억하고 다시 넣어줍니다.

프록시가 하는 일

deepseek-cursor-proxy의 핵심 동작은 단순합니다.

  1. 로컬 포트에서 Cursor의 채팅 요청을 받습니다. 기본 포트는 9000입니다.
  2. DeepSeek V4-Pro 응답에서 reasoning_content를 추출해 SQLite에 저장합니다.
  3. 다음 요청에서 동일한 대화 접두사를 찾으면 캐시된 reasoning_content를 다시 삽입합니다.
  4. 수정된 요청을 DeepSeek API로 전달합니다.

캐시 위치는 기본적으로 다음과 같습니다.

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

대화 접두사는 SHA-256으로 해시됩니다. 따라서 병렬 대화가 서로 섞이지 않습니다.

또한 Cursor 사용자 지정 모델 설정은 localhost URL을 허용하지 않으므로, 프록시는 ngrok을 통해 공개 HTTPS URL을 제공합니다.

사전 요구 사항

시작하기 전에 다음이 필요합니다.

  • Cursor 2.0 이상
  • DeepSeek API 키
  • Python 3.11 이상
  • ngrok 계정 및 인증 토큰
    • 무료 계층으로도 테스트 가능합니다.
    • 프록시를 자주 재시작한다면 예약 도메인을 사용하는 편이 편합니다.
  • uv 또는 pip

1단계: 프록시 설치

가장 간단한 방법은 uv를 사용하는 것입니다.

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

pip를 선호한다면 저장소를 복제해 설치합니다.

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

설치 후 명령이 정상 등록되었는지 확인합니다.

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

2단계: ngrok 인증 토큰 설정

Cursor는 사용자 지정 모델의 Base URL로 http://localhost를 받지 않습니다. 따라서 로컬 프록시를 HTTPS URL로 노출해야 합니다.

ngrok 인증 토큰을 등록합니다.

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

무료 ngrok URL은 재시작할 때마다 변경될 수 있습니다.

고정 URL이 필요하다면 ngrok 대시보드에서 예약 도메인을 만들고 프록시 실행 시 전달합니다.

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

3단계: 프록시 실행

기본 설정으로 실행합니다.

deepseek-cursor-proxy
Enter fullscreen mode Exit fullscreen mode

첫 실행 시 프록시는 설정 파일과 SQLite 캐시를 만들고 ngrok 터널 URL을 출력합니다.

예시 출력:

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

이때 Tunnel 값을 복사해 둡니다. Cursor 설정에서 사용합니다.

자주 쓰는 옵션은 다음과 같습니다.

# 로컬 포트 변경
deepseek-cursor-proxy --port 9010

# 요청/응답 본문 로그 출력
deepseek-cursor-proxy --verbose

# ngrok 없이 로컬에서만 실행
deepseek-cursor-proxy --no-ngrok

# Cursor 화면에 reasoning 블록을 표시하지 않음
deepseek-cursor-proxy --no-display-reasoning
Enter fullscreen mode Exit fullscreen mode

--verbose는 Cursor 연동 문제를 디버깅할 때 유용합니다.

4단계: Cursor에 사용자 지정 모델 추가

Cursor 설정에서 Models 또는 Custom Models 영역으로 이동한 뒤 새 모델을 추가합니다.

필드는 다음처럼 설정합니다.

필드
모델 이름 deepseek-v4-pro
Base URL https://random-name.ngrok-free.app/v1
API Key DeepSeek API 키

주의할 점:

  • Base URL은 반드시 /v1로 끝나야 합니다.
  • 모델 이름은 실제 DeepSeek 모델 식별자와 일치해야 합니다.
  • 더 저렴한 변형을 쓰려면 deepseek-v4-flash를 사용할 수 있습니다.
  • 프록시는 API 키를 자체적으로 검증하지 않고 DeepSeek으로 전달합니다.

Cursor의 모델 확인이 성공하면 녹색 체크 표시가 나타납니다.

실패한다면 다음을 확인하세요.

- 프록시 프로세스가 실행 중인가?
- ngrok URL이 현재 터널 URL과 같은가?
- Base URL 끝에 /v1이 있는가?
- DeepSeek API 키가 올바른가?
Enter fullscreen mode Exit fullscreen mode

5단계: 도구 호출로 검증

일반 채팅보다 도구 호출을 먼저 테스트하는 것이 좋습니다. 문제가 발생하는 지점이 도구 호출 후속 요청이기 때문입니다.

예를 들어 Cursor 채팅에 다음처럼 입력합니다.

이 저장소의 README를 열고 모든 코드 블록을 나열한 다음, 언어 힌트가 누락된 코드 블록을 알려주세요.

정상 동작 흐름은 다음과 같습니다.

  1. Cursor가 사용자 메시지를 프록시로 보냅니다.
  2. 프록시는 첫 요청을 DeepSeek으로 전달합니다.
  3. DeepSeek이 content, reasoning_content, tool_calls를 반환합니다.
  4. 프록시는 reasoning_content를 캐시합니다.
  5. Cursor가 파일 읽기 같은 도구를 실행합니다.
  6. Cursor가 도구 결과를 포함한 후속 요청을 보냅니다.
  7. 프록시는 캐시된 reasoning_content를 찾아 요청에 다시 삽입합니다.
  8. DeepSeek이 요청을 수락하고 최종 응답을 반환합니다.

프록시를 다음처럼 실행하면 삽입 과정을 로그로 확인할 수 있습니다.

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

실제 비용 계산

Cursor에서 V4-Pro를 사용하면 Cursor 번들 크레딧이 아니라 DeepSeek API 요율이 적용됩니다. 2026년 5월 기준 요율은 다음과 같습니다.

토큰 유형 백만 토큰당 요율
입력, 캐시 미스 $0.435
입력, 캐시 히트 $0.003625
출력 $0.87

예를 들어 사용량이 많은 하루를 다음처럼 가정합니다.

  • 채팅 턴 50회
  • 각 턴 평균 입력 8,000토큰
  • 각 턴 평균 출력 1,500토큰
  • 시스템 및 컨텍스트 접두사 일부에서 캐시 히트 발생

최악의 입력 비용:

50 × 8,000 × $0.435 / 1,000,000 = $0.174
Enter fullscreen mode Exit fullscreen mode

출력 비용:

50 × 1,500 × $0.87 / 1,000,000 = $0.06525
Enter fullscreen mode Exit fullscreen mode

캐시 히트가 적용되면 실제 입력 비용은 더 낮아질 수 있습니다.

전체 가격 인하 계산은 DeepSeek V4-Pro 75% 가격 인하가 영구화되었습니다를 참고하세요.

DeepSeek 제품군의 기본 개념과 API 사용법은 다음 글도 참고할 수 있습니다.

Cursor에서 V4-Pro를 사용할 때의 차이점

1. 사고 토큰이 표시될 수 있음

기본적으로 프록시는 DeepSeek의 추론 내용을 접을 수 있는 마크다운 블록으로 표시합니다.

Cursor에서는 <details> 형태로 보입니다.

보기 싫다면 다음 옵션을 사용합니다.

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

이 옵션은 화면 표시만 비활성화합니다. DeepSeek으로 전달되는 reasoning_content는 유지됩니다.

2. 첫 도구 호출이 느릴 수 있음

V4-Pro는 사고 모델입니다. 첫 번째 도구 호출 전 추론 단계가 실행되므로 지연 시간이 생길 수 있습니다.

일반적으로 첫 도구 실행까지 몇 초 정도 더 걸릴 수 있습니다.

3. 복잡한 리팩토링에 유리할 수 있음

V4-Pro의 사고 체인은 여러 파일에 걸친 의존성 추적에 도움이 됩니다.

예를 들어 다음 작업에서 효과를 체감할 수 있습니다.

  • 함수 시그니처 변경
  • 여러 파일의 import 정리
  • 설정 기반 리팩토링
  • 이름 변경 후 참조 업데이트
  • 테스트 실패 원인 추적

이전 DeepSeek-Cursor 통합 패턴은 다음 글도 참고하세요.

이 글의 프록시 방식은 수동으로 추론 내용을 삽입하는 우회 방식을 대체합니다.

Apidog로 DeepSeek 설정 테스트하기

Cursor 연동은 Cursor 내부 경로만 검증합니다.

V4-Pro를 CI 봇, 백엔드 에이전트, 사용자 지정 IDE 플러그인 등에서 사용하려면 API 요청과 응답을 별도로 테스트할 수 있는 하네스가 필요합니다.

Apidog DeepSeek 테스트 화면

이때 Apidog를 사용할 수 있습니다.

기본 설정 흐름은 다음과 같습니다.

  1. Apidog 환경의 Base URL을 설정합니다.
https://api.deepseek.com/v1
Enter fullscreen mode Exit fullscreen mode
  1. DeepSeek API 키를 인증 정보로 추가합니다.
  2. OpenAI Chat Completions 호환 스키마를 가져옵니다.
  3. V4-Pro 요청을 저장하고 반복 실행합니다.
  4. 응답 구조와 tool_calls 형태를 검증합니다.

활용 예시는 다음과 같습니다.

  • 프롬프트 변경 전후 응답 비교
  • tool_calls JSON 구조 검증
  • V4-Pro와 GPT-5.5 응답 비교
  • 회귀 테스트 시나리오 구성
  • 프로덕션 에이전트 배포 전 계약 변경 감지

Apidog를 다운로드하고 DeepSeek OpenAPI 사양을 가져오면 V4-Pro 테스트 벤치를 빠르게 구성할 수 있습니다.

자세한 API 워크플로는 DeepSeek V4 API 사용 방법을 참고하세요.

문제 해결

첫 번째 도구 호출 후 400 오류가 계속 발생함

가장 흔한 원인은 Cursor가 프록시가 아닌 다른 URL을 보고 있는 것입니다.

확인할 것:

- deepseek-cursor-proxy가 실행 중인가?
- Cursor Base URL이 ngrok URL인가?
- Base URL 끝이 /v1인가?
- 프록시 로그에 Cursor 요청이 찍히는가?
Enter fullscreen mode Exit fullscreen mode

디버깅용 실행:

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

ngrok 터널이 계속 바뀜

무료 ngrok URL은 재시작 시 바뀔 수 있습니다.

해결 방법:

  1. ngrok 대시보드에서 예약 도메인을 만듭니다.
  2. 프록시 실행 시 예약 도메인을 지정합니다.
deepseek-cursor-proxy --ngrok-url https://your-reserved.ngrok-free.app
Enter fullscreen mode Exit fullscreen mode
  1. Cursor Base URL을 다음처럼 고정합니다.
https://your-reserved.ngrok-free.app/v1
Enter fullscreen mode Exit fullscreen mode

추론 내용이 중복 표시됨

동일한 SQLite 캐시를 공유하는 프록시 인스턴스가 둘 이상 실행 중일 수 있습니다.

해결:

# 실행 중인 프록시를 모두 종료한 뒤
rm ~/.deepseek-cursor-proxy/reasoning_content.sqlite3

# 하나의 인스턴스만 다시 실행
deepseek-cursor-proxy
Enter fullscreen mode Exit fullscreen mode

캐시 적중률이 낮음

DeepSeek 프롬프트 캐시는 바이트 단위로 동일한 접두사를 요구합니다.

Cursor가 시스템 프롬프트에 다음과 같은 가변 값을 넣으면 캐시 적중률이 낮아질 수 있습니다.

  • 타임스탬프
  • 세션 ID
  • 동적으로 변하는 컨텍스트

가능하면 고정 컨텍스트는 유지하고, 가변 내용은 사용자 메시지로 분리하세요.

Cursor가 “모델을 찾을 수 없음”을 표시함

Cursor 설정의 모델 이름이 실제 DeepSeek 모델 이름과 일치해야 합니다.

예시:

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

프록시는 모델 이름을 변환하지 않습니다. Cursor에 입력한 값을 그대로 DeepSeek API에 전달합니다.

프록시를 쓰지 않는 대안

프록시가 가장 직접적인 해결책이지만, 상황에 따라 다른 선택지도 있습니다.

V4-Flash 사용

deepseek-v4-flash는 사고 모델이 아니므로 reasoning_content를 반환하지 않습니다.

장점:

  • 프록시가 필요 없음
  • Cursor에서 직접 연결 가능
  • 설정이 단순함

단점:

  • V4-Pro의 사고 체인 이점은 사용할 수 없음

다른 AI IDE 플러그인 사용

Cline, Continue 등 일부 도구는 사고 모델의 reasoning_content를 더 자연스럽게 처리할 수 있습니다.

Cursor에 고정할 필요가 없다면 편집기 또는 플러그인을 바꾸는 것도 방법입니다.

관련 비교는 2026년 최고의 오픈 소스 코딩 도우미: 무료 Cursor 대안을 참고하세요.

다른 Cursor 모델 통합 글:

자주 묻는 질문

Cursor가 DeepSeek V4-Pro를 네이티브로 지원하지 않는 이유는 무엇인가요?

Cursor의 채팅 클라이언트는 OpenAI Chat Completions 스키마를 기준으로 동작합니다.

reasoning_content는 DeepSeek의 사고 모델 확장 필드이며 OpenAI 표준 필드가 아닙니다. Cursor가 제공자별 처리를 추가하기 전까지는 이 필드가 보존되지 않습니다.

프록시가 DeepSeek R1 또는 V3.2에도 작동하나요?

네.

reasoning_content를 반환하고 도구 호출 후속 요청에서 해당 필드를 요구하는 DeepSeek 사고 모델이라면 같은 방식으로 동작합니다.

Cursor의 모델 이름만 실제 DeepSeek 모델 식별자와 맞추면 됩니다.

프록시를 계속 실행해도 안전한가요?

대체로 가능합니다.

다만 SQLite 캐시에는 세션의 원시 추론 내용이 저장됩니다. 공유 머신이나 다중 사용자 환경이라면 캐시 디렉터리 권한을 제한하세요.

캐시를 디스크에 남기고 싶지 않다면 메모리 전용 옵션을 고려할 수 있지만, 프록시 재시작 후 도구 호출 연속성이 깨질 수 있습니다.

ngrok 없이 사용할 수 있나요?

프록시 자체는 ngrok 없이 실행할 수 있습니다.

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

이 경우 로컬 URL만 노출됩니다.

http://127.0.0.1:9000
Enter fullscreen mode Exit fullscreen mode

하지만 Cursor 표준 릴리스의 사용자 지정 모델 UI는 일반적으로 http:// localhost URL을 거부합니다. 대부분의 사용자는 ngrok, Cloudflare Tunnel, Tailscale Funnel 같은 HTTPS 터널이 필요합니다.

Cursor Composer에서도 작동하나요?

네.

Composer는 채팅 패널과 같은 모델 라우팅 파이프라인을 사용합니다. Composer 에이전트 내 도구 호출도 동일한 reasoning_content 요구 사항을 트리거하며, 프록시가 같은 방식으로 처리합니다.

프록시의 지연 시간 오버헤드는 어느 정도인가요?

프록시 자체의 오버헤드는 작습니다.

추가되는 작업은 다음 정도입니다.

  • 로컬 네트워크 홉 1회
  • SQLite 조회 1회
  • JSON 필드 삽입
  • ngrok 터널 경유

병목은 일반적으로 프록시가 아니라 모델 추론과 네트워크 왕복입니다.

프록시는 무엇을 캐시하나요?

프록시는 대화 접두사를 정규화한 뒤 SHA-256 해시를 만듭니다.

그 해시를 키로 사용해 마지막 DeepSeek 응답의 reasoning_content를 SQLite에 저장합니다.

다음 요청에서 같은 접두사가 발견되면 해당 reasoning_content를 다시 삽입합니다.

부분적으로 비슷한 대화는 매칭하지 않기 때문에 서로 다른 대화가 오염될 가능성을 줄입니다.

마무리

DeepSeek V4-Pro를 Cursor에서 사용할 때 핵심 문제는 모델 성능이 아니라 reasoning_content 필드 보존입니다.

deepseek-cursor-proxy를 사용하면 다음 흐름으로 해결할 수 있습니다.

Cursor
  -> deepseek-cursor-proxy
  -> DeepSeek API
  -> deepseek-cursor-proxy
  -> Cursor
Enter fullscreen mode Exit fullscreen mode

다음 순서로 적용해 보세요.

  1. deepseek-cursor-proxy를 설치합니다.
  2. ngrok HTTPS URL을 설정합니다.
  3. Cursor 사용자 지정 모델에 deepseek-v4-pro를 추가합니다.
  4. 도구 호출이 필요한 프롬프트로 테스트합니다.
  5. 필요하다면 Apidog로 DeepSeek API 요청을 별도 회귀 테스트합니다.

V4-Pro의 사고 모델 특성은 유지하면서 Cursor의 도구 호출 오류를 우회할 수 있습니다.

Top comments (0)