1. 为什么要在 Cursor 里接入 DeepSeek
Cursor 是这两年被讨论最多的 AI 编程编辑器之一,它把代码补全、对话、Agent 模式都做进了同一个界面,写代码时不用来回切窗口。DeepSeek 则是国产大模型里代码能力比较突出的一档,尤其在函数补全、重构建议、报错解释这些场景上表现稳定,调用成本也比不少海外模型低。把两者接起来,等于用 Cursor 的交互体验去驱动 DeepSeek 的推理能力,对个人开发者和中小团队来说性价比很高。
这篇内容聚焦一件事:在 Cursor 里完成 DeepSeek 的接入配置,从拿到 API Key、写 settings.json、验证连通性,到 Agent 模式下的调用链路检查,走完一个能跑通的闭环。适合已经装好 Cursor、想换掉默认模型或者想加一个备用模型的开发者。全程只需要改一个配置文件加一次对话测试,不需要装插件,也不需要动系统环境变量。
需要提前说明的是,Cursor 的模型配置走的是 OpenAI 兼容协议,所以只要某个服务提供兼容的 /v1/chat/completions 接口,就能接进来。DeepSeek 官方 API 和 TaoToken 这类聚合入口都符合这个协议,配置方式基本一致,区别只在 base_url 和模型名。下面以 TaoToken 的接入地址为例演示,因为它同时能调 DeepSeek 和其他模型,方便后面做多模型切换。
2. 接入前的前置准备:Key、地址与模型名
动手改配置之前,先把三样东西准备好:API Key、base_url、模型名。这三样缺一个,后面请求就会报 401 或 404。
API Key 在 TaoToken 控制台的 API Keys 页面创建,地址是 https://taotoken.net/api-keys 。创建时给它起个能认出来的名字,比如 cursor-deepseek,方便以后按用途区分。Key 只在创建时完整显示一次,复制后先存到本地密码管理器里,别直接贴在聊天窗口或者提交到 Git。
base_url 用 https://taotoken.net/api ,注意结尾不要带 /v1,Cursor 会自己拼路径。这一点和很多教程里写的不同,带 /v1 反而会拼成 /v1/v1/chat/completions 导致 404。模型名填 deepseek-chat,这是 DeepSeek 的对话模型标识;如果想要推理更强的版本,可以换成 deepseek-reasoner,但响应会慢一些,日常补全用 chat 就够。
| 配置项 | 值 | 说明 |
|---|---|---|
| API Key | 控制台创建 | 只显示一次,妥善保存 |
| base_url | https://taotoken.net/api | 结尾不带 /v1 |
| 模型名 | deepseek-chat | 推理版用 deepseek-reasoner |
| 协议 | OpenAI 兼容 | Cursor 原生支持 |
注意:Key 不要写进项目仓库里的任何文件。Cursor 的配置文件在用户目录下,不在项目里,这一点比改项目配置安全。
如果你之前没用过这类聚合入口,可以先去模型对话页面 https://taotoken.net/chat 发一条消息,确认 Key 本身是通的。这一步能提前排除掉 Key 复制错误、额度不足这类问题,省得后面在 Cursor 里排查半天发现是 Key 的问题。
3. 可复制的 settings.json 配置骨架
Cursor 的模型配置入口有两个:图形界面里的 Settings → Models,以及直接编辑配置文件。图形界面适合快速试,但多模型、自定义 base_url 这种需求,还是改配置文件更稳。配置文件路径按系统区分:
Windows 在%APPDATA%\Cursor\User\settings.json,macOS 在~/Library/Application Support/Cursor/User/settings.json,Linux 在~/.config/Cursor/User/settings.json。用 Cursor 自带的命令面板输入 Preferences: Open User Settings (JSON) 也能直接打开。
下面是一份可以直接抄的骨架,把你的API_KEY替换成实际 Key 即可:
{ "cursor.general.enableShadowWorkspace": true, "cursor.cpp.disabledLanguages": [], "models": { "custom": [ { "name": "deepseek-chat", "provider": "openai", "baseUrl": "https://taotoken.net/api", "apiKey": "你的API_KEY", "model": "deepseek-chat" }, { "name": "deepseek-reasoner", "provider": "openai", "baseUrl": "https://taotoken.net/api", "apiKey": "你的API_KEY", "model": "deepseek-reasoner" } ] } }几个参数的含义需要说清楚。provider固定写 openai,因为走的是兼容协议;baseUrl是请求根地址,Cursor 会在后面拼/v1/chat/completions;name是显示在模型选择器里的名字,可以随便起,但建议和model保持一致,避免自己看混;model才是真正发给服务端的模型标识,写错会返回 model not found。
如果你只想接一个模型,把 custom 数组里第二个对象删掉就行。想加 Claude 系列的话,在同一个数组里再加一个对象,model换成对应的标识即可,base_url 和 Key 不用变。这也是用聚合入口的好处:一个 Key 管多个模型,切换只改 model 字段。
改完保存,重启 Cursor,或者按 Cmd/Ctrl + Shift + P 执行 Developer: Reload Window,让配置生效。
4. 验证请求:从对话测试到 Agent 调用链路
配置写完不代表通了,得实际发一次请求验证。验证分两层:先测普通对话,再测 Agent 模式。
普通对话验证最简单。在 Cursor 里按 Cmd/Ctrl + L 打开对话面板,模型选择器里应该能看到刚才配的 deepseek-chat。选中它,输入一句测试话,比如「用 Python 写一个读取 CSV 并统计行数的函数」。如果几秒内返回了带代码块的回答,说明 Key、base_url、模型名三样都对。
如果没返回,先看 Cursor 右下角的状态提示,再打开命令面板执行 Output: Show Output Channels,选 Cursor 或者 AI 相关的通道,里面会打印实际请求的 URL 和错误码。这一步是排障的关键,比盲猜快得多。
Agent 模式的验证要复杂一点,因为它会走工具调用链路。在对话面板切到 Agent 模式(快捷键 Cmd/Ctrl + I),让它做一个需要读写文件的任务,比如「在当前项目里新建一个 utils.py,写一个日期格式化函数,然后告诉我文件路径」。Agent 模式下模型会先规划步骤,再调用文件读写工具,最后返回结果。
这里有个容易踩的坑:部分模型对 function calling 的支持程度不一样,如果 Agent 模式里模型只输出文字、不触发工具调用,通常是模型本身对工具调用的兼容性问题,不是配置错了。DeepSeek 的 chat 模型对工具调用支持是有的,但偶尔会不稳定,遇到这种情况可以换 reasoner 试试,或者在提示里明确要求「使用工具创建文件」。
验证通过后,可以顺手测一下长上下文。丢一个几百行的文件进去,让它解释某个函数的逻辑,看响应是否完整。这一步能确认模型的上下文窗口和你的使用场景匹配。
5. 本篇常见错误排查
配置过程中报错集中在几类,按出现频率排一下。
第一类是 401 Unauthorized。九成是 Key 的问题:要么复制时带了空格,要么 Key 被禁用或额度用尽。先去控制台确认 Key 状态,再检查 settings.json 里有没有多余空格。注意 JSON 里字符串不能换行,Key 必须在一行内。
第二类是 404 Not Found。基本是 base_url 写错了,最常见的是结尾多写了/v1,导致拼成/v1/v1/chat/completions。把 baseUrl 改成https://taotoken.net/api就行。另外确认没有在末尾加斜杠。
第三类是模型名不匹配。报错信息通常是 model not found 或者 invalid model。检查model字段拼写,deepseek-chat 和 deepseek-reasoner 是两个不同的标识,不能混用。如果用的是其他入口,模型名可能带前缀,以服务商文档为准。
第四类是配置不生效。改完 settings.json 后 Cursor 没重启,模型选择器里看不到新模型。执行一次 Reload Window,或者干脆退出重开。还有一种情况是配置文件路径找错了,比如在项目目录下建了个 settings.json,那个不会被读取,必须是用户目录下的那个。
第五类是 Agent 模式不调用工具。前面提过,这多半是模型兼容性问题。可以先把模型切到 deepseek-reasoner 试,或者在对话里明确指令。如果还是不行,检查 Cursor 版本,老版本对自定义模型的工具调用支持有限,升级到较新版本。
提示:每次改完配置,先用一句简单对话验证,再去跑复杂任务。这样出问题时能快速定位是配置层还是模型层。
6. 后续:多模型切换与长期使用建议
跑通 DeepSeek 之后,你其实已经掌握了 Cursor 接任意 OpenAI 兼容模型的通用方法。想加 Claude 系列做代码审查,或者加其他模型做特定任务,只需要在 custom 数组里追加对象,改 model 字段。日常写代码用 deepseek-chat 求快,遇到复杂重构切 reasoner 求稳,这种组合用起来比较顺手。
如果你打算长期在 Cursor 里跑 Agent 任务,比如让它批量改文件、跑测试、做重构,调用量会比普通对话大不少。这种情况可以了解一下 Coding Plan https://taotoken.net/coding-plan ,它针对高频编码场景做了额度设计,比按次调用更划算。接入方式和现在完全一样,只是 Key 的来源不同。
配置文件和 Key 的管理建议单独记一笔。settings.json 里明文存 Key 虽然方便,但如果你有多台机器,手动同步容易出错。可以只在一台主力机上配,其他机器用环境变量注入,Cursor 支持从环境变量读 Key。另外定期去控制台看一眼用量,避免额度耗尽导致写代码写到一半模型不可用。
最后留一个实用习惯:每次换模型或者改配置后,用同一个测试 prompt 跑一遍,比如固定让它写一个快排函数。这样能快速感知不同模型在代码风格、响应速度上的差异,也方便在出问题时判断是配置回退了还是模型本身变了。接入文档在 https://taotoken.net/doc ,遇到协议层面的疑问可以对照查。