
让我们使用 Override 给傲慢的 GitHub Copilot 撅到飞起。
简介
override 项目:https://github.com/linux-do/override
新玩具,将 Github Copilot 的代码生成和对话转到我们自己的服务。
实现灵活计费,用就花钱,不用就不花。还可团队共享。还可以 chat2api 接入使用对话。
字少事大。更多的,自己体会吧。
工作原理
- 理论上,Chat 部分可以使用
chat2api
,而 Codex 代码生成部分则不太适合使用chat2api
。 - 代码生成部分做过延时生成和客户端 Cancel 处理,很有效节省你的 Token。
- 有什么问题,请在论坛 https://linux.do 讨论
模型
本文使用的模型为:DeepSeek Coder
之前没像大家推荐是因为 CloseAI 的 补全模型 gpt-3.5-turbo-instruct
实在是不好用,还没性价比。
近期 DeepSeek API 升级,支持续写、FIM、Function Calling、JSON Output
DeepSeek FIM 能支持 8K 以上输入,生成代码质量也不错。
关于 DeepSeek Coder
如何购买:
https://platform.deepseek.com/ 在这里创建账号(使用国外 IP 打开,可以邮箱注册,无需实名认证。否则只有手机号注册)
购买额度可以支付宝等方式,很方便。拿到 key 开搞。
Docker 部署
克隆项目
1
git clone https://github.com/linux-do/override.git
新建配置文件
路径可自定义,我的路径是
/data/override/config.json
1
vim /data/override/config.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20{
"bind": "0.0.0.0:8181",
"proxy_url": "",
"timeout": 600,
"codex_api_base": "https://api.deepseek.com/beta/v1",
"codex_api_key": "sk-8cxxxx",
"codex_api_organization": "",
"codex_api_project": "",
"codex_max_tokens": 500,
"code_instruct_model": "deepseek-coder",
"chat_api_base": "https://api.kl.do/v1",
"chat_api_key": "sk-xxx",
"chat_api_organization": "",
"chat_api_project": "",
"chat_max_tokens": 4096,
"chat_model_default": "gpt-4o",
"chat_model_map": {},
"chat_locale": "zh_CN",
"auth_token": ""
}修改项目的 docker-compose.yaml
我这里修改了端口映射18181
和配置文件映射1
2
3
4
5
6
7
8
9
10
11
12services:
override-app:
image: linux-do/override:latest
container_name: override-app
restart: always
build:
context: .
dockerfile: Dockerfile
volumes:
- /data/override/config.json:/app/config.json
ports:
- "18181:8181"部署项目
1
2
3docker compose up -d
docker compose ps
Vscode 使用
安装 Github Copilot
编辑配置文件
使用快捷键ctrl+shift+p
唤出指令输出栏编辑 Github Copilot 配置
1
2
3
4
5
6
7"github.copilot.advanced": {
"debug.overrideCAPIUrl": "http://你的ip:18181/v1",
"debug.overrideProxyUrl": "http://你的ip:18181",
"debug.chatOverrideProxyUrl": "http://你的ip:18181/v1/chat/completions",
"authProvider": "github-enterprise"
},
"github-enterprise.uri": "https://cocopilot.org",重启 vscode
使用 Github Copilot
chat
代码补全
首次使用延迟可能会比较高,使用一会就好一些。
codex_max_tokens
脚本 Patchcodex_max_tokens
工作并不完美,已经移除。JetBrains IDE 完美工作,VSCode
需要执行以下脚本 Patch 之:- macOS
1
sed -i '' -E 's/\.maxPromptCompletionTokens\(([a-zA-Z0-9_]+),([0-9]+)\)/.maxPromptCompletionTokens(\1,2048)/' ~/.vscode/extensions/github.copilot-*/dist/extension.js
- Linux
1
sed -E 's/\.maxPromptCompletionTokens\(([a-zA-Z0-9_]+),([0-9]+)\)/.maxPromptCompletionTokens(\1,2048)/' ~/.vscode/extensions/github.copilot-*/dist/extension.js
- Windows 可以用如下的 python 脚本进行替换
- 因为是 Patch,所以:Copilot 每次升级都要执行一次。
- 具体原因是客户端需要根据
max_tokens
精密计算 prompt,后台删减会有问题。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28# github copilot extention replace script
import re
import glob
import os
file_paths = glob.glob(os.getenv("USERPROFILE") + r'\.vscode\extensions\github.copilot-*\dist\extension.js')
if file_paths == list():
print("no copilot extension found")
exit()
pattern = re.compile(r'\.maxPromptCompletionTokens\(([a-zA-Z0-9_]+),([0-9]+)\)')
replacement = r'.maxPromptCompletionTokens(\1,2048)'
for file_path in file_paths:
with open(file_path, 'r', encoding="utf-8") as file:
content = file.read()
new_content = pattern.sub(replacement, content)
if new_content == content:
print("no match found in " + file_path)
continue
else:
print("replaced " + file_path)
with open(file_path, 'w', encoding='utf-8') as file:
file.write(new_content)
print("replace finish")- macOS
JetBrains 等使用
注意:Github Copilot 插件的最高版本为 1.5.8.5775
如果已升级的佬友,在这里回滚至 1.5.8.5775
历史版本下载地址: https://plugins.jetbrains.com/plugin/17718-github-copilot/versions/stable
ja-netfilter 搭配 plugin-env.jar 设置环境变量(推荐)
由于 JetBrains 系列 IDE 需要设置环境变量,而使用脚本设置根据平台不同还有所区别。总之非常麻烦还可能没生效。
所以就有了这个 ja-netfilter
插件:plugin-env
这下使用 ja-netfilter
的佬友再也不用为环境变量发愁了。具体使用可以查看插件的 README.md,理论上能做更多的事情。
先从这里下载发行版,丢进你的 plugins-jetbrains
文件夹。
然后在你的 config-jetbrains
目录新建 env.conf
文件。
以下是一个替代 CoCopilot
脚本的 env.conf
配置:
1 | [ENV] |
重启 IDE 即可
配置环境变量(不支持高版本,不推荐)
将 override\scripts
所有脚本中的 127.0.0.1:8181 替换为你的 ip:端口
按照 Cocopilot Dashboard (cocopilot.org) 页面截图配置后,执行对应系统的脚本后重启 IDE:
scripts/install.sh
适用于macOS
和Linux
scripts/install-all-users.vbs
适用于Windows
,为电脑上所有用户配置,需要有管理员权限。scripts/install-current-user.vbs
适用于Windows
,为当前用户配置,无需管理员权限。scripts/uninstall
相关脚本与之对应,为卸载配置。
- Thanks for your appreciation. / 感谢您的赞赏