This is stars and forks stats for /mengjian-github/copilot-analysis repository. As of 12 May, 2024 this repository has 1389 stars and 209 forks.
花了大半个月,我终于逆向分析了Github Copilot 背景 众所周知,Github Copilot是一种基于机器学习的代码自动补全工具。它使用了来自GitHub的大量代码作为训练数据,并使用OpenAI的语言模型来生成代码。Copilot还可以学习用户的编码习惯,并根据上下文推断出正确的代码片段。 在实际使用中发现大部份提示还是非常好用的,能够较为准确的推测出用户意图,甚至是基于项目其他文件的上下文进行推理。比较好奇这里是怎么做到的,于是探索了这个VSCode插件的详细实现。 准备工作 由于Copilot并没有开源,因此我们需要做一些逆向的准备。 首先,找到VSCode插件的安装目录,拿到extension.js: 在mac下插件目录在~/.vscode下,我们可以拿到一个经过压缩混淆的文件: 1. 分割webpack_modules 针对整个webpack压缩混淆的js,我们首先要将不同的bundle识别出来,分割成单个文件,以便于后续的分析。 由于压缩后的代码存在很多不确定性,一开始打算尝试通过正则提取,但无论如何都有各种边界情况导致提取不正确,最简单的方法还是通过AST来提取。 首先,通过babel-parser将源码解析为AST: const...
花了大半个月,我终于逆向分析了Github Copilot 背景 众所周知,Github Copilot是一种基于机器学习的代码自动补全工具。它使用了来自GitHub的大量代码作为训练数据,并使用OpenAI的语言模型来生成代码。Copilot还可以学习用户的编码习惯,并根据上下文推断出正确的代码片段。 在实际使用中发现大部份提示还是非常好用的,能够较为准确的推测出用户意图,甚至是基于项目其他文件的上下文进行推理。比较好奇这里是怎么做到的,于是探索了这个VSCode插件的详细实现。 准备工作 由于Copilot并没有开源,因此我们需要做一些逆向的准备。 首先,找到VSCode插件的安装目录,拿到extension.js: 在mac下插件目录在~/.vscode下,我们可以拿到一个经过压缩混淆的文件: 1. 分割webpack_modules 针对整个webpack压缩混淆的js,我们首先要将不同的bundle识别出来,分割成单个文件,以便于后续的分析。 由于压缩后的代码存在很多不确定性,一开始打算尝试通过正则提取,但无论如何都有各种边界情况导致提取不正确,最简单的方法还是通过AST来提取。 首先,通过babel-parser将源码解析为AST: const...
repo | techs | stars | weekly | forks | weekly |
---|---|---|---|---|---|
painebenjamin/app.enfugue.ai | PythonJavaScriptCSS | 275 | +15 | 13 | +5 |
adamyi/wechrome | JavaScript | 503 | 0 | 90 | 0 |
chalk/chalk | JavaScriptTypeScript | 20.8k | 0 | 869 | 0 |
easychen/deepgpt-dist | JavaScriptHTML | 222 | 0 | 40 | 0 |
okx/okexchain-docs | MDXJavaScript | 39 | 0 | 19 | 0 |
BoomDAO/world-template | MotokoJavaScriptOther | 20 | 0 | 0 | 0 |
BoomDAO/world-engine | MotokoJavaScriptOther | 41 | 0 | 2 | 0 |
BoomDAO/game-launcher | MotokoTypeScriptJavaScript | 28 | 0 | 3 | 0 |
BoomDAO/examples | JavaScriptMotokoTypeScript | 20 | 0 | 0 | 0 |
anviljs/anvil.demo.scaffolds | PerlJavaScriptErlang | 0 | 0 | 0 | 0 |