GitHub Copilot 调用第三方模型API

GitHub Copilot 调用第三方模型API

一、说明

OAI Compatible Provider for Copilot 的作用是:把 Copilot/Copilot Chat 发出的“类似 OpenAI API 的请求”,转发到指定的 OpenAI-Compatible 服务端(例如 ModelScope 推理网关、自建的兼容网关等)。

⚠️ Warning

登录 GitHub Copilot​ 的账号一定要是非组织方式开通 pro 会员的,不然无法管理模型。

推荐直接用免费的free账号登录即可。

二、插件安装

在 VS Code 扩展市场安装并启用:

  • GitHub Copilot
  • GitHub Copilot Chat​
  • ​OAI Compatible Provider for Copilot​(johnny-zhao.oai-compatible-copilot​)

安装后:Developer: Reload Window​ 重载窗口一次。

确保已在 VS Code 中登录 GitHub,并且 Copilot 正常可用(不然你分不清是 Copilot 本身问题还是 provider 转发问题)。

三、配置示例

建议将配置放置在项目内的: .vscode/settings.json​

1、单模型示例

{ "oaicopilot.baseUrl": "https://api.soraharu.com/v1", "oaicopilot.delay": 0, "oaicopilot.readFileLines": 0, "oaicopilot.retry": { "enabled": true, "max_attempts": 3, "interval_ms": 1000, "status_codes": [] }, "oaicopilot.commitLanguage": "English", "oaicopilot.models": [ { "id": "__provider__soraharu", "owned_by": "soraharu", "baseUrl": "https://api.api.soraharu.com/v1", "apiMode": "openai" }, { "id": "google/gemini-3-pro-preview", "owned_by": "soraharu", "baseUrl": "https://api.soraharu.com/v1", "context_length": 128000, "max_tokens": 4096, "vision": true, "apiMode": "openai", "temperature": 0 } ] } 

2、多模型示例

{ "oaicopilot.baseUrl": "https://api.soraharu.com/v1", "oaicopilot.delay": 0, "oaicopilot.readFileLines": 0, "oaicopilot.retry": { "enabled": true, "max_attempts": 3, "interval_ms": 1000, "status_codes": [] }, "oaicopilot.commitLanguage": "English", "oaicopilot.models": [ { "id": "__provider__soraharu", "owned_by": "soraharu", "baseUrl": "https://api.soraharu.com/v1", "apiMode": "openai" }, { "id": "google/gemini-3-pro-preview", "owned_by": "soraharu", "baseUrl": "https://api.soraharu.com/v1", "context_length": 128000, "max_tokens": 4096, "vision": true, "apiMode": "openai", "temperature": 0 }, { "id": "anthropic/claude-opus-4-5-thinking", "owned_by": "soraharu", "baseUrl": "https://api.soraharu.com/v1", "context_length": 128000, "max_tokens": 4096, "vision": true, "apiMode": "openai", "temperature": 0 }, { "id": "anthropic/claude-sonnet-4-thinking", "owned_by": "soraharu", "baseUrl": "https://api.soraharu.com/v1", "context_length": 128000, "max_tokens": 8192, "vision": true, "apiMode": "openai", "temperature": 0 } ] } 

3、配置讲解

配置主要分为两块:

  • 顶层通用项(全局 API 地址、重试等)
  • ​oaicopilot.models​数组(定义可选的大模型)
顶层通用项
字段作用
​oaicopilot.baseUrl​通用 API 基地址,推荐全局只用一处。
​oaicopilot.delay​控制 Copilot 插件调用接口时的延迟,一般设 0(默认即可)
​oaicopilot.readFileLines​配合 Copilot 文件分段补全时用,设 0 即可
​oaicopilot.retry​Copilot Chat请求失败时的自动重试策略。
​oaicopilot.commitLanguage​Copilot建议生成commit的语言,通常填"English"即可
模型池 oaicopilot.models​
字段作用
​id​必须和/v1/models​能获得的模型id​一致(如"google/gemini-3-pro-preview"​)
​owned_by​一般填"provider名"即可,描述归属或来源
​baseUrl​建议只在顶层写一处,模型对象里不强制(写也可以,冲突时顶层优先)
​apiMode​绝大多数 Soraharu/OneAPI都填"openai",如果是anthropic/olllama/自定义才需变
​context_length​最大上下文长度(token数,依照模型能力填)
​max_tokens​每次回应的最大输出(token数,官方建议4096/8192之类)
​vision​支持多模态(如Gemini/Claude/Sonnet等具备图文能力才设true)
​temperature​控制AI输出随机性,越低回答越稳定,代码任务建议设为0

4、配置KEY

在 VSCode​ 页面进行操作:

  • ​Windows/Linux​ 环境:​​Ctrl+Shift+P​
  • ​Mac​ 环境:Cmd+Shift+P​

输入下面的命令,然后将KEY输入进去:

​Set OAl Compatible Multi-Provider Apikey​

四、模型使用

  1. 点击进入 Copilot 聊天框
  2. 点击模型选择框
  3. 点击模型管理(Manage Modules....)
  4. 选择 OAI Compatible​ 将左侧的隐藏眼睛关闭,这样我们自己设定的模型就会出现在选择框了。

Read more

【C++模版】泛型编程:代码复用的终极利器

【C++模版】泛型编程:代码复用的终极利器

目录 一、泛型编程 1.1 为什么需要泛型编程? 1.2 模板:泛型编程的基础 二、函数模板 2.1 函数模板的定义格式 2.2 函数模板的原理 2.3 函数模板的实例化 2.3.1 隐式实例化 2.3.2 显式实例化 2.4 模板参数的匹配原则 ☃. 小彩蛋: 模板中::的二义性问题 三、类模板 3.1 类模板的定义格式 3.2 类模板的实例化 四、非类型模板参数  4.1 核心概念与语法 经典案例:实现编译期定长数组

By Ne0inhk
【C++笔记】STL知识铺垫

【C++笔记】STL知识铺垫

前言:          在前面的学习中,我们已经掌握了C++的基础语法和编程概念,本文将深入探讨C++标准库的使用,并详细介绍迭代器、auto关键字以及范围for循环等相关知识。          一、STL简介          1.1 什么是STL          STL(Standard Template Library,标准模板库)是C++标准库的核心组成部分,它不仅提供了可复用的组件库,更是一个集成了高效数据结构与算法的软件框架。          1.2 STL的六大组件          由于历史原因,string 类型先于 STL 出现,STL 后来由惠普实验室开发并开源,因此人们通常不将 string 归入 STL 范畴。                   二、迭代器                  迭代器(Iterator)是 C++ STL 中最精妙的设计之一,如果把 STL 的容器比作各种不同类型的仓库(数组、链表、

By Ne0inhk
2026年3月GESP真题及题解(C++一级):数字替换

2026年3月GESP真题及题解(C++一级):数字替换

2026年3月GESP真题及题解(C++一级):数字替换 题目描述 Alice 不喜欢 4,喜欢 8,她想把 4 全换成 8,若无 4 则不修改。 输入格式 输入一行,一个整数 A,表示替换前的数。 输出格式 输出一行,包含一个整数 B,表示替换后的数。 样例 样例 1: 输入: 8459045 输出: 8859085 样例 2: 输入: 123 输出: 123 数据范围 * 0 ≤ A ≤ 10 9 0 \leq A \leq 1

By Ne0inhk
手写一个C++ TCP服务器实现自定义协议(顺便解决粘包问题)

手写一个C++ TCP服务器实现自定义协议(顺便解决粘包问题)

在之前的博客中,我们了解了关于UDP和TCP的网络编程,直观的感受了一下网络套接字是如何使用的,并且成功的完成了客户端与服务端的网络通信,但是其中还有一个小细节我们可能会忽略,就是UDP是基于数据报进行传输的,一下子就将所有我们要发送的信息传送给对方,但是我们的TCP可是基于字节流进行传输的,我们如何保证读取上来的数据,是一个完整的报文呢? 我们在进行TCP网络通信的时候,通过调用connec函数调用,使客户端可以和服务端保持链接之后,客户端将自己想要发送的数据通过write系统调用写进对应的socket函数调用给我们返回的文件描述符所对应的文件中。 现在有一个问题就是我们向文件中写入的时候,直接将其放入即可,但是想要往出拿的时候就有点困难了,想要往出拿的人如果不知道放的人是如何放的,就会造成一系列的错误,这就好比放数据时先放了一个整形,又放了一个浮点数,还放了一个字符串,然而拿的人按照字符串,整形,浮点数这样的方式进行获取,这就会导致数据不一致的现象,所以一旦我们要发送一些带有结构化的数据时,就必须再次制定——协议,这样才能满足我们想要返送一些结构化数据的需求。 TCP是传输控

By Ne0inhk