Skip to content

Commit 3b0fcc5

Browse files
authored
fix(provider): remove V4 Pro retirement notices (#272)
Keep DeepSeek V4 Pro available with its existing pricing after the cancelled retirement date. Limit retirement notices to legacy Flash model names and update the English and Chinese documentation.
1 parent 7126168 commit 3b0fcc5

9 files changed

Lines changed: 29 additions & 53 deletions

File tree

README.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@ Love DeepSeek's price-performance but don't want to give up GitHub Copilot's age
3333
## Features
3434

3535
### DeepSeek models in the model picker
36-
The picker includes V4.1 Flash and three legacy V4 entries, with long context, tool calling, and configurable thinking effort.
36+
The picker includes V4.1 Flash, V4 Pro, and entries for the legacy Flash model names, with long context, tool calling, and configurable thinking effort.
3737

3838
### Native Vision and Vision Proxy
3939
Choose the image path that fits the conversation:
4040

4141
- **DeepSeek V4.1 Flash and Flash Vision Exp** handle image attachments natively, without Vision Proxy.
4242
- The **DeepSeek V4 Flash and Pro** entries use Vision Proxy: an image-capable model first describes each attachment, then the main DeepSeek model receives the description with the conversation. Auto mode selects Flash Vision Exp when available, while an explicitly configured VS Code model or API endpoint remains supported.
4343

44-
[Context caching](https://api-docs.deepseek.com/guides/kv_cache/) requires a full match with a cached prefix. Choose V4.1 Flash for new conversations and plan when to migrate existing ones.
44+
[Context caching](https://api-docs.deepseek.com/guides/kv_cache/) requires a full match with a cached prefix.
4545

4646
<p align="center">
4747
<img src="resources/screenshots/03-vision.png" alt="Dropping an image into Copilot Chat and DeepSeek responding to it via the vision proxy" width="800">
@@ -86,18 +86,20 @@ Install from the registry used by your editor:
8686

8787
1. Run **DeepSeek: Set API Key** from the Command Palette (`Cmd+Shift+P`)
8888
2. Paste your key or compatible provider token (official DeepSeek keys usually start with `sk-`)
89-
3. Open Copilot Chat, click the model picker, and choose **DeepSeek V4.1 Flash**
89+
3. Open Copilot Chat, click the model picker, and choose **DeepSeek V4.1 Flash** or **DeepSeek V4 Pro**
9090
4. That's it — chat away
9191

9292
## Models
9393

9494
| Model Entry | Image Handling | Thinking Effort | Official API Status |
9595
|---|---|---|---|
96-
| **DeepSeek V4.1 Flash** | Native image input | `none` / `low` / `high` / `max` | Recommended for new conversations |
96+
| **DeepSeek V4.1 Flash** | Native image input | `none` / `low` / `high` / `max` | Available via `deepseek-flash` |
97+
| **DeepSeek V4 Pro** | Vision Proxy | `none` / `low` / `high` / `max` | API services continue; billing method unchanged |
9798
| **DeepSeek V4 Flash** | Vision Proxy | `none` / `low` / `high` / `max` | Model retired; legacy name still accepted |
98-
| **DeepSeek V4 Pro** | Vision Proxy | `none` / `low` / `high` / `max` | Retires on September 14, 2026 at 12:00 Beijing time |
9999
| **DeepSeek V4 Flash Vision Exp** | Native image input | `none` / `low` / `high` / `max` | Model retired; legacy name still accepted |
100100

101+
On the official API, both legacy model names (`deepseek-v4-flash` and `deepseek-v4-flash-vision-exp`) route to DeepSeek-V4.1-Flash and use Flash pricing.
102+
101103
All four entries support thinking mode, tool calling, and 1M token context. See the official [Models & Pricing](https://api-docs.deepseek.com/quick_start/pricing/) documentation for retirement, routing, and billing details.
102104

103105
## Settings
@@ -107,7 +109,7 @@ All four entries support thinking mode, tool calling, and 1M token context. See
107109
| `deepseek-copilot.baseUrl` | `https://api.deepseek.com` | API endpoint — change for self-hosted / proxied deployments |
108110
| `deepseek-copilot.requestHeaders` | `{}` | Custom headers for chat completions. [Configuration guide](https://github.com/Vizards/deepseek-v4-for-copilot/blob/main/docs/settings/request-headers.en.md) |
109111
| `deepseek-copilot.maxTokens` | `0` | Max output tokens (`0` = API default). Useful for cost control |
110-
| `deepseek-copilot.modelIdOverrides` | prefilled official ID map | API model IDs to send for V4.1 Flash and the three legacy V4 entries. Change only for compatible third-party APIs with different model names |
112+
| `deepseek-copilot.modelIdOverrides` | prefilled official ID map | API model IDs to send for each DeepSeek model entry. Change only for compatible third-party APIs with different model names |
111113
| `deepseek-copilot.debugMode` | `minimal` | Diagnostic mode: `minimal` for token usage only, `metadata` for privacy-preserving logs, or `verbose` for full request dumps and pipeline snapshots under extension global storage. Full dumps may include sensitive prompt text, tool schemas, file snippets, and image descriptions. Use `DeepSeek: Open Request Dumps Folder` to open the dump location |
112114
| `deepseek-copilot.visionModel` | *(auto)* | Vision Proxy used by V4 Flash and Pro. Auto mode selects Flash Vision Exp when available; configure another VS Code model or API endpoint with `DeepSeek: Configure Vision Proxy` |
113115
| `deepseek-copilot.visionPrompt` | *(built-in)* | Prompt used by V4 Flash/Pro's Vision Proxy to describe image attachments. It does not affect native V4.1 Flash or Flash Vision Exp requests |

README.zh-cn.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,15 @@
3333
## 功能特性
3434

3535
### DeepSeek 模型出现在模型选择器中
36-
选择器包含 V4.1 Flash 和三个旧 V4 入口,支持长上下文、工具调用和可配置的思考强度。
36+
选择器包含 V4.1 Flash、V4 Pro,并保留旧 Flash 模型名对应的入口,支持长上下文、工具调用和可配置的思考强度。
3737

3838
### 原生视觉与视觉代理
3939
可以根据对话需要选择不同的图片处理路径:
4040

4141
- **DeepSeek V4.1 Flash 和 Flash Vision Exp** 直接处理图片附件,不经过视觉代理。
4242
- **DeepSeek V4 Flash 和 Pro** 入口使用视觉代理:先由支持图片输入的模型描述附件,再将描述连同对话内容交给 DeepSeek 主模型。自动模式会在可用时选择 Flash Vision Exp,同时继续支持显式配置其他 VS Code 模型或 API 端点。
4343

44-
[上下文缓存](https://api-docs.deepseek.com/zh-cn/guides/kv_cache/)命中需要完整匹配已有的缓存前缀。新对话推荐选择 V4.1 Flash,旧对话可按进度安排迁移。
44+
[上下文缓存](https://api-docs.deepseek.com/zh-cn/guides/kv_cache/)命中需要完整匹配已有的缓存前缀。
4545

4646
<p align="center">
4747
<img src="resources/screenshots/03-vision.png" alt="将图片拖入 Copilot Chat,DeepSeek 通过视觉代理响应" width="800">
@@ -86,18 +86,20 @@ API Key 存储在 VS Code 的 `SecretStorage` 中(macOS 钥匙串 / Windows
8686

8787
1. 通过命令面板(`Cmd+Shift+P`)运行 **DeepSeek: 设置 API Key**
8888
2. 粘贴你的 Key 或兼容的 provider token(官方 DeepSeek Key 通常以 `sk-` 开头)
89-
3. 打开 Copilot Chat,点击模型选择器,选择 **DeepSeek V4.1 Flash**
89+
3. 打开 Copilot Chat,点击模型选择器,选择 **DeepSeek V4.1 Flash****DeepSeek V4 Pro**
9090
4. 搞定——开始聊天
9191

9292
## 模型
9393

9494
| 模型入口 | 图片处理 | 思考强度 | 官方 API 状态 |
9595
|---|---|---|---|
96-
| **DeepSeek V4.1 Flash** | 原生图片输入 | `停用` / `轻量` / `标准` / `深度` | 新对话推荐使用 |
96+
| **DeepSeek V4.1 Flash** | 原生图片输入 | `停用` / `轻量` / `标准` / `深度` | 使用模型名 `deepseek-flash` 调用 |
97+
| **DeepSeek V4 Pro** | 视觉代理 | `停用` / `轻量` / `标准` / `深度` | 继续提供 API 调用服务,计费方式保持不变 |
9798
| **DeepSeek V4 Flash** | 视觉代理 | `停用` / `轻量` / `标准` / `深度` | 原模型已下线;旧模型名仍可调用 |
98-
| **DeepSeek V4 Pro** | 视觉代理 | `停用` / `轻量` / `标准` / `深度` | 将于北京时间 2026 年 9 月 14 日 12:00 下线 |
9999
| **DeepSeek V4 Flash Vision Exp** | 原生图片输入 | `停用` / `轻量` / `标准` / `深度` | 原模型已下线;旧模型名仍可调用 |
100100

101+
在官方 API 中,两个旧模型名(`deepseek-v4-flash``deepseek-v4-flash-vision-exp`)的请求均由 DeepSeek-V4.1-Flash 提供服务,按 Flash 价格计费。
102+
101103
四个入口均支持思考模式、工具调用和 1M Token 上下文。官方 API 的下线、路由和计费说明见[模型与价格文档](https://api-docs.deepseek.com/zh-cn/quick_start/pricing/)
102104

103105
## 设置项
@@ -107,7 +109,7 @@ API Key 存储在 VS Code 的 `SecretStorage` 中(macOS 钥匙串 / Windows
107109
| `deepseek-copilot.baseUrl` | `https://api.deepseek.com` | API 端点——可改为自托管或代理部署地址 |
108110
| `deepseek-copilot.requestHeaders` | `{}` | 聊天补全请求的自定义请求头。[配置说明](https://github.com/Vizards/deepseek-v4-for-copilot/blob/main/docs/settings/request-headers.zh.md) |
109111
| `deepseek-copilot.maxTokens` | `0` | 最大输出 Token 数(`0` = API 默认值)。可用于成本控制 |
110-
| `deepseek-copilot.modelIdOverrides` | 预填官方 ID 映射 | V4.1 Flash 和三个旧 V4 入口对应的 API 模型 ID。仅在使用模型名不同的兼容第三方 API 时修改 |
112+
| `deepseek-copilot.modelIdOverrides` | 预填官方 ID 映射 | 各 DeepSeek 模型入口对应的 API 模型 ID。仅在使用模型名不同的兼容第三方 API 时修改 |
111113
| `deepseek-copilot.debugMode` | `minimal` | 诊断模式:`minimal` 仅上报 token 用量,`metadata` 输出隐私安全日志,`verbose` 将完整请求 dump 和 pipeline snapshot 写入扩展 global storage。完整 dump 可能包含敏感提示词文本、工具定义、文件片段和图片描述。使用 `DeepSeek: 打开请求 Dump 目录` 打开 dump 位置 |
112114
| `deepseek-copilot.visionModel` | *(自动)* | V4 Flash 和 Pro 使用的视觉代理。自动模式会在可用时选择 Flash Vision Exp;也可通过 `DeepSeek: 配置视觉代理` 改用其他 VS Code 模型或 API 端点 |
113115
| `deepseek-copilot.visionPrompt` | *(内置)* | V4 Flash/Pro 的视觉代理用于描述图片附件的提示词,不影响 V4.1 Flash 或 Flash Vision Exp 的原生图片请求 |

package.nls.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
"deepseek-copilot.config.modelIdOverrides.deepseek-v4-pro.description": "API model ID for DeepSeek V4 Pro",
3333
"deepseek-copilot.config.modelIdOverrides.deepseek-v4-flash-vision-exp.description": "API model ID for DeepSeek V4 Flash Vision Exp",
3434
"deepseek-copilot.config.visionModel.description": "Vision Proxy used by DeepSeek V4 Flash and Pro. When unset, auto mode selects DeepSeek V4 Flash Vision Exp if available. Configure a different VS Code model or API endpoint with [Configure Vision Proxy](command:deepseek-copilot.setVisionModel).",
35-
"deepseek-copilot.config.visionPrompt.description": "Prompt used by legacy V4 Flash and Pro entries' Vision Proxy to describe image attachments. It does not affect native V4.1 Flash or Flash Vision Exp requests.\n\n[Configure Vision Proxy](command:deepseek-copilot.setVisionModel)"
35+
"deepseek-copilot.config.visionPrompt.description": "Prompt used by V4 Flash and Pro entries' Vision Proxy to describe image attachments. It does not affect native V4.1 Flash or Flash Vision Exp requests.\n\n[Configure Vision Proxy](command:deepseek-copilot.setVisionModel)"
3636
}

package.nls.zh-cn.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
"deepseek-copilot.config.modelIdOverrides.deepseek-v4-pro.description": "DeepSeek V4 Pro 的 API 模型 ID。",
3333
"deepseek-copilot.config.modelIdOverrides.deepseek-v4-flash-vision-exp.description": "DeepSeek V4 Flash Vision Exp 的 API 模型 ID。",
3434
"deepseek-copilot.config.visionModel.description": "DeepSeek V4 Flash 和 Pro 使用的视觉代理。未设置时,自动模式会在可用时选择 DeepSeek V4 Flash Vision Exp。可通过[配置视觉代理](command:deepseek-copilot.setVisionModel)改用其他 VS Code 模型或 API 端点。",
35-
"deepseek-copilot.config.visionPrompt.description": "V4 Flash 和 Pro 入口的视觉代理用于描述图片附件的提示词,不影响 V4.1 Flash 或 Flash Vision Exp 的原生图片请求。\n\n[配置视觉代理](command:deepseek-copilot.setVisionModel)"
35+
"deepseek-copilot.config.visionPrompt.description": "V4 Flash 和 Pro 入口的视觉代理用于描述图片附件的提示词,不影响 V4.1 Flash 或 Flash Vision Exp 的原生图片请求。\n\n[配置视觉代理](command:deepseek-copilot.setVisionModel)"
3636
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
DeepSeek models appear in the Copilot model picker as soon as the extension is active. Choose **DeepSeek V4.1 Flash** for new conversations. If you do not see it right away, scroll down in the picker or open the Language Models manager.
1+
DeepSeek models appear in the Copilot model picker as soon as the extension is active. If you do not see them right away, scroll down in the picker or open the Language Models manager.
22

3-
Without an API key, the models show a warning icon and ask you to run **DeepSeek: Set API Key**. The three legacy V4 entries remain selectable; hover to see migration notices.
3+
Without an API key, the models show a warning icon and ask you to run **DeepSeek: Set API Key**.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
扩展激活后,DeepSeek 模型就会出现在 Copilot 模型选择器中。新对话推荐选择 **DeepSeek V4.1 Flash**如果没有立即看到,可以向下滚动模型列表,或打开语言模型管理器。
1+
扩展激活后,DeepSeek 模型就会出现在 Copilot 模型选择器中。如果没有立即看到,可以向下滚动模型列表,或打开语言模型管理器。
22

3-
尚未配置 API Key 时,模型会显示警告图标,并提示运行 **DeepSeek: 设置 API Key**三个旧 V4 入口继续可选,悬停可查看迁移提示。
3+
尚未配置 API Key 时,模型会显示警告图标,并提示运行 **DeepSeek: 设置 API Key**

src/i18n.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ const zh: Translations = {
2525
'**旧模型入口。** \n请先确认服务商支持 DeepSeek V4.1 Flash。 \n选择“DeepSeek V4.1 Flash”以使用新模型。',
2626
'model.retirement.flashRetired':
2727
'**已下线。** \n请求由 DeepSeek V4.1 Flash 提供服务,并按 Flash 价格计费。 \n选择“DeepSeek V4.1 Flash”以使用新模型。',
28-
'model.retirement.proPending':
29-
'**将于 2026-09-14 12:00(北京时间)下线。** \n之后请求路由到 DeepSeek V4.1 Flash,并按 V4.1 Flash 价格计费,直至 V4.1 Pro 上线。 \n选择“DeepSeek V4.1 Flash”以使用新模型。',
30-
'model.retirement.proRetired':
31-
'**已下线。** \n请求路由到 DeepSeek V4.1 Flash,并按 V4.1 Flash 价格计费,直至 V4.1 Pro 上线。 \n选择“DeepSeek V4.1 Flash”以使用新模型。',
3228
'model.flash.detail': '快速高效',
3329
'model.pro.detail': '深度推理',
3430
'model.flash-vision-exp.detail': '原生视觉实验模型',
@@ -74,7 +70,7 @@ const zh: Translations = {
7470
'vision.action.configureProxy': '配置视觉代理',
7571
'vision.panel.title': 'DeepSeek 视觉代理',
7672
'vision.panel.description':
77-
'为旧 V4 Flash 和 Pro 入口配置一个将图片转换成文字描述的视觉模型。V4.1 Flash 和 Vision Exp 会直接处理原图。',
73+
' V4 Flash 和 Pro 入口配置一个将图片转换成文字描述的视觉模型。V4.1 Flash 和 Vision Exp 会直接处理原图。',
7874
'vision.panel.source.vscodeLm': 'VS Code 模型',
7975
'vision.panel.source.apiEndpoint': 'API 端点',
8076
'vision.panel.field.source': '视觉代理来源',
@@ -237,10 +233,6 @@ const en: Translations = {
237233
'**Legacy model entry.** \nCheck that your provider supports DeepSeek V4.1 Flash. \nSelect “DeepSeek V4.1 Flash” to use the new model.',
238234
'model.retirement.flashRetired':
239235
'**Retired.** \nRequests are served by DeepSeek V4.1 Flash and billed at the Flash price. \nSelect “DeepSeek V4.1 Flash” to use the new model.',
240-
'model.retirement.proPending':
241-
'**Retires Sep 14, 2026 at 12:00 UTC+8.** \nThen requests are routed to DeepSeek V4.1 Flash and billed at the V4.1 Flash price until V4.1 Pro is released. \nSelect “DeepSeek V4.1 Flash” to use the new model.',
242-
'model.retirement.proRetired':
243-
'**Retired.** \nRequests are routed to DeepSeek V4.1 Flash and billed at the V4.1 Flash price until V4.1 Pro is released. \nSelect “DeepSeek V4.1 Flash” to use the new model.',
244236
'model.flash.detail': 'Fast, general-purpose model',
245237
'model.pro.detail': 'Most capable reasoning model',
246238
'model.flash-vision-exp.detail': 'Experimental native vision model',
@@ -293,7 +285,7 @@ const en: Translations = {
293285
'vision.action.configureProxy': 'Configure Vision Proxy',
294286
'vision.panel.title': 'DeepSeek Vision Proxy',
295287
'vision.panel.description':
296-
'Configure a vision model that turns images into text for legacy V4 Flash and Pro entries. V4.1 Flash and Vision Exp process original images directly.',
288+
'Configure a vision model that turns images into text for V4 Flash and Pro entries. V4.1 Flash and Vision Exp process original images directly.',
297289
'vision.panel.source.vscodeLm': 'VS Code model',
298290
'vision.panel.source.apiEndpoint': 'API endpoint',
299291
'vision.panel.field.source': 'Vision proxy source',

src/provider/models.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export function toChatInfo(
4646
now = new Date(),
4747
usesOfficialModel = true,
4848
): ModelPickerChatInformation {
49-
const retirement = getModelRetirementNotice(m.id, usesOfficialModel, now);
49+
const retirement = getModelRetirementNotice(m.id, usesOfficialModel);
5050
const modelDetail = resolveModelText(m, 'detail') ?? m.detail;
5151
const modelTooltip = resolveModelText(m, 'tooltip');
5252
const thinkingCapability = m.capabilities.thinking;

src/provider/retirement.ts

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,9 @@
11
import { t } from '../i18n';
22

3-
// Official API routing changes at 12:00 Beijing time. This also coincides
4-
// with a peak/off-peak boundary handled by the existing pricing refresh timer.
5-
const PRO_RETIREMENT_AT = Date.parse('2026-09-14T12:00:00+08:00');
6-
const LEGACY_MODEL_IDS = new Set([
7-
'deepseek-v4-flash',
8-
'deepseek-v4-pro',
9-
'deepseek-v4-flash-vision-exp',
10-
]);
3+
const LEGACY_FLASH_MODEL_IDS = new Set(['deepseek-v4-flash', 'deepseek-v4-flash-vision-exp']);
114

125
interface ModelRetirementNotice {
13-
code: 'model_pending_deprecation' | 'model_deprecated';
6+
code: 'model_deprecated';
147
message: string;
158
showPricing: boolean;
169
}
@@ -19,9 +12,8 @@ interface ModelRetirementNotice {
1912
export function getModelRetirementNotice(
2013
modelId: string,
2114
usesOfficialModel: boolean,
22-
now: Date,
2315
): ModelRetirementNotice | undefined {
24-
if (!LEGACY_MODEL_IDS.has(modelId)) {
16+
if (!LEGACY_FLASH_MODEL_IDS.has(modelId)) {
2517
return undefined;
2618
}
2719

@@ -34,21 +26,9 @@ export function getModelRetirementNotice(
3426
};
3527
}
3628

37-
if (modelId === 'deepseek-v4-pro' && now.getTime() < PRO_RETIREMENT_AT) {
38-
return {
39-
code: 'model_pending_deprecation',
40-
message: t('model.retirement.proPending'),
41-
showPricing: true,
42-
};
43-
}
44-
4529
return {
4630
code: 'model_deprecated',
47-
message: t(
48-
modelId === 'deepseek-v4-pro'
49-
? 'model.retirement.proRetired'
50-
: 'model.retirement.flashRetired',
51-
),
31+
message: t('model.retirement.flashRetired'),
5232
showPricing: false,
5333
};
5434
}

0 commit comments

Comments
 (0)