Claude Code LSP 简明教程
Claude Code 现在支持语言服务器协议 (LSP),我正在使用它来显著改善我的编码工作流程。
如果您不知道 LSP 是什么,您可能已经在不知不觉中使用它了——每天在您的代码编辑器中。
1、什么是 LSP?
当您在 VS Code 中编写代码时,将鼠标悬停在函数上,工具提示会显示参数和文档。

那就是 LSP。
当你右键点击一个变量,选择“转到定义”,它直接跳转到对应的文件和行时?这就是语言服务器协议 (LSP)。
当你在代码下方看到红色波浪线,提示你代码运行前就存在问题时?这就是 LSP。
当你开始输入函数名,VS Code 自动补全并给出正确的参数时?没错——还是 LSP。

微软创建了语言服务器协议 (LSP),旨在让代码智能一次构建,即可在任何地方运行。
你的 TypeScript 语言服务器可以在 VS Code、Cursor、JetBrains 中使用,现在,它也可以在 Claude Code 中使用。
2、没有 LSP 的 Claude Code
在此次更新之前,Claude Code 的功能虽然很巧妙,但存在局限性。
当 Claude 需要查找函数定义位置时,它本质上是在执行一个高级的 grep 命令——搜索文本模式。
当它需要理解你的代码结构时,它会解析原始文本。
这种方法出乎意料地有效。LLM(语言学习模型)之所以擅长将代码理解为文本,是因为它们已经接触过大量的代码。
但这种方法从根本上来说是有局限性的。
你实际上是在要求人工智能从原始文本中重建出你的集成开发环境(IDE)已经内置的那种语义理解能力。
如果你曾经让 Claude Code “查找所有对该函数的引用”,并看着它逐个读取几十个文件,你就会明白我的意思了。
3、原生 LSP 支持
Claude Code 2.0.74 版本已发布,并包含原生 LSP 支持。
这意味着 Claude Code 现在可以使用与 IDE 相同的代码智能功能:
- 跳转到定义 — 立即跳转到符号定义
- 查找引用 — 在整个代码库中查找函数或变量的每次使用
- 悬停查看文档 — 查看类型提示、参数和描述
- 实时诊断 — 编辑后立即捕获错误和警告
Claude Code 现在可以直接查询语言服务器,而无需像以前那样读取 100 个文件,就像您在 VS Code 中按住 Ctrl 键并单击函数一样。
这就是专业开发人员浏览代码的方式。现在,Claude Code 也能做到。
4、在 Claude Code 中设置 LSP
设置过程非常简单。我将逐步指导您完成。
步骤 1:启用 LSP 工具
首先,您需要在 Claude Code 中启用 LSP 工具。将以下内容添加到您的 shell 配置文件(.bashrc、.zshrc 或等效文件):
export ENABLE_LSP_TOOLS=1重启终端或运行 source ~/.zshrc 以应用更改。
步骤 2:安装语言服务器插件
Claude Code 使用插件连接到语言服务器。最简单的安装方法是通过 /plugin 命令。
在 Claude Code 中,输入:
/plugin这将打开插件界面。浏览可用插件,找到适用于您语言的插件。

对于 Python,选择 pyright-lsp(微软的静态分析器)。

对于 TypeScript/JavaScript,选择 vtsls 或 typescript-lsp。

选择“仅安装”(用户范围),然后等待安装完成。
步骤 3:安装语言服务器二进制文件
该插件需要在您的系统上安装实际的语言服务器二进制文件。
对于 Python (Pyright):
pip install pyright对于 TypeScript/JavaScript:
npm install -g @vtsls/language-server typescript对于 Go:
go install golang.org/x/tools/gopls@latest对于 Rust:
rustup component add rust-analyzer
步骤 4:重启 Claude Code
安装插件和语言服务器二进制文件后,请重启 Claude Code 以使更改生效。
claude步骤 5:验证是否正常工作
再次运行 /plugin 并检查“已安装”选项卡。您应该会看到已列出的 LSP 插件。

您还可以通过让 Claude Code 对文件使用 LSP 来验证:
Find references to this function using LSP如果成功,您会看到 Claude Code 使用 find_references 工具而不是 grep。
5、支持的语言
Claude Code LSP 开箱即用,支持 10 多种语言:

如果您的语言未列出,您可以创建自己的 LSP 插件。有关自定义插件设置,请参阅 Claude Code 文档。
6、需要了解的 5 个 LSP 操作
配置 LSP 后,Claude Code 可以使用五个强大的操作。这些操作与您在 VS Code 中习惯的操作直接对应。
6.1 goToDefinition — 跳转到代码定义的位置
这相当于在 IDE 中使用 Ctrl+单击(或在 Mac 上使用 Cmd+单击)。
向 Claude Code 询问类似以下内容:
Where is the processRequest function defined use LSP?
启用 LSP 后,Claude Code 不会随机搜索文件。它会查询语言服务器,并直接跳转到所需的文件和行号。
6.2 findReferences — 查找代码库中的所有使用位置
这是调试和重构的杀手级功能。
Claude 不会读取数十个文件,而是查询语言服务器,查找函数、变量或类被使用的每个位置。

Find all references to the displayError function use LSP
以下情况非常有用:
- 重构代码并需要知道哪些部分会出错
- 追踪最近更改引入的错误
- 了解函数在整个项目中的使用方式
6.3 hover — 获取文档和类型信息
将鼠标悬停在 VS Code 中的函数上时,您可以看到其签名、参数和文档。
Claude Code 现在也能做到同样的事情了。
What parameters does the displayBooks function accept use LSP?使用 LSP,Claude Code 会查询语言服务器并返回:
- 必需参数
- 可选参数
- 参数类型
- 描述和文档

这对于像 Python 这样的动态类型语言尤其强大,否则 Claude 可能会猜错。
从上面的示例中可以看出,它漏掉了 HTML,因为它没有 HTML 的 LSP。
6.4 documentSymbol — 列出文件中的所有符号
想要快速概览文件中的所有内容吗?类、函数、变量——应有尽有。
Show me all the symbols in backend/index.js use LSPClaude Code 返回该文件中定义的每个符号的结构化列表。
6.5 workspaceSymbol — 在整个项目中搜索符号
这类似于项目范围的搜索,但更智能。
它不搜索文本,而是搜索实际的代码符号——函数名、类名和常量。
Find all methods that contain innerHTML6.6 附加功能:实时诊断
LSP 不仅能帮助您浏览代码,还能捕获错误。
每次编辑后,语言服务器都会将诊断信息(错误、警告、提示)报告给 Claude Code。
这意味着 Claude 可以:
- 在编写代码后立即查看类型错误
- 在运行任何代码之前捕获缺失的导入
- 识别那些原本只会在运行时出现的问题
7、实际示例——LSP 的应用
让我向您展示我是如何在项目中实际使用它的。
示例 1:追踪函数的使用位置
我正在开发一个名为 AseBook Finder 的项目——这是一个使用 Gemini API 根据用户偏好推荐书籍的简单应用程序。
前端有几个实用函数,我需要找到所有调用 displayBooks 函数的地方。
如果没有 LSP,Claude Code 会遍历文件查找文本“displayBooks”。虽然它能正常工作,但可能会遗漏上下文或返回误报。
有了 LSP,我问:
Find all references to the displayBooks function using LSPClaude Code 查询了语言服务器并返回了确切位置:
- 函数定义
- fetch 成功处理程序中的调用
- 任何其他引用位置
无需手动扫描文件。只需精确、即时的结果。
示例 2:理解函数参数
在同一个项目中,我有一个 displayError 函数来处理错误消息。
这很简单,但如果我希望 Claude 在生成使用它的新代码之前,准确地理解它的工作原理呢?
我问:
What parameters does displayError accept?有了 LSP,Claude Code 查询了语言服务器并返回了函数签名——表明它接受一个 message 参数。
这在大型项目中尤为重要,因为这些项目中的函数可能具有多个参数、默认值或复杂类型。 Claude 现在可以读取实际的签名,而无需根据上下文猜测。
示例 3:查找 API 调用位置
我想追踪应用程序中 Gemini API 推荐端点的调用位置。
Find all references to /api/recommendations in the codebaseClaude Code 在点击处理程序中找到了 fetch 调用——第 27 行,它向 http://localhost:3000/api/recommendations 发送 POST 请求。
这在调试 API 问题或需要了解应用程序中的数据流时非常有用。
示例 4:运行前捕获错误
我在重构 escapeHtml 函数时不小心引入了一个错误——我拼错了一个变量名。
通常情况下,我只有在浏览器抛出错误时才会发现这个问题。
但是启用 LSP 后,Claude Code 通过诊断立即标记了它。
语言服务器报告了这个问题,Claude 甚至在我运行代码之前就捕获了它。
想想你在 VS Code 中的操作:
- 你按住 Ctrl 键并单击跳转到定义页面
- 你右键单击查找所有引用
- 你悬停查看函数签名
- 你依靠红色波浪线来发现错误
你不会简单地搜索文件。你使用这些快捷方式是因为它们更快、更可靠。现在,Claude Code 也能做到同样的事情。
它不是模式匹配。它不再直接处理文本,而是查询语言服务器——也就是驱动 IDE 智能功能的同一工具。
这使得 Claude Code 的运行方式更像专业开发者,而非文本搜索引擎。
8、限制和提示
Claude Code 中的 LSP 功能强大,但仍处于发展初期。
以下是您应该了解的内容。
当前限制:
- 它仍处于早期阶段。2.0.74 版本引入了 LSP 支持,但存在一些 bug。部分用户报告插件加载问题或服务器无法正常启动。如果您遇到问题,请查看 Claude Code 的 GitHub issues——修复程序正在快速推出。
- 没有 UI 指示。与 VS Code 不同,没有视觉指示器显示您的 LSP 服务器正在运行。您不会看到状态栏图标或任何类似的东西。确认的唯一方法是使用实际查询进行测试。
- 语言服务器必须单独安装。仅安装插件是不够的。您需要在系统上安装实际的语言服务器二进制文件(例如 pyright、gopls、rust-analyzer 等),并将其添加到 PATH 环境变量中。
- 某些操作需要特定的语法。LSP 专为光标位置(文件、行、列)而设计。虽然 Claude Code 可以很好地处理这种情况,但有时您可能需要在提示中更明确地指定,例如直接指定“使用 LSP”。
9、充分利用 LSP 的技巧
技巧 1:始终验证您的设置。
安装插件后,运行 /plugin 并检查“已安装”选项卡。然后使用类似“使用 LSP 查找对 X 的引用”这样的简单查询进行测试,以确认其正常工作。
技巧 2:将 LSP 用于导航,而不是所有操作。
LSP 非常适合:
- 在大型代码库中查找引用
- 理解函数签名和参数
- 快速跳转到定义
- 及早发现类型错误
对于简单的文本搜索或类似 grep 的查询,Claude Code 的常规工具即可满足需求。
技巧 3:插件更改后重启 Claude Code
如果您安装了新的 LSP 插件或更新了语言服务器,请重启 Claude Code。服务器会在启动时加载。
技巧 4:检查您的 PATH 环境变量。
如果 Claude Code 显示“没有可用的 LSP 服务器”,则可能是该二进制文件不在您的 PATH 环境变量中。在终端中运行 which pyright(或您的语言服务器命令)进行验证。
技巧 5:必要时明确指定。
如果 Claude Code 在您预期使用 LSP 时没有使用,请在提示符中添加 use LSP:
Find all references to authenticateUser using LSP这将提示 Claude 使用语言服务器,而不是回退到 grep。
10、LSP 的注意事项
对于小型项目或快速脚本,LSP 会增加额外的开销;常规的搜索工具已经足够快了。
LSP 在以下情况下最有价值:
- 代码库庞大(数百个文件)
- 需要调试跨多个文件的复杂问题
- 需要精确的函数签名(尤其是在动态语言中)
- 需要重构并了解哪些操作会导致代码崩溃
对于快速的“在文件中查找此字符串”任务,grep 仍然更快。
11、结束语
Claude Code 与 LSP 的结合带来了显著的升级。
在此之前,Claude 本质上是在进行复杂的文本操作。由于语言逻辑模型 (LLM) 非常擅长理解代码模式,因此这种方式效果不错。
但现在,Claude Code 可以访问与 IDE 相同的语义理解能力。它可以跳转到定义、查找引用、读取函数签名并捕获错误——所有这些都通过语言服务器完成,而不是原始文本解析。
这就是专业开发人员浏览代码的方式。现在,Claude Code 也可以以同样的方式工作。如果您将 Claude Code 用于重要的项目,请设置 LSP。只需五分钟,就能带来显著的改变——尤其是在大型代码库中。
LSP 支持仅仅是个开始。Claude Code 的插件系统正在快速扩展,我预计很快就会有更多语言服务器和集成加入。
原文链接:How I'm Using (New) Claude Code LSP to Code & Fix Bugs Faster (Language Server Protocol)
汇智网翻译整理,转载请标明出处