(长期有效)接入第三方 OpenAI 兼容模型到 GitHub Copilot

目前 GitHub Copilot 仅支持接入国外的几家模型提供商,无法直接调用 OpenAI 兼容的自定义 API 进行扩展。参考相关解决方案,我总结了一下Copilot中接入OpenAI 兼容 API 的方法。
实现方法主要分为两种:

方案一:修改 Copilot Chat 源代码
在模型选择器中新增自定义提供商选项。

方案二:API 兼容适配
将 OpenAI 兼容的自定义 API 虚拟化封装为与 Ollama 兼容的 API(运行期间占用 Ollama 端口),从而利用 Copilot 模型选择器中原生的 Ollama 选项。

方法一(目前存在问题)

具体做法可参考修改Copilot chat插件增加自定义模型提供商


这里只说一下这个方法存在的问题:

  1. 官方开源的Copilot chat插件版本通常滞后于最新版,可能存在未来兼容性问题
  2. 打包过程的npm install环节容易报错,需要多次调试
  3. 重要 当前打包后的Copilot chat插件在VSCode中无法显示模型选择器。虽然原作者指出这是由于插件要求的VSCode最低版本与实际版本不匹配所致,但即便修改了package.json中的vscode版本号,问题依然存在。

方法二(长期有效)

这一方法基于Github上的oai2ollama项目,它通过命令行工具启动一个服务,将OpenAI兼容API封装为Ollama兼容API。特别适合为不支持自定义OpenAI API但支持Ollama的编码代理(如VS Code中的GitHub Copilot)提供自定义模型支持。
这一项目的灵感来源于vscode-copilot GitHub讨论区中关于添加自定义 OpenAI 端点配置(基础 URL 和模型参数)到协同聊天设置的讨论。值得注意的是,官方已采纳该提议,未来Copilot版本可能直接支持第三方模型。
言归正传,具体操作步骤如下:

  1. 安装UV工具
    详细安装教程可参考:Windows系统UV安装及路径配置指南
    • 执行uv tool install进行永久安装
    • 创建批处理文件(双击运行):

配置VS Code
在Copilot模型选择器中选择"Ollama",稍候将显示第三方模型列表。

模型选择界面

运行转换程序
在命令行直接执行(无需本地下载项目):

uvx oai2ollama --api-key your_api_key --base-url provider_base_url 

如需长期使用,可选择以下任一方式:

@echo off powershell -NoExit-Command"uvx oai2ollama --api-key your_api_key --base-url provider_base_url"

常见问题:若未显示模型列表,请检查命令行报错信息。多数情况下,在base-url末尾添加/v1即可解决。

Read more

前端实战:手把手教你实现浏览器通知功能

前端实战:手把手教你实现浏览器通知功能

前端入门:浏览器通知功能从0到1实现指南 作为前端学习者,你可能见过这样的场景:打开网页版聊天工具,就算把浏览器最小化,桌面也会弹出“新消息”提醒;或者某些网站的活动通知,会直接显示在电脑/手机桌面上。这种功能就是「浏览器桌面通知」,今天我们就从零开始,搞懂它、学会用它。 一、先搞懂3个基础问题 1. 什么是浏览器桌面通知? 简单说,就是网页能在浏览器窗口外面(比如电脑桌面、手机屏幕)给你发提醒。哪怕浏览器最小化、甚至页面切到后台,只要权限允许,都能收到通知,不用一直盯着网页。 2. 什么时候会用到它? 常见场景很贴近日常: * 网页版微信/QQ的新消息提醒; * 工作系统的审批提醒、任务到期通知; * 电商网站的订单状态更新(比如“你的快递已发货”); * 新闻/小说网站的订阅内容更新提醒。 3. 用起来难吗?有什么限制? 不难!核心就2步:先让用户同意开启通知(申请权限)

Qwen3-TTS多语种语音合成实战:Python API调用+WebUI双模式使用指南

Qwen3-TTS多语种语音合成实战:Python API调用+WebUI双模式使用指南 1. 为什么你需要关注Qwen3-TTS 你有没有遇到过这些场景? * 做海外短视频,需要为不同国家观众配上地道口音的配音,但找配音员成本高、周期长; * 开发多语言智能客服,想让系统用西班牙语自然地读出订单状态,而不是机械念字; * 给孩子做双语启蒙App,希望中文讲解后立刻接上温柔的日语复述,语调和停顿都像真人。 传统TTS工具要么只支持一两种语言,要么切换语种要重装模型,更别说控制情绪、语速、方言风格了。而Qwen3-TTS-12Hz-1.7B-CustomVoice,就是为解决这些问题而生的——它不是“能说多种语言”,而是“真正理解多种语言该怎么说”。 这不是一个堆参数的模型,而是一个在真实使用中经得起推敲的语音生成工具。它覆盖中文、英文、日文、韩文、德文、法文、俄文、葡萄牙文、西班牙文和意大利文共10种主流语言,还支持粤语、关西腔、柏林口音等方言风格。更重要的是,它不靠后期拼接或规则调整,而是从文本理解开始,就自动决定哪里该轻快、哪里该停顿、哪句该带点笑意——就像一位熟

前端 SSR:别让你的网站变成 SEO 黑洞

前端 SSR:别让你的网站变成 SEO 黑洞 毒舌时刻 这网站做得跟黑洞似的,搜索引擎根本爬不进去。 各位前端同行,咱们今天聊聊前端 SSR(服务端渲染)。别告诉我你还在使用纯客户端渲染,那感觉就像在没有窗户的房间里生活——能住,但看不见外面的世界。 为什么你需要 SSR 最近看到一个项目,纯客户端渲染,SEO 排名倒数,用户体验差。我就想问:你是在做网站还是在做内部工具? 反面教材 // 反面教材:纯客户端渲染 // App.jsx import React, { useState, useEffect } from 'react'; function App() { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); useEffect(

【Linux网络系列】:JSON+HTTP,用C++手搓一个web计算器服务器!

【Linux网络系列】:JSON+HTTP,用C++手搓一个web计算器服务器!

🔥 本文专栏:Linux网络Linux实践系列 🌸作者主页:努力努力再努力wz 💪 今日博客励志语录:别害怕选错,人生最遗憾的从不是‘选错了’,而是‘我本可以’。每一次推倒重来的勇气,都是在给灵魂贴上更坚韧的勋章。 ★★★ 本文前置知识: 序列化与反序列化 引入 在之前的博客中,我详细介绍了序列化 与反序列化 的概念。对于使用 TCP 协议进行通信的双方,由于 TCP 是面向字节流的,在发送数据之前,我们通常需要定义一种结构化的数据来描述传输内容,并以此作为数据的容器。在 C++ 中,这种结构化数据通常表现为对象或结构体。然而,我们不能直接将结构体内存中对应的字节原样发送到另一端,因为直接传递内存字节会引发字节序 和结构体内存对齐 的问题。不同平台、不同编译器所遵循的内存对齐规则可能不同,这可能导致接收方在解析结构体字段时出现错误。 因此,我们需要借助序列化 。序列化 是指将结构化的数据按照预定的规则转换为连续的字节流。其主要目的是屏蔽平台差异,使得位于不同平台的进程能够以统一的方式解析该字节流。序列化通常分为两种形式:文本序列化 与二进制序列化 。 文