share-copilot/README-EN.md
2023-09-13 16:25:36 +08:00

166 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

The beta version now supports full interface proxy, S
o even code suggestions go through the proxy,
Still in testing.
![输入图片说明](readme/screenshots.gif)
***
# share-copilot
- Acts as a proxy server, forwarding requests to the Copilot plugin's API
- Supports both vscode and Jetbrains plugins
- Supports multiple users sharing a single token
- Optimizes request logic
![软件系统网络架构.png](https://img1.imgtp.com/2023/09/10/qTL8A2u9.png)
***
# 一、Build It Yourself
```sh
Test Environment: Linux4.18.0-305.3.1.el8.x86_64 GNU/Linux
Requires Go environment;
resolve any issues chatgpt.
```
```sh
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
# Add the following environment variables
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
# Make the environment variables effective
source ~/.bashrc
# Verify the installation
go version
# CD to the source directory of main.go
cd /share-copilot/source
go build
```
***
# 二、Use the Ready-Made Version
### 1.Installation
```sh
git clone https://gitlab.com/luyoyu/share-copilot.git
```
```sh
cd share-copilot
```
```sh
bash install.sh
```
### 2.Configuration
##### 2.1 Explanation of config.json
```js
domain // Listening domain or IP (can be reverse proxied with nginx)
host // IP
port // Port 80 or 443
certPath // Public key path - required for 443
keyPath // Private key path - required for 443
github_api_url // Default, usually not changed
token // Your Copilot token(s), you can put multiple, they will be used randomly in requests
// After logging into the Copilot plugin, find them in %userprofile%\AppData\Local\github-copilot\host.json (starting with "ghu_")
verification // Custom verification
```
##### 2.2 Example
```json
{
"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":""
}
```
The format must be correct;
### 3.启动
```sh
scop r # Run [Press Esc to exit]
scop rb # Run in the background
scop st # Stop
scop v # View status
```
### 4.Complete Example
##### 4.1 Server-side Configuration (Modify config.json)
```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"
}
```
------
##### 4.3Local Configuration Changes:
**Using Windows as an example**
- **For Jetbrains Plugin: Modify %userprofile%\AppData\Local\github-copilot\host.json**
```json
{
"github.com":{
"user":"suibian",//Fill in as desired
"oauth_token":"i_am_free",// Corresponds to the "verification" value above
"dev_override":{
"copilot_token_url":"https://api.example.com/copilot_internal/v2/token"
// Your address
}
}
}
```
- **For Vscode Plugin: Modify %userprofile%\.vscode\extensions\github.copilot-xxxx\dist\extension.js**
```js
//Add the following code, note that you'll need to re-add it if the vscode plugin gets updated; Jetbrains does not require this step
process.env.GITHUB_TOKEN="i_am_free"; // Corresponds to the "verification" value above
process.env.GITHUB_API_URL="https://api.example.com"; // Your address
process.env.CODESPACES="true";
process.env.GITHUB_SERVER_URL="https://github.com";
```
------
##### **Successful Testing:**
![demo2.png](https://img1.imgtp.com/2023/09/09/FHDNLixL.png)