Cắm DeepSeek V4-Pro vào Cursor bằng cấu hình OpenAI-compatible mặc định, bạn có thể gặp lỗi HTTP 400 ngay sau lần gọi công cụ đầu tiên. Nguyên nhân: V4-Pro trả về reasoning_content, Cursor loại bỏ trường này khỏi request tiếp theo, còn API DeepSeek lại yêu cầu chuỗi lý luận đó khi tiếp tục hội thoại có tool_calls. Cách xử lý thực tế là chạy proxy mã nguồn mở yxlao/deepseek-cursor-proxy để lưu và tiêm lại reasoning_content trước khi request được gửi tới DeepSeek.
Tóm tắt
- Cursor + DeepSeek V4-Pro có thể lỗi 400 vì Cursor bỏ qua
reasoning_content. -
deepseek-cursor-proxyđứng giữa Cursor và DeepSeek, lưureasoning_contenttheo từng hội thoại và tiêm lại khi có request gọi công cụ. - Thiết lập gồm: cài proxy, cấu hình ngrok, chạy proxy, thêm model tùy chỉnh trong Cursor.
- V4-Pro trong Cursor dùng giá API DeepSeek. Xem thêm: DeepSeek V4-Pro Giảm Giá 75% Vĩnh Viễn.
Vì sao cần proxy?
DeepSeek V4-Pro trả về hai phần trong response:
-
content: nội dung trả lời thông thường. -
reasoning_content: chuỗi suy luận của model.
Với chat thông thường, bạn có thể không cần quan tâm tới reasoning_content. Nhưng với tool calling, DeepSeek yêu cầu request tiếp theo phải giữ lại reasoning_content tương ứng với hội thoại trước đó.
Cursor hiện dùng client theo schema OpenAI Chat Completions. Vì reasoning_content không nằm trong schema OpenAI chuẩn, Cursor loại bỏ trường này khi tạo request kế tiếp. Kết quả là DeepSeek nhận một hội thoại thiếu trạng thái suy luận và trả về HTTP 400.
Proxy giải quyết đúng phần bị thiếu: ghi nhớ reasoning_content mà Cursor đã bỏ qua, rồi tiêm lại vào request tiếp theo.
Proxy hoạt động như thế nào?
deepseek-cursor-proxy làm ba việc chính:
- Lắng nghe request chat từ Cursor trên cổng cục bộ, mặc định là
9000. - Lưu
reasoning_contenttừ response của DeepSeek V4-Pro. - Khi Cursor gửi request tiếp theo, proxy tìm phần
reasoning_contentphù hợp và thêm lại trước khi chuyển tiếp tới DeepSeek.
Proxy cũng mở tunnel qua ngrok vì cấu hình custom model của Cursor yêu cầu HTTPS và thường không chấp nhận localhost.
Cache mặc định nằm tại:
~/.deepseek-cursor-proxy/reasoning_content.sqlite3
Proxy khóa cache bằng SHA-256 của prefix hội thoại đã chuẩn hóa, giúp các cuộc hội thoại song song không ghi đè lẫn nhau.
Điều kiện tiên quyết
Bạn cần:
- Cursor 2.0 trở lên.
- API key DeepSeek từ platform.deepseek.com.
- Python 3.11 trở lên.
- Tài khoản ngrok có authtoken.
Nếu chưa cài uv, xem tài liệu cài đặt uv. Với ngrok, xem hướng dẫn khởi động nhanh ngrok.
Bước 1: Cài đặt proxy
Cách nhanh nhất là dùng uv:
uv tool install deepseek-cursor-proxy
Hoặc dùng pip bằng cách clone repo:
git clone https://github.com/yxlao/deepseek-cursor-proxy.git
cd deepseek-cursor-proxy
pip install -e .
Kiểm tra lệnh đã có trong PATH:
deepseek-cursor-proxy --help
Bước 2: Cấu hình ngrok
Thêm authtoken ngrok:
ngrok config add-authtoken YOUR_NGROK_AUTHTOKEN
Nếu dùng gói miễn phí, mỗi lần restart có thể nhận một subdomain ngẫu nhiên mới. Nếu muốn URL ổn định hơn, tạo reserved domain trong dashboard ngrok và truyền vào proxy:
deepseek-cursor-proxy --ngrok-url https://your-reserved.ngrok-free.app
Bước 3: Khởi động proxy
Chạy với cấu hình mặc định:
deepseek-cursor-proxy
Output sẽ tương tự:
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
Một số flag hữu ích:
# Đổi cổng local
deepseek-cursor-proxy --port 9001
# In request/response để debug
deepseek-cursor-proxy --verbose
# Không mở ngrok tunnel
deepseek-cursor-proxy --no-ngrok
# Không hiển thị reasoning block trong Cursor
deepseek-cursor-proxy --no-display-reasoning
Giữ proxy chạy trong một terminal riêng. Cursor sẽ gọi proxy cho mỗi request tới model tùy chỉnh.
Bước 4: Thêm model tùy chỉnh trong Cursor
Trong Cursor, mở phần Settings → Models, sau đó thêm custom model.
Điền các trường:
-
Model name:
deepseek-v4-pro -
Base URL: URL ngrok kèm
/v1
Ví dụ:
https://random-name.ngrok-free.app/v1
-
API key: API key DeepSeek của bạn, thường bắt đầu bằng
sk-.
Proxy không có lớp xác thực riêng. Nó chuyển tiếp API key tới DeepSeek.
Nếu Cursor báo lỗi khi verify model, kiểm tra lại:
- Proxy còn chạy không.
- URL ngrok có đúng không.
- Base URL có kết thúc bằng
/v1không. - Log proxy có nhận request từ Cursor không.
Bước 5: Kiểm tra bằng một tool call
Trong Cursor chat, chọn custom model vừa tạo và thử prompt buộc Cursor dùng tool:
“Mở README trong repo này, liệt kê mọi khối mã, và cho tôi biết khối nào thiếu gợi ý ngôn ngữ.”
Luồng đúng sẽ là:
- Cursor gửi message tới proxy.
- Proxy chuyển tiếp tới DeepSeek.
- DeepSeek trả về
content,reasoning_contentvàtool_calls. - Proxy lưu
reasoning_content. - Cursor chạy tool, ví dụ
read_file. - Cursor gửi request tiếp theo nhưng thiếu
reasoning_content. - Proxy tìm cache phù hợp, tiêm lại
reasoning_content. - DeepSeek chấp nhận request và trả về câu trả lời cuối cùng.
Nếu chạy proxy với --verbose, bạn sẽ thấy quá trình tiêm lại trong log.
Chi phí thực tế
V4-Pro trong Cursor dùng giá API DeepSeek, không dùng quota model mặc định của Cursor. Theo mức giá được nêu trong bài gốc:
| Loại token | Giá mỗi 1 triệu token |
|---|---|
| Đầu vào cache miss | $0.435 |
| Đầu vào cache hit | $0.003625 |
| Đầu ra | $0.87 |
Ví dụ một ngày dùng nhiều:
- 50 lượt chat.
- Mỗi lượt khoảng 8.000 input token.
- Mỗi lượt khoảng 1.500 output token.
Tính nhanh:
50 × 8.000 × $0.435 / 1.000.000 = $1.74 input, trường hợp xấu nhất
50 × 1.500 × $0.87 / 1.000.000 = $0.065 output
Nếu cache hit tốt cho phần prefix hệ thống và context, chi phí input có thể giảm đáng kể. Bài phân tích giá đầy đủ nằm ở DeepSeek V4-Pro Giảm Giá 75% Vĩnh Viễn.
Xem thêm:
Trải nghiệm V4-Pro trong Cursor
1. Reasoning token có thể hiển thị
Mặc định, proxy hiển thị reasoning của DeepSeek dưới dạng block markdown có thể thu gọn bằng <details>.
Nếu không muốn thấy phần này:
deepseek-cursor-proxy --no-display-reasoning
Suy luận vẫn diễn ra, chỉ phần hiển thị bị ẩn.
2. Tool call đầu tiên có thể chậm hơn
V4-Pro là model tư duy nên thường cần thêm vài giây trước tool call đầu tiên. Sau đó các request tiếp theo chạy bình thường.
3. Refactor nhiều file có thể tốt hơn
Với các tác vụ như đổi tên, thay đổi chữ ký hàm hoặc refactor dựa trên config, reasoning chain của V4-Pro có thể giúp model theo dõi dependency nhiều file tốt hơn.
Các hướng dẫn DeepSeek + Cursor khác:
Kiểm tra thiết lập DeepSeek bằng Apidog
Tích hợp Cursor chỉ kiểm tra đường đi từ Cursor. Nếu bạn dùng V4-Pro cho bot CI, backend agent hoặc plugin IDE riêng, bạn nên có bộ test API độc lập.
Với Apidog, bạn có thể tạo environment trỏ tới:
https://api.deepseek.com/v1
Sau đó nhập API key và schema OpenAI Chat Completion để:
- Ghi lại response chuẩn từ V4-Pro và phát lại khi thay đổi prompt.
- Validate
tool_callsbằng JSON Schema. - So sánh V4-Pro và GPT-5.5 trên cùng một batch input.
Tải tại Apidog, import DeepSeek OpenAPI spec và bạn có thể dựng bàn test V4-Pro trong vài phút. Quy trình tương tự bài Cách sử dụng API DeepSeek V4.
Lỗi thường gặp
Lỗi 400 sau tool call đầu tiên
Đây là lỗi proxy được thiết kế để xử lý. Nếu vẫn gặp:
- Kiểm tra proxy có đang chạy không.
- Kiểm tra Cursor có trỏ đúng ngrok URL không.
- Đảm bảo Base URL kết thúc bằng
/v1. - Chạy proxy với
--verboseđể xem request có đi qua proxy không.
Ngrok tunnel liên tục đổi URL
Gói miễn phí có thể đổi URL sau khi restart. Nếu Cursor verify thành công rồi lỗi sau đó, có thể URL đã đổi.
Cách xử lý:
deepseek-cursor-proxy --ngrok-url https://your-reserved.ngrok-free.app
Reasoning hiển thị trùng lặp
Có thể bạn đang chạy nhiều instance proxy dùng chung SQLite cache.
Cách xử lý:
pkill -f deepseek-cursor-proxy
rm ~/.deepseek-cursor-proxy/reasoning_content.sqlite3
deepseek-cursor-proxy
Cache hit thấp
Prompt cache của DeepSeek cần prefix giống nhau theo byte. Nếu Cursor chèn timestamp hoặc session ID vào system prompt, cache hit sẽ giảm.
Bạn có thể:
- Giảm nội dung biến đổi trong system prompt.
- Chuyển nội dung động sang user message.
- Chấp nhận chi phí cao hơn cho các phiên nhiều context.
Cursor báo “model not found”
Tên model trong Cursor phải là model DeepSeek hợp lệ. Ví dụ:
deepseek-v4-pro
deepseek-v4-flash
deepseek-v3-2-pro
deepseek-r1-1
Proxy không dịch tên model. Nó chuyển tiếp nguyên chuỗi tới DeepSeek.
Nếu không muốn dùng proxy
Bạn có hai lựa chọn chính:
1. Dùng V4-Flash
deepseek-v4-flash không phải model tư duy và không trả về reasoning_content, nên Cursor có thể gọi trực tiếp mà không cần proxy. Đổi lại, bạn mất khả năng reasoning chain của V4-Pro.
2. Dùng IDE agent có hỗ trợ reasoning model
Một số công cụ như Cline, Continue hoặc plugin IDE AI khác có thể xử lý reasoning_content tự nhiên hơn trong tool calling.
Xem thêm: Trợ lý mã hóa mã nguồn mở tốt nhất năm 2026: các lựa chọn thay thế Cursor miễn phí.
Các tích hợp model khác với Cursor:
Câu hỏi thường gặp
Vì sao Cursor chưa hỗ trợ DeepSeek V4-Pro trực tiếp?
Cursor dùng schema OpenAI Chat Completions. reasoning_content là phần mở rộng riêng của DeepSeek, không thuộc schema OpenAI chuẩn. Cursor cần xử lý riêng cho provider này để giữ lại trường đó qua các tool call.
Proxy có hoạt động với DeepSeek R1 hoặc V3.2 không?
Có, miễn là model DeepSeek đó trả về reasoning_content và yêu cầu trường này trong request tiếp theo khi dùng tool calling.
Proxy có an toàn để chạy lâu dài không?
Có, nhưng lưu ý SQLite cache chứa nội dung reasoning thô từ phiên làm việc của bạn. Nếu dùng chung máy hoặc nhiều user, hãy giới hạn quyền truy cập thư mục cache.
Có thể dùng proxy không cần ngrok không?
Có:
deepseek-cursor-proxy --no-ngrok
Khi đó proxy chỉ mở:
http://127.0.0.1:9000
Tuy nhiên UI custom model của Cursor thường yêu cầu HTTPS, nên đa số trường hợp vẫn cần ngrok, Cloudflare Tunnel hoặc Tailscale Funnel.
Proxy thêm bao nhiêu độ trễ?
Proxy chỉ thêm một network hop cục bộ, một lần đọc SQLite và thao tác JSON nhỏ. Độ trễ thường không phải nút thắt cổ chai. Phần chậm hơn chủ yếu đến từ reasoning của model và tunnel HTTPS.
Proxy lưu cache theo cách nào?
Proxy băm prefix hội thoại bằng SHA-256, sau đó ánh xạ hash đó tới reasoning_content từ response DeepSeek gần nhất. Request tiếp theo được băm lại để tìm cache phù hợp. Cách này tránh việc hai hội thoại tương tự nhau làm nhiễu cache của nhau.
Kết luận
Vấn đề khi dùng DeepSeek V4-Pro trong Cursor không nằm ở khả năng model mà ở contract API: DeepSeek cần reasoning_content, còn Cursor bỏ trường đó khi tool calling. deepseek-cursor-proxy vá đúng khoảng trống này bằng cách lưu và tiêm lại reasoning state.
Ba bước nên làm tiếp theo:
- Cài proxy và test trên vài pull request hoặc task refactor thật trong repo của bạn.
- Kiểm tra system prompt của Cursor để giảm nội dung động làm hỏng prompt cache.
- Dùng Apidog để tạo bộ regression test cho endpoint DeepSeek trước khi đưa vào workflow production.





















