Go to file
luyoyu aa65c0a77d
update readme/codeTipsProxy.md.
Signed-off-by: luyoyu <8829470+chuangxxt@user.noreply.gitee.com>
2023-09-21 20:26:30 +00:00
readme update readme/codeTipsProxy.md. 2023-09-21 20:26:30 +00:00
src fix some bug 2023-09-21 05:25:28 +08:00
LICENSE add LICENSE. 2023-09-10 12:04:34 +00:00
README-EN.md mod readme 2023-09-13 18:55:27 +08:00
README.md update README.md. 2023-09-21 07:21:00 +00:00

中文 | English

更新代码补全接口代理:代码补全代理说明

share-copilot

  • 作为代理服务器中转copilot插件的API的请求也可以代理无良商贩的自行研究
  • 支持vscode插件和jetbrains插件
  • 支持多用户共享一个token
  • 优化请求逻辑降低suspended概率别万人骑基本不会 输入图片说明
简单说一下
本地插件的请求逻辑:

1.本地插件携ghu_token   请求github的API

2.返回带有时间戳的copilot的token(简称co_token)
  代码提示都是用的co_token

3.co_token到期->ghu_token重新请求->获得新的co_token
-------------------------------------------------------------
代理服务器的逻辑:

代理的是"ghu_token请求"这一环节

1.使用ghu_token请求github的API暂存co_token

2.多用户请求时判断co_token有没有过期没过期直接返回co_token
  减少对ghu_token的请求次数大约10-20分钟过期

3.至于本地co_token也就是代码提示没有走代理可以代理但是要修改插件jetbrains的插件还要重新build
 猜测风控目前也只是停留在请求ghu_token这一层
 
"cocopilot也是代理了ghu_token请求并没有破解插件"


| 文件名          | 说明                
| -------------- | -------------------
| config.json    | 配置文件             
| copilot_api    | guh_token和co_token相关逻辑
| global         | 全局变量、常量或配置
| main           | 主要入口文件   
| middleware     | 中间件,验证域名,验证自定义请求头   
| routers        | 路由信息,定义不同请求路径的处理逻辑。    
| server         | 服务端的代码或相关配置,用于启动和运行服务器。 
| show_msg       | 用于显示消息或信息的函数,展示内容。     


一、自行编译:

测试环境:Linux4.18.0-305.3.1.el8.x86_64 GNU/Linux
需要 go环境 出问题自行chatgpt
git clone https://gitee.com/chuangxxt/share-copilot.git
wget https://dl.google.com/go/go1.21.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.21.1.linux-amd64.tar.gz

vim ~/.bashrc
#添加下列环境
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
#使生效环境变量
source ~/.bashrc
#验证go配置
go version 

#cd到main.go源码目录
cd /share-copilot/src
go build

二、使用现成:

1.安装

wget https://gitee.com/chuangxxt/share-copilot/releases/download/v2.0.4/share-copilot-linux-amd64.zip
unzip share-copilot-linux-amd64.zip 
cd share-copilot
bash install.sh

2.配置

vim  config.json #修改配置信息
2.1 config.json文件说明
domain//监听域名或ip   可用nginx反代

host //ip

port //端口 80或443

certPath//公钥路径-443必须

keyPath//私钥路径-443必须

github_api_url//默认不改

token//自己的副驾驶token,可放多个,请求时随机使用
//登录插件后在%userprofile%\AppData\Local\github-copilot\hosts.json     ghu_开头

verification//自定义验证
2.2 示例
{
	"server": {
		"domain": "example.com",
		"host": "0.0.0.0",
		"port": 443,
		"certPath":"./example.pem",
		"keyPath":"./example.pem"
	},
	"copilot_config":{
		"github_api_url": "https://api.github.com/copilot_internal/v2/token",
		"token":[
			"yours_token_1",
            "yours_token_2",
            "yours_token_3"
		]},
	"verification":"",
         "diyMsg":"",
	"isModMsg":false
}

格式不能错,不确定的去这里验证 ->https://www.json.cn/

3.启动

scop r  #运行 [Ctrl+c退出] 如果运行失败添加可执行权限 chmod +x share-copilot
scop rb #后台运行
scop st #停止
scop v  #查看是否运行

4.完整例子:

4.1 服务端配置修改config.json
{
	"server": {
		"domain": "api.example.com",
		"host": "0.0.0.0",
		"port": 443,
		"certPath":"./example.pem",
		"keyPath":"./example.pem"
	},
	"copilot_config":{
		"github_api_url": "https://api.github.com/copilot_internal/v2/token",
		"token":[
		"ghu_xMNAYLcJAPqAfiGoobrWffkJoNcGMVJtETKA",
        "ghu_GZgKFwraHorAxXXUvsUclOhxiYERPsSJeNuF",
        "ghu_SPUTCLvkMKoeMstPJmhSlYsYvCojhkFjGubl"
		]},
	"verification":"i_am_free",
        "diyMsg":"",
	"isModMsg":false
}
4.2 运行成功截图:

yunxingceshi

Jetbrains       -- 用于Jetbrains插件
Vscode          -- 用于Vscode插件
Valid tokens:   -- 配置里面有效的token数量
Succeed:        -- 插件请求代理成功次数
Failed:         -- 插件请求代理失败次数
GithubApi:      --服务器请求gh_api次数
正常情况下 GithubApi < Succeed 因为请求的Token 几十分钟才过期

4.3本地配置修改可以使用zhile大佬的cocopilot脚本 改成自己的api一键配置

以windows为例

  • jetbrains插件修改%userprofile%\AppData\Local\github-copilot\hosts.json
{
    "github.com":{
        "user":"suibian",//随意填写
        "oauth_token":"i_am_free",//与上面verification对应
        "dev_override":{
            "copilot_token_url":"https://api.example.com/copilot_internal/v2/token"  
            					//你的地址
        }
    }
}
  • vscode插件修改%userprofile%\.vscode\extensions\github.copilot-xxxx\dist\extension.js
//添加下列代码注意vscode插件更新需要重新添加jetbrains则不用
process.env.GITHUB_TOKEN="i_am_free"; //与上面verification对应
process.env.GITHUB_API_URL="https://api.example.com"; //你的地址
process.env.CODESPACES="true";
process.env.GITHUB_SERVER_URL="https://github.com";

4.4测试成功:

demo2.png