一键修复 Cursor 使用 DeepSeek V4 时的
reasoning_content错误,告别Rate limit exceeded,让 AI Agent 模式稳定运行。
如果你在 Cursor 中调用 DeepSeek V4(Pro / Flash)时,频繁遇到下面任意一种错误:
Provider returned error: The reasoning_content in the thinking mode must be passed back to the API.User API Key Rate limit exceeded(明明配额还剩很多却报错)AI Model Not Found: deepseek-v4-pro(后台任务报模型名无效)- 聊天第一轮正常,第二轮就开始报错、中断
不用再折腾了,跟着本指南走 5 分钟就能彻底解决。
⚠️ 2026-05-14 修复:纯文本模型现已自动过滤图片,解决 502 错误。详见 更新日志
- ✅ 自动缓存 & 回传思维链:再也不会因为
reasoning_content缺失而报错。 - ✅ 智能限流:内置令牌桶,防止突发的并发请求打满免费额度。
- ✅ 支持流式输出:不影响 Cursor 的打字机渲染效果。
- ✅ 一键启动脚本:Windows / macOS / Linux 通用,双击即可运行。
- ✅ 透明日志:终端会实时显示请求状态,方便排错。
- ✅ 零侵入:不需要修改 Cursor 程序文件,只改一个 Base URL。
| 操作系统 | 支持情况 |
|---|---|
| Windows 10 / 11 | ✅ 支持 |
| macOS | ✅ 支持 |
| Linux | ✅ 支持 |
唯一要求:安装 Python 3.8 或更高版本(安装时请务必勾选
Add Python to PATH)。
- 下载本项目仓库的 ZIP 包,解压到本地(路径请勿包含中文)。
- 进入解压后的文件夹,在文件夹地址栏输入
cmd并回车,打开命令行窗口。 - 执行以下命令安装依赖:
若提示
pip install -r requirements.txt
pip不是内部命令,请重新安装 Python 并勾选Add to PATH。
你需要一个隧道来生成公网地址(Cursor 限制访问 localhost)。
- 确保文件夹内有
cloudflared-windows-amd64.exe(若无,请前往 Cloudflare 官网 下载)。 - 双击运行
start_proxy.bat。 - 会弹出两个窗口。在隧道窗口中,找到一串
https://xxx.trycloudflare.com的地址并复制。
- 在终端中进入项目目录,运行:
bash start_proxy.sh
- 稍等片刻,复制终端输出的
https://xxx.trycloudflare.com地址。
⚠️ 注意:窗口不能关闭。隧道地址每次重启会变化,只要不关窗口就一直有效。
- 打开 Cursor 设置:按
Ctrl+Shift+P→ 输入Cursor Settings。 - 进入 Models 选项卡。
- 在 "Override OpenAI Base URL" 中,粘贴刚才复制的地址,并在末尾加上
/v1:- 例如:
https://xxxxxx.trycloudflare.com/v1
- 例如:
- 在 API Key 处填入你的 DeepSeek API Key。
- 彻底退出并重启 Cursor。
如果在执行 Apply 或后台任务时报错,请按以下步骤操作:
- 按
Ctrl+Shift+P,输入Preferences: Open User Settings (JSON)并回车。 - 在 JSON 的大括号
{}内添加如下配置:"cursor.models": { "deepseek-v4-pro": { "provider": "openai", "apiBase": "[https://你的隧道地址.trycloudflare.com/v1](https://你的隧道地址.trycloudflare.com/v1)", "apiKey": "你的DeepSeek API Key" } }
- 保存并重启 Cursor。
🔁 隧道地址变了怎么办?
每次重启脚本都会生成新地址。你只需重新获取并更新到 Cursor 的 Base URL 即可。💸 还是提示 Rate limit exceeded?
DeepSeek 免费层级频率极低。你可以编辑 `proxy.py`,将 `TokenBucket(rate=5/60.0, capacity=5)` 中的 `5` 调小(如 `3`),强制降低请求频率。🚫 必须用隧道吗?能不能连 localhost?
Cursor 出于安全原因禁止直接连接 `localhost`。Cloudflare Tunnel 是目前最简单、免费且无需注册的穿透方案。🧪 代理会影响模型智商吗?
在 99% 的场景下无感知。代理仅是在模型“忘记”回传思维链时进行自动补全,确保对话不中断。🧪 为什么只有 200k context,不是 1M?
这是 Cursor 的默认限制,不是代理问题。Cursor 默认使用 200k context window。
如需启用模型支持的 1M context,需要在 Cursor Chat 中开启 Max Mode。
路径:
Chat -> Model Selector -> Max Mode
- 更换上游:修改
proxy.py中的UPSTREAM_URL。 - 固定域名:如果你有自己的域名,可以配置 Cloudflare 命名隧道(Persistent Tunnel)。
修复内容
当 Cursor 等客户端向 deepseek-v4-pro(纯文本模型)发送包含图片的消息时,代理层现在会自动过滤掉 image_url 内容块,仅保留文本部分。如果某条消息全部为图片(无文本),则替换为提示文本,避免模型收到空消息。
此修复解决了 DeepSeek API 返回 "unknown variant image_url, expected text" 导致的 502 错误。
额外改进
- 统一上游错误返回格式,客户端将收到结构化的 JSON 错误(而非原始报错或空白页)。
- 图片兼容逻辑对推理缓存 (
reasoning_content) 无影响,历史消息处理保持正常。
感谢 @BG-ah 在 Issue #4 中反馈速率限制问题,以及 @CH-nolyn 的参与讨论。你们的反馈直接推动了本次兼容性修复,让代理在纯文本模型下运行得更稳定。
💡 提示:如果你需要让模型真正理解图片内容,请将请求中的
model字段改为支持多模态的deepseek-chat,并确保你的 DeepSeek 账户已开通相应权限。