Cursor 接入 DeepSeek 完整教程:BYOK 全家桶收官,省钱系列④
省钱系列最后一篇。前两篇搞定了 Claude Code 和 Codex,这篇把 Cursor 也接上 DeepSeek——三个 AI 编程工具,一个 Key,全部按量付费。Cursor 用 BYOK(Bring Your Own Key)方式接 OpenAI 兼容 API,配置藏在 SQLite 配置库里,这篇文章带你走完 3 步。
文章目录
- Cursor 接入 DeepSeek 完整教程:BYOK 全家桶收官,省钱系列④
- 一、为什么 Cursor 也要接 DeepSeek
- 二、前置条件
- 三、3 步配置
- 第 1 步:备份配置库(30 秒,必做)
- 第 2 步:写入 BYOK 配置(核心)
- 第 3 步:验证
- 四、避坑清单(实测)
- 五、省钱系列总结(全家桶收官)
一、为什么 Cursor 也要接 DeepSeek
Cursor 是 AI 编程编辑器的代表,但它商业版按席位订阅,重度使用不便宜;而 **BYOK 模式(自带 Key)**可以让 Cursor 走你自己的模型提供商:
| 方案 | 费用 | 限制 |
|---|---|---|
| Cursor 商业版订阅 | 按席位按月付费 | ⚠️ 费用不低,额度/审计焦虑 |
| BYOK + DeepSeek | 按量付费,用多少花多少 | ✅ 无订阅硬性限额,国内直连 |
关键点:Cursor 的 BYOK 支持自定义 OpenAI 兼容 API(设置里填 Base URL + Key 即可),DeepSeek 的 API 完全兼容 OpenAI 格式——所以只需要把 Cursor 的内部配置指向 DeepSeek 端点就行。配置存在 SQLite 配置库里(state.vscdb),这是和 Claude Code(JSON)不一样的地方。
适合人群:Cursor 用户、想省订阅费/用国产模型的开发者。
图1|Cursor 两条路线对比:商业版按席位订阅,BYOK+DeepSeek 按量付费无硬性限额
二、前置条件
- 已安装 Cursor(配置期间必须完全关闭,运行中改库会被覆盖)
- 一个 DeepSeek API Key(
platform.deepseek.com创建,sk-开头) - 系统 Python(能跑 sqlite3 即可)
三、3 步配置
第 1 步:备份配置库(30 秒,必做)
cp"C:\Users\<你的用户名>\AppData\Roaming\Cursor\User\globalStorage\state.vscdb"state.vscdb.bak再验证一下数据库健康:
图2|健康检查:
PRAGMA integrity_check返回 ok
importsqlite3 db=sqlite3.connect(r'C:\Users\<你的用户名>\AppData\Roaming\Cursor\User\globalStorage\state.vscdb')print(db.execute("PRAGMA integrity_check").fetchone()[0])# 输出 ok第 2 步:写入 BYOK 配置(核心)
Cursor 的配置在 SQLite 的ItemTable里,两个关键键:
cursorAuth/openAIKey:你的 API KeyapplicationUser:JSON 配置(Base URL、模型列表等)
用 Python 一次写全(改前确认 Cursor 已关闭):
importsqlite3,json DB=r'C:\Users\<你的用户名>\AppData\Roaming\Cursor\User\globalStorage\state.vscdb'KEY="sk-你的DeepSeek-API-Key"KEY_STORE='cursorAuth/openAIKey'APP_KEY='src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.applicationUser'db=sqlite3.connect(DB)cur=db.cursor()# 1) 写入 API Keycur.execute("INSERT INTO ItemTable (key,value) VALUES (?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.value",(KEY_STORE,KEY))# 2) 改 applicationUser JSONcur.execute("SELECT value FROM ItemTable WHERE key=?",(APP_KEY,))d=json.loads(cur.fetchone()[0])d['useOpenAIKey']=Trued['openAIBaseUrl']='https://api.deepseek.com/v1'# ⚠️ 注意带 /v1ai=d.setdefault('aiSettings',{})forkin('userAddedModels','modelOverrideEnabled'):lst=ai.setdefault(k,[])if'deepseek-v4-flash'notinlst:lst.append('deepseek-v4-flash')cur.execute("INSERT INTO ItemTable (key,value) VALUES (?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.value",(APP_KEY,json.dumps(d,ensure_ascii=False)))db.commit()db.close()print("BYOK 配置写入完成 ✅")三个关键点:
图3|写入后的 BYOK 配置(Key 已脱敏):useOpenAIKey=true + Base URL 带 /v1 + 模型双列表
openAIBaseUrl必须带/v1(https://api.deepseek.com/v1)——漏了/v1会 404- 模型要同时加进
userAddedModels和modelOverrideEnabled——否则模型列表里找不到 cursorAuth/openAIKey支持明文写入,Cursor 启动时自动迁移到加密存储
第 3 步:验证
先验证 DeepSeek 端点(key 用你的):
curlhttps://api.deepseek.com/v1/models-H"Authorization: Bearer sk-你的Key"返回deepseek-v4-flash、deepseek-v4-pro即通过。然后重启 Cursor→ Settings → Models,能看到deepseek-v4-flash(BYOK 自定义模型),选中即生效。
图4|端点验证:
/v1/models返回 deepseek-v4-flash + v4-pro
四、避坑清单(实测)
| # | 坑 | 表现 | 解法 |
|---|---|---|---|
| 1 | Cursor 运行中改库 | 改完被覆盖,白改 | 先完全退出 Cursor(托盘也退出)再改 |
| 2 | Base URL 漏/v1 | 请求 404 | 写https://api.deepseek.com/v1 |
| 3 | PYTHONPATH 污染 | python跑进了别的虚拟环境 | unset PYTHONPATH或用系统 Python 的-I隔离模式 |
| 4 | 控制台编码 GBK | 打印 ✅ 报 UnicodeEncodeError | 不影响写入,避免打印非 GBK 字符即可 |
| 5 | 模型列表里找不到 | 只加了 userAddedModels | 两个列表都要加(见第 2 步) |
| 6 | 改完不生效 | 还在用旧配置 | 重启 Cursor 让配置重新加载 |
五、省钱系列总结(全家桶收官)
三篇教程 + 两篇复盘,凑齐 AI 编程全家桶:
| 工具 | 接入方式 | 配置难度 | 文章 |
|---|---|---|---|
| Claude Code | 3 个环境变量 | ⭐ | 系列①(教程)+ 系列②(实战复盘) |
| Codex | 官方一键脚本 | ⭐ | 系列③ |
| Cursor | SQLite 配置库 | ⭐⭐ | 系列④(本篇) |
一个 DeepSeek Key 跑三个工具,按量付费、无订阅限额、国内直连——重度使用比三份订阅省一半以上。三个工具各有侧重:Claude Code 重 Agent 自动化、Codex 适合快速原型、Cursor 是 IDE 内 AI 体验,配置互通,随时切换。
图5|AI 编程全家桶:Claude Code + Codex + Cursor 三个工具,一个 DeepSeek Key 全部跑通
我是「攻城狮小关」,专注 AI Agent 与 AI 工程化实战。省钱系列四篇完结,配置全部实测,有问题评论区见。