让"VSCode+Claude/Copilot"通过API接入DeepSeek V4

本文记录笔者于2026.04.27,在自己的VSCode+Claude Code/Github Copilot工作方案上,通过DeepSeek API接入deepseek-v4-pro的尝试过程。


为啥要干这个

笔者在之前一直用的是“VSCode + Github Copilot”的工作方案,蹭了学生优惠,免费用了一段时间的GPT-5.3-Codex

近期突然发现Copilot对账号加了非常严格的使用限制,不仅一段时间内使用会超限(再次使用要等几个小时),而且每周也加了使用限制(超过限制就只能选auto模型),不再像以前那样只有每月的限制(本来以我的使用习惯,根本用不完)。

然后我就上网找到了这个文章这个讨论帖,大致了解了一下发生了啥。

我只能说,Copilot这样一改,直接让我失去使用它的最重要理由了,但是作为原生内置插件,Copilot和VSCode的相性最好,不舍得换。恰好DeepSeek V4近期发布,而我用DeepSeek API的开销可以报销,值得一试。于是我尝试了一些在Copilot上使用DeepSeek模型的方案。如果Copilot行不通,用Claude Code的壳子也不是不行。


前置条件


(失败) 让Github Copilot使用DeepSeek API

目前Github Copilot的模型管理页面,对第三方模型的支持非常少,而且不能修改Base URL,所以没办法通过直接填DeepSeek API key的方式去添加DeepSeek模型。

方法就是使用一个npm的包o2lma,它的作用是充当一个代理服务器,自动把DeepSeek API的Base URL访问封装成对本地Ollama API格式的Base URL的访问,同时在这个本地端口上监听与转发请求。

在终端敲下列命令:

1
2
3
4
5
# 安装o2lma(前提是电脑上有Node.js)
npm i -g o2lma
# 运行代理服务器
# sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 填自己的DeepSeek API key
o2lma.cmd --apikey sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

上述命令敲完,在Copilot的模型管理页面,选择Add Models...,下拉列表选Ollama,然后按照要求把信息填上(没啥有用信息,第一个信息是分类备注,爱写啥写啥,第二个信息是Base URL,保持原样就行,主机是localhost,端口只要和o2lma监听的一致就行了)。顺利的话模型就能直接添加到列表里。

测试一下效果。

这个方案目前有个重大缺陷,就是开思考模式、调用agent执行复杂任务的时候会出现如下报错信息:

1
2
3
Sorry, your request failed. Please try again.
Copilot Request id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Reason: Request Failed: 400 {"error":{"message":"The reasoning_content in the thinking mode must be passed back to the API.","type":"invalid_request_error","param":null,"code":"invalid_request_error"}}: Error: Request Failed: 400 {"error":{"message":"The reasoning_content in the thinking mode must be passed back to the API.","type":"invalid_request_error","param":null,"code":"invalid_request_error"}} at Cj._provideLanguageModelResponse (<vscode-portable-root-path>\data\extensions\github.copilot-chat-0.45.1\dist\extension.js:1688:12937) at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

视频说原因是,deepseek-v4-pro的thinking模式和工具调用同时启用时,会要求强制返回推理过程,而OpenAI兼容格式的Base URL目前不能满足这个要求。然而,o2lma又不支持使用Anthropic兼容格式的Base URL。也就是说,用这个方法没法有效使用deepseek-v4-pro,那这个结果和失败没有什么区别。

1
2
3
4
5
# 下面这两个命令是几乎等价的
o2lma.cmd --apikey sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
o2lma.cmd --url https://api.deepseek.com --apikey sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 敲这个命令后调用模型会直接报错,o2lma并不支持Anthropic兼容格式的Base URL
o2lma.cmd --url https://api.deepseek.com/anthropic --apikey sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

让Claude Code使用DeepSeek API

Claude Code插件可以通过修改配置文件的方式来修改Base URL,而且不需要额外运行什么程序,操作起来要比Github Copilot的方案舒服一点。

在VSCode里安装Claude Code插件之后,先不用打开插件页面,直接去VSCode设置里搜索Claude Code,找到Extensions/Claude Code分类里的Claude Code: Environment Varibles设置,点击Edit in setting.json,进入VSCode的设置文件。

然后在settings.json中添加如下设置(ANTHROPIC_AUTH_TOKEN的值填自己的DeepSeek API Key):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
"claudeCode.environmentVariables": [
{
"name": "ANTHROPIC_BASE_URL",
"value": "https://api.deepseek.com/anthropic"
},
{
"name": "ANTHROPIC_AUTH_TOKEN",
"value": "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
},
{
"name": "ANTHROPIC_MODEL",
"value": "deepseek-v4-pro[1m]"
},
{
"name": "ANTHROPIC_DEFAULT_OPUS_MODEL",
"value": "deepseek-v4-pro[1m]"
},
{
"name": "ANTHROPIC_DEFAULT_SONNET_MODEL",
"value": "deepseek-v4-pro[1m]"
},
{
"name": "ANTHROPIC_DEFAULT_HAIKU_MODEL",
"value": "deepseek-v4-pro[1m]"
},
{
"name": "CLAUDE_CODE_SUBAGENT_MODEL",
"value": "deepseek-v4-pro[1m]"
},
{
"name": "CLAUDE_CODE_EFFORT_LEVEL",
"value": "max"
},
{
"name": "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC",
"value": "1"
},
{
"name": "CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK",
"value": "1"
},
{
"name": "DISABLE_AUTOUPDATER",
"value": "1"
}
],

上述命令就相当于默认Claude Code里的每个模型选项都使用1M上下文窗口的deepseek-v4-pro,effort调成max,让模型发挥最大思考能力。如果不想过分烧钱,一些模型可以改成deepseek-v4-flash

改完设置之后就可以进Claude Code插件聊天页面,无需登录,直接测试。


参考链接

激活DeepSeekV4-Pro的Max模式和1M上下文

[小白技巧]配置Vscode Claude Code 插件使用deepseek-v4-pro模型(ccswitch+claudecode extension)

github copilot chat接入deepseek