通过语言服务器为GitHub Copilot CLI提供真实的代码智能

为GitHub Copilot CLI安装和配置LSP服务器,用真正的代码智能替换暴力破解grep/反编译。带有语言服务器的Give GitHub Copilot CLI真实代码智能文章首次出现在GitHub博客上。

您看过GitHub Copilot CLI将JAR文件提取到临时目录、grep through.class文件以及从原始字节码拼接API签名吗?代理是足智多谋的,但没有语言服务器,这是它能做的最好的事情。语言服务器协议( LSP )是支持在VS Code等编辑器中进行定义、查找引用和类型解析的标准。它在航站楼也能正常工作。

LSP设置技能可自动安装和配置Copilot CLI的LSP服务器,因此代理将获得有关代码的精确、结构化的答案,而不是依赖于文本搜索启发式方法。在本文中,您将了解该技能的工作原理,查看其生成的配置格式,并了解目前支持的14种语言中的任何一种。

问题:启发式代码理解没有LSP服务器, GitHub Copilot CLI中的代理通过文本搜索和二进制提取对API信息进行逆向工程。

对于Java项目,可能如下所示: # Find the dependency JAR find ~/.m2/repository -name "* httpclient *.jar" #将其提取到临时目录mkdir/tmp/httpclient & & cd/tmp/httpclient jar xf ~/.m2/repository/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar #在提取的类文件中搜索方法grep -r "execute" --include = "*.class"。对于Python,代理可能会在site-packages中对文件进行分类。

对于TypeScript,它会遍历node_modules。这些基于文本的方法适用于简单的情况,但它们对原始文本进行模式匹配,而不是真正的语义分析,因此它们错过了泛型、重载和传递类型,并且根本看不到编译的字节码。这正是语言服务器接近的差距。LSP服务器从结构上解决了这个问题。