# deepseek-v4-copilot-custom
**Repository Path**: mindock/deepseek-v4-copilot-custom
## Basic Information
- **Project Name**: deepseek-v4-copilot-custom
- **Description**: No description available
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-01
- **Last Updated**: 2026-09-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
DeepSeek V4 Copilot(自定义)
English |
简体中文
**让 GitHub Copilot 的 Agent 模式跑在 DeepSeek V4 上——官方 API 或百炼托管模型任选,逐模型端点覆盖,配置自由最大化。**
本项目是开源插件 DeepSeek V4 for Copilot Chat 的定制版,为最高效的 Agent 开发而重构。保留 GitHub Copilot 成熟的 Agent 模式、工具调用与交互体验,再把它跑在 **DeepSeek V4 Flash、Pro、Flash Vision Exp 或百炼托管 DeepSeek V4 Pro** 上——官方 DeepSeek 端点与百炼(千问生态)端点可逐模型混用,支持**原生视觉或视觉代理**、**思考模式**、**逐模型端点覆盖**,并使用你自己的 API Key。
## 为什么选这个扩展?
- **最高效的 Agent 开发栈。** GitHub Copilot 的 Agent 闭环——文件编辑、终端、搜索、Git、测试——由 DeepSeek 的高性价比驱动,Agent 开发效率最大化。
- **官方 DeepSeek 与百炼托管并存。** 一个模型走 DeepSeek 官方 API,另一个模型走百炼(千问生态)DeepSeek 端点,同一个选择器里自由混用。
- **不是替换 Copilot,而是增强它。** 没有新的侧边栏,没有新的聊天界面需要学习。只是在你已经在用的模型选择器中多了一个选项。
- **Agent 模式、工具调用、Instructions、MCP、Skills——全部正常运作。** Copilot 的完整能力栈,现在跑在 DeepSeek 上。
- **两种图片处理方式。** Flash Vision Exp 会原生接收图片附件;Flash 和 Pro 则保留原有文本上下文,由可配置的视觉代理将图片转换为文字描述。
- **需自行提供 API Key,直接向 DeepSeek 付费。** 你的 API Key,你的账单,你的速率限制。密钥存储在操作系统密钥链中,不会以明文形式写入磁盘。
## 功能特性
### 四种 DeepSeek V4 模型出现在模型选择器中
Flash、Pro、实验性的 Flash Vision Exp 与百炼托管 DeepSeek V4 Pro 会与其他模型并列出现在 Copilot Chat 的模型选择器中——官方 DeepSeek 与百炼托管模型同框共存。四者均支持长上下文、工具调用和可配置的思考深度。
### 逐模型端点覆盖
`deepseek-v4-custom.modelIdOverrides` 中的每一项将一个 VS Code 模型 ID(`vscodeModelId`)映射到一个 API 模型 ID(`apiModelId`),并可携带自己的 `baseUrl`、`apiKey`、`temperature`、`topP` 与 `maxTokens`。留空即回退到全局 `baseUrl` 与 API Key。
任意非空的 `vscodeModelId` 都会在选择器中注册一个新模型——即使它不属于内置的四种。同一底层模型因此可以按不同温度、端点或密钥出现多次。可通过命令面板的 **DeepSeek V4 Custom: 配置模型覆盖列表** 可视化管理,或直接编辑 `deepseek-v4-custom.modelIdOverrides`。
无法解析的覆盖条目(`vscodeModelId` 为空,或 `apiModelId` 无法映射到任何已注册模型)属于用户可修复的配置错误:扩展会弹出错误提示,DeepSeek 模型将暂时从选择器中隐藏,直到修正该条目。
### Custom:高自由度配置
"Custom" 意味着每一层都可配置,不存在写死的黑盒:
- **端点与密钥** — 全局 `baseUrl` + API Key,或在 `deepseek-v4-custom.modelIdOverrides` 中逐模型设置 `baseUrl`/`apiKey`。
- **采样参数** — 逐模型 `temperature`(0–2)、`topP`(0–1)、`maxTokens`。
- **视觉** — 原生视觉模型或可配置的视觉代理(任意 VS Code 模型或 OpenAI/Anthropic 兼容端点)+ 自定义提示词。
- **思考深度** — 逐模型推理档位,直接在模型选择器中调整。
- **模型注册表** — 只需在 `modelIdOverrides` 中新增条目并填上 API 模型 ID,即可接入新模型。新的 `vscodeModelId` 会在选择器中作为独立条目出现,因此同一个底层模型可以以多种温度或端点并列出现。
### 原生视觉与视觉代理
可以根据对话需要选择不同的图片处理路径:
- **DeepSeek V4 Flash Vision Exp** 将图片附件作为原生多模态输入处理,不经过视觉代理。它是一个独立暴露的实验模型;如果当前 API 端点不支持其模型 ID,插件不会静默降级。
- **DeepSeek V4 Flash 和 Pro** 使用视觉代理:先由支持图片输入的模型描述附件,再将描述连同对话内容交给 DeepSeek 主模型。自动模式会在可用时选择 Flash Vision Exp,同时继续支持显式配置其他 VS Code 模型或 API 端点。
如果你在意 DeepSeek 前缀缓存的复用,不建议只为查看一张图片而在对话中途切换模型。需要原生视觉时,可以从对话开始就选择 Flash Vision Exp;希望继续使用 Flash/Pro 时,则让视觉代理处理图片并保留主模型选择。
### 思考模式与推理深度控制
完整支持 DeepSeek V4 的 `reasoning_content`。Flash、Pro 和 Flash Vision Exp 均可选择 `停用`、`轻量`、`标准`(均衡,默认)或 `深度`(适用于复杂 Agent 任务),与官方 API 已实现的推理档位保持一致。
### 继承全部 Copilot 能力
由于本扩展接入的是 Copilot 的原生 provider API,你免费获得完整能力栈:
- **Agent 模式**——自主执行多步骤任务
- **工具调用**——文件编辑、终端操作、工作区搜索、Git、测试
- **Instructions & Skills**——你的 `.instructions.md`、`AGENTS.md` 和各项 Skills 开箱即用
- **Prompt 缓存统计**——在输出通道中记录 DeepSeek 缓存命中率,直观看到成本节省
### Prompt Hub:分享与搜索提示词
不离开 Copilot Chat 即可对接 VEAP 提示词服务,完成搜索、下载与分享:
- **选择提示词** — Chat 视图标题栏与(VS Code 1.123+)输入框状态工具栏中的 `$(book)` 按钮。以可搜索的 QuickPick 检索公开提示词(`/prompt/searchPrompt`,300ms 防抖、分页)。选中后身份指令 + 正文预填到聊天输入框,**不会自动发送**;确认后回车即可。
- **分享提示词** — 相同位置的 `$(cloud-upload)` 按钮。面板自动预填剪贴板内容;编辑标题 / 身份指令 / 正文,勾选是否公开后提交(`/prompt/sharePrompt`)。成功后静默关闭面板;仅失败时提示消息。
### 安全优先
全局 API Key 存储在 VS Code 的 `SecretStorage` 中(macOS 钥匙串 / Windows 凭据管理器 / Linux 密钥环)。绝不会出现在 `settings.json` 中,也不会被提交到 Git 历史。`deepseek-v4-custom.modelIdOverrides` 中的条目可在模型需要独立凭据时额外携带明文 `apiKey`;留空即回退到全局存储密钥。
### 零运行时依赖
纯 VS Code API + Node.js 内置模块。无需 Python、Docker 或本地代理进程。
## 快速开始
### 前置条件
- VS Code 1.116 及以上版本。本扩展依赖非公开的 Copilot Chat API,较新的 VS Code 版本可能存在兼容性问题——如遇到请[提交 Issue](https://gitee.com/mindock/deepseek-v4-copilot-custom/issues)。
- GitHub Copilot 订阅(Free / Pro / Enterprise——免费版即可使用)
- DeepSeek API Key,从 [platform.deepseek.com](https://platform.deepseek.com) 获取;使用自定义 `deepseek-v4-custom.baseUrl` 时也可使用兼容的 provider token
### 安装方式
根据你所使用的编辑器选择对应的注册表安装:
1. **Microsoft VS Code** — 从 [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=mindock.deepseek-v4-copilot-custom) 安装。
2. **使用 Open VSX 的编辑器** — 从 [Open VSX](https://open-vsx.org/extension/mindock/deepseek-v4-copilot-custom) 安装。
### 使用步骤
1. 通过命令面板(`Cmd+Shift+P`)运行 **DeepSeek V4 Custom: 设置 API Key**
2. 粘贴你的 Key 或兼容的 provider token(官方 DeepSeek Key 通常以 `sk-` 开头)
3. 打开 Copilot Chat,点击模型选择器,选择 **DeepSeek V4 Flash**、**DeepSeek V4 Pro**、**DeepSeek V4 Flash Vision Exp** 或 **DeepSeek V4 Pro(Bailian)**
4. 搞定——开始聊天
可选:运行 **DeepSeek V4 Custom: 配置模型覆盖列表**,以可视化方式新增、编辑或移除逐模型覆盖条目。
## 模型
| 模型 | 图片处理 | 思考深度 | 适用场景 |
|---|---|---|---|
| **DeepSeek V4 Flash** | 视觉代理 | `停用` / `轻量` / `标准` / `深度` | 日常快速编码、小改动、低成本迭代 |
| **DeepSeek V4 Pro** | 视觉代理 | `停用` / `轻量` / `标准` / `深度` | 复杂重构、Agent 任务、深度推理 |
| **DeepSeek V4 Flash Vision Exp** | 原生图片输入 | `停用` / `轻量` / `标准` / `深度` | 直接、实验性的图片理解与快速推理 |
| **DeepSeek V4 Pro(Bailian)** | 视觉代理 | `停用` / `轻量` / `标准` / `深度` | 百炼托管的 DeepSeek V4 Pro;逐模型配置其 baseUrl 与 API Key |
四者均支持可选的思考模式、工具调用和 1M Token 上下文。Flash Vision Exp 仍是实验模型;直接使用时,自定义 API 端点或兼容服务商必须提供为它配置的模型 ID。
## 设置项
| 设置项 | 默认值 | 说明 |
|---|---|---|
| `deepseek-v4-custom.baseUrl` | `https://api.deepseek.com` | 全局 API 端点——可改为自托管或代理部署地址 |
| `deepseek-v4-custom.promptHub.baseUrl` | `http://localhost:8087` | 提示词分享 / 搜索服务的基础地址,供 `DeepSeek V4 Custom: 选择提示词` 与 `DeepSeek V4 Custom: 分享提示词` 使用 |
| `deepseek-v4-custom.promptHub.machineCode` | *(空)* | 提示词分享 / 搜索请求携带的机器码,留空则请求体不发送该字段 |
| `deepseek-v4-custom.apiKey` | *(空)* | 全局兜底 API Key,明文存储(用于 CI/自动化)。推荐使用 `DeepSeek V4 Custom: 设置 API Key` 存入 SecretStorage |
| `deepseek-v4-custom.maxTokens` | `0` | 全局最大输出 Token 数(`0` = 不限制)。可用于成本控制 |
| `deepseek-v4-custom.modelIdOverrides` | 预填模型列表 | 逐模型覆盖。每项将 VS Code 模型 ID(`vscodeModelId`)映射到 API 模型 ID(`apiModelId`),并可单独设置 `baseUrl`、`apiKey`(明文保存在设置中)、`temperature`(0–2)、`topP`(0–1)与 `maxTokens`。任意非空的 `vscodeModelId` 都会在选择器中注册新条目;留空则使用全局设置,逐模型 `maxTokens: 0` 表示不限制。可用 `DeepSeek V4 Custom: 配置模型覆盖列表` 管理 |
| `deepseek-v4-custom.debugMode` | `minimal` | 诊断模式:`minimal` 仅上报 token 用量,`metadata` 输出隐私安全日志,`verbose` 将完整请求 dump 和 pipeline snapshot 写入扩展 global storage。完整 dump 可能包含敏感提示词文本、工具定义、文件片段和图片描述。使用 `DeepSeek V4 Custom: 打开请求 Dump 目录` 打开 dump 位置 |
| `deepseek-v4-custom.visionModel` | *(自动)* | Flash 和 Pro 使用的视觉代理。自动模式会在可用时选择 Flash Vision Exp;也可通过 `DeepSeek V4 Custom: 配置视觉代理` 改用其他 VS Code 模型或 API 端点 |
| `deepseek-v4-custom.visionPrompt` | *(内置)* | Flash/Pro 的视觉代理用于描述图片附件的提示词,不影响 Flash Vision Exp 的原生图片请求 |
| `deepseek-v4-custom.experimental.stabilizeToolList` | `false` | 实验性设置。尝试预先激活 VS Code/Copilot 的虚拟工具,让传给 DeepSeek API 的 `tools` 参数在多轮对话中更完整、更稳定。当已启用工具跨轮次变化时,可能提高上下文缓存命中率。代价是 input tokens 可能增加;缓存命中的 input tokens 单价更低,但仍会计入用量。64 个或更少已启用工具时通常无需开启,除非工具列表仍在跨轮次变化;超过 128 个已启用工具时不建议开启 |
思考深度可通过 Copilot Chat 的模型选择器对每个 DeepSeek 模型单独设置。
百炼托管模型的 `settings.json` 配置示例:
```json
{
"deepseek-v4-custom.modelIdOverrides": [
{
"vscodeModelId": "deepseek-v4-pro-bailian",
"apiModelId": "vanchin/deepseek-v4-pro-0813",
"baseUrl": "https://ws-hjupuk4sp6qrwi05.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
"apiKey": "sk-ws-...",
"temperature": 0.7,
"topP": null,
"maxTokens": 4096
}
]
}
```
同一个底层模型可以注册为多个自定义 ID,每个 ID 使用各自的采样参数:
```json
{
"deepseek-v4-custom.modelIdOverrides": [
{
"vscodeModelId": "deepseek-v4-pro-self-0.2",
"apiModelId": "deepseek-v4-pro",
"temperature": 0.2
},
{
"vscodeModelId": "deepseek-v4-pro-self-0.8",
"apiModelId": "deepseek-v4-pro",
"temperature": 0.8
}
]
}
```
两个条目都映射到 `deepseek-v4-pro` API 模型,并以不同温度作为两个独立选项出现在选择器中。
## 审计边界
扩展捕获异常的唯一位置是以下已定义的边界。边界内可追加输出通道日志或弹窗提示,随后原错误一律 rethrow:
- **命令执行边界** — 预填聊天输入框所用的 `workbench.action.chat.open`。
- **网络调用边界** — 对 DeepSeek API 与提示词服务的全部 fetch。
- **Prompt Hub QuickPick 边界** — 防抖输入触发的搜索失败仅在选择器内显示状态项(不弹窗);显式动作(初始打开、翻页、选择)失败弹窗。失败同时写入输出通道。
- **尽力而为边界** — 读取剪贴板预填分享面板:失败时提示警告并继续打开空表单面板。
其余位置错误一律直接抛出:用户可修复错误弹窗后 rethrow;底层技术性错误写入 `console.error` 后 rethrow。
## 人工测试
Prompt Hub 功能未附带自动化测试,请手工验证以下流程:
1. 按钮出现在 Chat 视图标题栏;VS Code 1.123+ 还出现在输入框状态工具栏最右端(与 Set Permissions 同一行,空间不足时可能折叠进溢出菜单)。
2. 搜索:输入防抖 300ms;“下一页…”持续加载直至 `hasNext=false`。
3. 选择:提示词预填到聊天输入框,**不会**自动发送。
4. 分享:剪贴板预填面板;成功后静默关闭;失败时面板保留、提交按钮复位并弹窗。
5. 错误提示:显式搜索动作与分享失败弹窗;输入触发的搜索失败仅在选择器内显示状态项。
6. 兼容性:VS Code < 1.123 时状态工具栏按钮不出现且无任何报错。
## 方案对比
| | 本扩展 | 本地代理(如 LiteLLM) | 独立 DeepSeek 扩展 |
|---|---|---|---|
| 在 Copilot Chat 内使用 | ✅ | ✅ | ❌ 独立界面 |
| Agent 模式、工具、Skills | ✅ | ✅ | ⚠️ 自行实现 |
| 视觉支持 | ✅ 原生 + 代理 | ❌ | ❌ |
| 无需额外运行进程 | ✅ | ❌ | ✅ |
| 一键安装 | ✅ | ❌ | ✅ |
| API Key 存系统密钥链 | ✅ | ❌ | ⚠️ 各异 |
## 致谢
本插件是开源项目 [DeepSeek V4 for Copilot Chat](https://github.com/Vizards/deepseek-v4-for-copilot)(作者 [Vizards](https://github.com/Vizards))的定制分支。谨向原作者及其出色工作致以诚挚谢意。上游项目以 MIT 协议发布。
## 许可证
[MIT](LICENSE)