# Copilot后端代理服务 **Repository Path**: longzu/github-copilot-proxies ## Basic Information - **Project Name**: Copilot后端代理服务 - **Description**: 借助支持 FIM 接口的 Qwen2.5-Coder-7B-Instruct 模型接管 GitHub Copilot 插件服务端。使用国产模型语言模型,接管 GitHub Copilot Chat 插件服务端, 使得开发者可以更加高效的理解和编写代码。 - **Primary Language**: Unknown - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-03-12 - **Last Updated**: 2025-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README  ## Github Copilot 后端代理服务 `.NET9` 实现 - 借助支持 `FIM` 接口的 `Qwen2.5-Coder-7B-Instruct` 模型接管 `GitHub Copilot` 插件服务端。 - 使用国产语言模型,接管 `GitHub Copilot Chat` 插件服务端, 使得开发者可以更加高效的理解和编写代码。 - `VS2022` 使用 `qwen-turbo` 语言对话模型实现接近 `GitHub Copilot` 官方的补全效果。 > 如果开启 `VS2022` 的智能补全功能,一个月消耗Token费用较多,请稍加留意账单。 > 目前选择的 `qwen-turbo` 模型[价格](https://help.aliyun.com/zh/model-studio/getting-started/models?spm=a2c4g.11186623.help-menu-2400256.d_0_2.5a06b0a893V255#8708390fdb66x)相对较低,如果超过可接受的消耗,可选择性地在 `VS2022` 中 `启用 Copilot 完成`。 > 此项目地目标是在 `VS2022` 中的代码补全实现接近官方效果,主要针对的人群是偶尔需要开启辅助,多数时间都在做其他事情的全栈开发人员。 > 另外由于 `DeepSeek` 训练语料的原因,大部分时候在 `VS2022` 询问代码相关问题时返回结果都不太理想。若大多数时候需要 `Copilot` 辅助检查代码,根据对接后本人的体验效果,建议还是入坑官方的个人付费版,使用经过精调的内置对话模型。对接后尝试体验过 `DeepSeek`、`千问`、`豆包`,对于 .Net 技术相关的问答回复都很基础,没法与可能使用了微软内部代码库作为语料精调的 `GitHub Copilot` 内置模型相比较。 > 那么既然国产模型目前回复都不太理想还要做这些模型对接?那当然就是因为官方内置的模型全都会对回答进行代码专用AI的审查,问非代码相关问题大概率会在回复一段内容后被撤回。做项目设计时问多几个问题就很容易触发这种审查撤回。 ## 功能特性 - [x] 主要支持IDE:[VSCode](#vscode), [Visual Studio 2022](#visual-studio-2022) - [ ] 接口兼容IDE:[Jetbrains IDE系列](#jetbrains-ide系列), [HBuilderX](#hbuilderx) - [x] `GitHub Copilot` 插件各种API接口**全接管** - [x] VSCode 对话编辑模式 - [x] 固定使用域名`copilot.supercopilot.top`, 自动配置 `Let's Encrypt` SSL证书 - [x] 局域网共享, 可多台电脑共享一个服务端, 参考: [局域网共享方案](#局域网共享方案) ## 代码补全模型 | 补全类型 | 模型ID | 服务平台 | 使用原因 | |-------|--------|--------|--------| | 代码补全 | Pro/Qwen/Qwen2.5-Coder-7B-Instruct | 硅基流动 | 使用付费版本保证稳定 | | 代码补全(VS2022) | qwen-turbo | 阿里云百炼 | 适用于VS2022,目前效果稍好 | | 代码编辑(VSCode) | Qwen/Qwen2.5-Coder-7B-Instruct | 硅基流动 | 补全编辑消耗大量Token | | 对话分析 | Qwen/Qwen2.5-Coder-7B-Instruct | 硅基流动 | 生成一些不重要的提示词 | ## 模型映射关系 | 模型ID | 官方名称 | 映射ID | 模型名称 | 服务平台 | VS2022对应 | |-------|--------|--------|--------|---------|---------| | gpt-4o | GPT-4o | deepseek-chat | DeepSeek V3 | DeepSeek | GPT-4o | | o1 | o1 (Preview) | qwen-plus | 通义千问-Plus | 阿里云百炼 | o1 (Preview) | | o1-preview | o1-preview (Preview) | qwen-max | 通义千问-Max | 阿里云百炼 | | | o1-mini | o1-mini (Preview) | deepseek-r1-250120 | DeepSeek R1 | 火山方舟 | | | o3-mini | o3-mini (Preview) | deepseek-v3-241226 | DeepSeek V3 | 火山方舟 | o3-mini (Preview) | | claude-3.5-sonnet | Claude 3.5 Sonnet (Preview) | deepseek-v3 | DeepSeek V3 | 阿里云百炼 | DeepSeek V3 [阿里云百炼] | | claude-3.7-sonnet | Claude 3.7 Sonnet (Preview) | deepseek-r1 | DeepSeek R1 | 阿里云百炼 | DeepSeek R1 [阿里云百炼] | | claude-3.7-sonnet-thought | Claude 3.7 Sonnet Thinking (Preview) | qwq-32b | 通义千问-QwQ-32B | 阿里云百炼 | | | gemini-2.0-flash-001 | Gemini 2.0 Flash (Preview) | Qwen/Qwen2.5-Coder-32B-Instruct | Qwen2.5 代码特定大语言模型 | 硅基流动 | | ## 特别说明 - 若你需要使用火山方舟引擎的 DeepSeek,需要进入火山方舟引擎控制台的模型列表或详情页分别点击一次体验以创建`预置推理接入点`。 - 使用到的模型ID:`deepseek-v3-241226` `deepseek-r1-250120`。 ## 如何使用? **在使用之前确保自己的环境是干净的, 也就是说不能使用过其他的激活服务, 可以先检查自己的环境变量将 `GITHUB` `COPILOT` 相关的环境变量删除, 然后将插件更新最新版本后重启IDE即可.** **⚠️ 如果你本地有使用科学上网工具, 那必须将域名 `copilot.supercopilot.top` 系列域名添加直连名单中, 否则无法正常使用!** ### 快速使用步骤 1. **部署服务**: 可以使用[下载文件直接部署使用](#下载文件直接部署使用). 2. **配置IDE**: 详细参考下面的[IDE设置方法](#ide设置方法). 3. **重启IDE**: 点击登录 `GitHub Copilot` 插件即可. ### 下载文件直接部署使用 1. 下载最新版本的可执行文件访问 [releases](https://gitee.com/VicBilibily/github-copilot-proxies/releases). 2. 在可执行文件同级目录下创建 `.env` 文件或在系统设置环境变量, 参考 [.env.example](.env.example) 文件配置. 3. 启动服务后然后按照[IDE设置方法](#ide设置方法)配置IDE. 4. 重启IDE,登录 `GitHub Copilot` 插件. > 本项目提供的可执行文件仅供试用测试,如需调整模型,请 clone 后自行二开调整。 > 若你是 DotNet 开发者使用 VS2022,建议使用对话模型进行代码补全,默认 FIM补全 不太可用。 ## IDE设置方法 ### VSCode 1. 安装插件: `GitHub Copilot` 2. 修改 VSCode 的 settings.json 文件, 添加以下配置: ```json "github.copilot.advanced": { "authProvider": "github-enterprise", "debug.overrideCAPIUrl": "https://api.copilot.supercopilot.top", "debug.overrideProxyUrl": "https://copilot-proxy.copilot.supercopilot.top", "debug.chatOverrideProxyUrl": "https://api.copilot.supercopilot.top/chat/completions", "debug.overrideFastRewriteEngine": "v1/engines/copilot-centralus-h100", "debug.overrideFastRewriteUrl": "https://api.copilot.supercopilot.top" }, "github-enterprise.uri": "https://copilot.supercopilot.top" ``` ### Jetbrains IDE系列 1. 找到`设置` > `语言与框架` > `GitHub Copilot` > `Authentication Provider` 2. 填写的值为: `copilot.supercopilot.top` ### Visual Studio 2022 1. 更新到最新版本(内置 Copilot 版本)至少是 `17.10.x` 以上 2. 首先, 开启 `Github Enterprise` 账户支持:工具->环境->账户->勾选 `包含 Github Enterprise 服务器账户` 3. 然后, 重启你的 `Visual Studio 2022` 编辑器 4. 最后, 点击添加 Github 账户,切换到 Github Enterprise 选项卡,输入 `https://copilot.supercopilot.top` 即可。 ### HBuilderX ⚠️ 注意, 插件中的相关 domain 已经写死无法修改, 所以必须使用默认的 `copilot.supercopilot.top` 域名配置. 1. 下载 **[copilot-for-hbuilderx-v1.zip](https://pan.quark.cn/s/70e6849970e5)** 插件到本地 2. 将插件安装到 plugin目录下, 详细参考: [离线插件安装指南](https://hx.dcloud.net.cn/Tutorial/OfflineInstall) 3. 重启 Hbuilder X 后点击登录 `GitHub Copilot` 即可. ## 局域网共享方案 如果是局域网多台电脑共用一个服务端,只需要更改hosts文件指向到内网服务器 ip 即可, 例如: 在局域网服务器(192.168.80.40)部署了copilot-proxies服务,那么局域网内其他机器仅需要修改host为以下即可,可以工作。 ( [@pennbay](https://gitee.com/pennbay) 提供实测反馈 ) ``` 192.168.1.168 copilot.supercopilot.top 192.168.1.168 api.copilot.supercopilot.top 192.168.1.168 copilot-proxy.copilot.supercopilot.top 192.168.1.168 copilot-telemetry-service.copilot.supercopilot.top ``` ## 问题排查 如果本地部署遇到了 `无法登录` `无法对话` `无法补全` 等问题, 可以参考下面的排查方法: 1. 确认最新版本服务 2. `ping copilot.supercopilot.top` 是否指向 `127.0.0.1` ,如果不是则表明受到了代理工具影响 3. 访问 [https://copilot.supercopilot.top](https://copilot.supercopilot.top/help) 是否出现帮助页面 4. 检查目录下是否含有 `cert` 目录 5. 特别注意检查 https 端口不可被占用 ## 注意事项 1. 请勿将本服务用于商业用途, 仅供学习交流使用 2. 请勿将本服务用于非法用途, 一切后果自负 #### 为什么没有 DeepSeek 官方的 R1 模型? > DeepSeek 的 R1 模型需要按照规则传递 `messages`,但 Copilot 大多穿插消息内容,官方的接口暂不支持多条用户消息的连续传入。 ```json { "error": { "message": "deepseek-reasoner does not support successive user or assistant messages (messages[1] and messages[2] in your input). You should interleave the user/assistant messages in the message sequence.", "type": "invalid_request_error", "param": null, "code": "invalid_request_error" } } ``` #### 为什么没有 硅基流动 的 DeepSeek 模型? > 目前硅基流动的 DeepSeek 是最慢的,而且相比较于其他两家云厂商,一样的调用价格还是不要等等等的好。 ## 鸣谢 - [copilot_take_over](https://gitee.com/LoveA/copilot_take_over) - [override](https://github.com/linux-do/override) - [硅基流动](https://cloud.siliconflow.cn/i/NO6ShUc3) - [Ripper/Copilot后端代理服务](https://gitee.com/ripperTs/github-copilot-proxies)