元鉴
返回中文阅读流
GitHub Blog / Changelog2026-06-10

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

为 GitHub Copilot CLI 安装并配置 LSP 服务器,用真正的代码智能替代暴力 grep/反编译。

摘要已翻译official company source英文原文正文翻译排队
正文翻译排队

该来源正文已进入翻译队列,中文正文生成前先展示摘要和原始出处入口。

摘要

为 GitHub Copilot CLI 安装并配置 LSP 服务器,用真正的代码智能替代暴力 grep/反编译。

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

为 GitHub Copilot CLI 安装并配置 LSP 服务器,用真正的代码智能替代暴力 grep/反编译。

Decorative header image showing the GitHub Copilot CLI ASCII art.
June 10, 2026
| 5 minutes
  • 分享:

你是否见过 GitHub Copilot CLI 将 JAR 文件解压到临时目录、在 .class 文件中执行 grep,并从原始字节码中拼凑出 API 签名?这个代理很有办法,但没有语言服务器时,它能做到的也就只有这些。

Language Server Protocol(LSP)是支撑 VS Code 等编辑器中“转到定义”“查找引用”和类型解析功能的标准。它在终端中同样适用。LSP Setup 技能会自动为 Copilot CLI 安装并配置 LSP 服务器,让代理获得关于你代码的精确、结构化答案,而不是依赖文本搜索启发式方法。

在本文中,你将了解该技能在底层如何工作,查看它生成的配置格式,并为目前支持的 14 种语言中的任意一种完成设置。

问题:启发式代码理解

如果没有 LSP 服务器,GitHub Copilot CLI 中的代理会通过文本搜索和二进制提取来逆向推断 API 信息。对于 Java 项目,这可能类似于:

# Find the dependency JAR 
find ~/.m2/repository -name "*httpclient*.jar" 
 
# Extract it to a temp directory 
mkdir /tmp/httpclient && cd /tmp/httpclient 
jar xf ~/.m2/repository/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar 
 
# Search extracted class files for a method 
grep -r "execute" --include="*.class" .

对于 Python,代理可能会 cat site-packages 内的文件。对于 TypeScript,它会遍历 node_modules。这些基于文本的方法对简单场景有效,但它们是在原始文本上做模式匹配,而不是真正的语义分析,因此会漏掉泛型、重载和传递类型,也完全无法看到已编译的字节码。这正是语言服务器要弥补的缺口。

LSP 服务器会从结构上解决这个问题。当代理针对某个符号发送 textDocument/definition 请求时,语言服务器会返回精确的源代码位置、完全解析后的类型和签名。

什么是代理技能?

代理技能是一组可复用的指令,用于扩展 AI 编码代理的能力。技能定义在带有 YAML frontmatter 的 Markdown 文件中,并遵循标准结构:触发描述、分步工作流、参考数据和行为约束。

LSP Setup 技能利用这一结构,引导代理完成多步骤安装过程,包括检测操作系统、选择合适的包管理器、写入有效配置并验证结果。

LSP Setup 技能的工作方式

触发后,该技能会执行一个七步工作流:

1. 语言选择

代理使用 ask_user 并提供一组选项,以确定用户需要为哪种语言提供 LSP 支持。这会驱动后续所有步骤。

2. 操作系统检测

代理运行 uname -s(或在 Windows 上检查 $env:OS / %OS%)来确定目标平台。安装命令会因操作系统而异。例如,macOS 上是 brew install jdtls,而 Linux 上则是从 eclipse.org 下载。

3. LSP 服务器查找

该技能包含一个参考文件(references/lsp-servers.md),其中为 14 种语言提供了经过整理的数据:各操作系统的安装命令、二进制文件名以及可直接使用的配置片段。代理会读取该文件并选择匹配的条目。

4. 配置作用域

代理会询问配置应采用哪种方式:

  • 用户级:~/.copilot/lsp-config.json —— 适用于所有仓库
  • 仓库级:仓库根目录下的 lsp.json 或 .github/lsp.json —— 作用于单个项目

当两者同时存在时,仓库级配置优先。

5. 安装

代理运行相应的安装命令。例如:

# TypeScript on any OS 
npm install -g typescript typescript-language-server 
 
# Java on macOS 
brew install jdtls 
 
# Rust on any OS 
rustup component add rust-analyzer

6. 配置

代理会向所选配置文件写入或合并一个条目。该格式使用 lspServers 对象,其中每个键都是一个服务器标识符:

{ 
  "lspServers": { 
    "java": { 
      "command": "jdtls", 
      "args": [], 
      "fileExtensions": { 
        ".java": "java" 
      } 
    } 
  } 
} 

该技能强制执行的关键规则:

  • command 必须位于 $PATH 中,或是绝对路径
  • args 通常包含 "--stdio",用于标准 I/O 传输(某些服务器如 jdtls 会在内部处理这一点)
  • fileExtensions 将每个扩展名(带前导点)映射到一个语言标识符
  • 配置文件中的现有条目会被保留——代理只会合并,绝不覆盖

7. 验证

代理运行 which <binary>(或在 Windows 上运行 where.exe)以确认服务器可访问,然后验证配置文件是格式良好的 JSON。

支持的语言

该技能内置了一组面向多种编程语言的预定义语言服务器。如果编码代理遇到尚未映射的语言,它会搜索合适的服务器,并引导你完成手动配置。

设置完成后会发生什么变化

配置好 LSP 服务器后,CLI 代理可以:

  • 跨依赖解析类型——不再需要在 JAR 文件或 node_modules 中执行 grep
  • 跳转到第三方库中的定义,即使源代码未检入仓库
  • 查找项目中某个符号的所有引用
  • 读取任何函数、类或类型的悬停文档

这意味着代理会花更少时间调用工具,并在第一次尝试时生成更准确的代码。对你而言,这意味着更少等待:不必等代理反编译 JAR 文件或在 node_modules 中 grep,只为回答一个 IDE 早已知道的问题;同时也会减少因误读签名而走错方向的情况。代理会像你在编辑器中使用“转到定义”一样,以同样结构化的理解来推理你的代码,因此你可以把更大、更棘手的任务交给它,并信任结果。

开始使用

  1. 下载该技能:访问 Awesome Copilot LSP Setup 技能页面,点击 Download 按钮获取 ZIP 文件。
  2. 运行以下命令,将 ZIP 解压到 ~/.copilot/skills/:
unzip lsp-setup.zip -d ~/.copilot/skills/
  1. 重启 GitHub Copilot CLI:如果 Copilot CLI 已在运行,请先输入 /exit。然后重新启动 copilot,使其加载新技能。
  2. 要求代理设置语言服务器:例如,“set up LSP for Java” 或 “enable code intelligence for Python”。
  3. 验证:该技能安装并配置 LSP 服务器后,再次重启 Copilot CLI(/exit,然后重新启动),运行 /lsp 检查服务器状态,并尝试对某个依赖中的符号执行“转到定义”。

该技能是 Awesome Copilot 项目的一部分。它是开源的,欢迎贡献和反馈!

标签:

  • 正文:GitHub Copilot
  • 正文:GitHub Copilot CLI

作者

Bruno Borges

正文:Bruno Borges

正文:@brunoborges

首席产品经理

相关文章

Decorative header image showing the GitHub Copilot CLI ASCII art.

从一次性提示到工作流:如何在 GitHub Copilot CLI 中使用自定义代理

自定义代理让 GitHub Copilot CLI 能够理解你的技术栈和团队工作流,将一次性的终端提示转化为可重复、可审查的流程。

Decorative background featuring two Copilot figures moving among abstract green and translucent blocks.

GitHub 连续第三年被 Gartner® Magic Quadrant™ for Enterprise AI Coding Agents 评为领导者

我们致力于赋能每一位开发者,构建一个开放、安全且由 AI 驱动的平台,定义软件开发的未来。

Copilot appears against a decorative background with scattered green squares.

随时随地继续你的本地 GitHub 会话

在 VS Code 或 CLI 中启动工作,再通过手机完成。GitHub Copilot 会话的远程控制现已在 github.com 和 GitHub Mobile 上正式可用。

探索更多 GitHub 内容

Docs

文档

掌握 GitHub 所需的一切,尽在一处。

GitHub

正文:GitHub

在 GitHub 上构建未来;这里欢迎来自任何地方的任何人构建任何事物。

Customer stories

客户故事

了解使用 GitHub 构建产品的公司和工程团队。

The GitHub Podcast

正文:The GitHub Podcast

收听 GitHub podcast,了解围绕 GitHub 上开源开发者社区的主题、趋势、故事与文化。