Claude Code CLI支持LSP了,编程向智能再进一步

前言

小伙伴们大家好,我是小溪,见字如面。Claude Code CLI V0.27.4版本加入了LSP支持,从此AI编程不再是盲目的通过Grep检索,而是像IDE一样可以做到精准跳转定义、查找引用和实现。

当前使用版本

2.0.76 (Claude Code)

省流版本

  • 在命令行终端使用 ENABLE_LSP_TOOLS=1 claude 命令开启LSP功能
  • 启动Claude Code CLI,运行 /plugin 安装你的语言插件
  • 安装对应的LSP语言服务器
  • 重启Claude Code
  • "使用 LSP 查找 XXX 的所有引用"

了解LSP

LSP简介

LSP(Language Server Protocol)是微软于2016年推出的一种标准化JSON-RPC通信协议,用于连接代码编辑器(如VS Code、Vim)与独立的语言服务器,提供自动补全、跳转定义、语法检查、重构等智能功能 。它将语言分析逻辑从编辑器中解耦,避免了为每种语言和编辑器重复开发(从n×m复杂度降至n+m),支持双向通信,服务器可主动推送诊断结果 。

用白话说就是一套可以让代码变得智能的语言服务协议,通过LSP可以实现一系列的功能,例如编辑器中我们每天都会用到但是不知道如何实现的 跳转到定义、悬停显示文档、实时报错和警告 等功能。

LSP工作原理

LSP的工作原理大致如下:

更多LSP相关内容可以查看LSP官方文档:microsoft.github.io/language-se...

英文不太好以及对LSP语言服务器开发感兴趣的小伙伴也可以查看LSP中文文档:lsp.fosp.cc/lsp/languag...

LSP的优势

在Claude Code CLI V0.27.4版本之前,Claude Code检索内容的方式主要是 grep(Grep 是一个 Linux/Unix 系统的文本搜索工具,全称为 "global regular expression print",用于在文件或输入流中查找匹配指定模式(字符串或正则表达式)的行),翻译成白话就是通过全文本检索的形式进行查找。

例如我们让Cluade Code "查找项目中saveProgress函数的所有调用",可以看到Claude Code的匹配流程:

  • 读取项目文件,通过搜索匹配包含"saveProgress"的文件
  • 读取匹配到的文件内容,从文件内容中匹配"saveProgress"关键词所在的代码行

到这里应该有不少小伙伴会有疑问了,AI查找一个函数的调用有这么费劲吗?AI模型训练时使用了海量资源和代码,目前已经能写出相当不错的代码了,它还能不懂代码?还真是,对于AI来说它没有代码的概念,我们所提供的代码上下文以及AI输出的所有代码在AI看来都是文本,这就是为什么在引入LSP之前AI查找代码或者关键词时耗时的原因。

那么引入LSP后Claude Code会有什么变化呢?

  • 有了LSP,代码相关的问题可以直接问语言服务器,相当于为Claude Code装上了语言中枢,Cluade Code将真正能读懂代码,准确、快速定位代码。
  • 避免全局Grep查找,在一定程度上可以降低toknes消耗

LSP的核心能力

此次Claude Code引入LSP主要带来了以下 7大 核心能力:

  • goToDefinition:跳转到定义,一键跳转跳到函数定义
  • goToImplementation:跳转实现,一键跳转跳到函数实现
  • findReferences:查找引用,查找所有引用的位置
  • hover:悬停信息,鼠标悬停展类型信息、文档注释、函数签名等信息
  • documentSymbol:文档符号,以结构化列表形式展示所有符号信息
  • workspaceSymbol:工作区符号搜索,在整个项目中检索符号信息
  • incomingCalls/outgoingCalls:调用链,详细展示函数前后调用关系

LSP使用场景

LSP不是万能的,选对使用场景才能事半功倍。LSP更适合在以下场景中使用,不仅提效还是节省tokens:

  • 大型项目:文件数超过50,代码行超过5000
  • 复杂项目:项目业务关系、依赖、调用复杂的项目
  • 重构项目:需要重构、频繁改名或者转技术栈的项目
  • 跨文件调用:跨文件调用多的项目

在Claude Code中使用LSP

Claude Code可以在IDE和命令行终端等不同的场景中使用,Claude Code搭配LSP的使用方式也略有不同。

在IDE中使用

这里以Cursor为例,首先在命令行终端输入 /claude 命令启动Claude Code CLI

ini 复制代码
ENABLE_LSP_TOOL=1 claude
或者
export ENABLE_LSP_TOOLS=1
claude

输入交互式命令 /config 查看配置,调整【Auto-connect to IDE (external terminal)】为【true】,该配置主要用来检查和安装【Claude Code for VS Code】插件的,对该插件还不了解的小伙伴可以看往期内容:Claude Code CLI初体验

正常情况下,Claude Code CLI会自动执行如下操作:

  • 检查IDE环境
  • 安装 Claude Code for VS Code 插件
  • 通过 Claude Code for VS Code 插件连接到IDE的LSP服务

如果发现IDE没有自动下载插件,也可以自行在插件市场下载

配置完成后,可以输入提示词验证Claude Code是否具有LSP调用能力

接着输入提示词验证

erlang 复制代码
查看 receiveCredit 的所有引用

可以看到很快Claude Code就给出了准确的结果,给出了函数的 定义位置、导入位置 和 调用位置,并且所有的文件路径都是可以点击的

点击文件路径可以跳转到对应的代码行

经多次使用发现这种方式不是很稳定,即使指定Claude Code CLI强制使用LSP也无法限制Claude Code CLI每次都使用LSP。

在Claude CLI中使用

1)安装语言服务器插件

语言服务器插件是语言服务器和模型之间沟通的桥梁

打开 Claude Code CLI,输入交互式命令 /plugin,搜索lsp看是否可以检索到语言服务器插件

如果没有检索到lsp相关内容,需要先安装 anthropics/claude-plugins-official 插件市场,安装方式可以查看往期内容:Claude Code上线插件系统,AI编程模式再次升级,安装完成后就可以检索到语言服务器插件了。

Anthropic官方插件:github.com/anthropics/...

如果官方也没有找到也可以尝试使用社区插件:github.com/Piebald-AI/...

根据描述选择自己需要的语言服务器插件,回车进入插件安装详情

选择自己需要的安装模式,对Claude Code CLI基础还不了解的小伙伴可以看往期内容:Claude Code CLI初体验

安装成功后可以在【Installed】查看

2)安装语言服务器

语言服务器是真正为语言提供能力的核心

下面是一些常用语言服务器的安装方式

Python:

php 复制代码
$ pip install pyright
或者
$ npm install -g pyright

TypeScript/JavaScript:

ruby 复制代码
$ npm install -g typescript-language-server typescript
或者
$ npm install -g @vtsls/language-server typescript

HTML和CSS

php 复制代码
$ npm install -g vscode-langservers-extracted

Go:

ruby 复制代码
$ go install golang.org/x/tools/gopls@latest

Rust:

csharp 复制代码
$ rustup component add rust-analyzer

Ruby:

php 复制代码
$ gem install ruby-lsp

这里我以typescript服务器为例进行安装,直接在命令行终端输入安装命令

使用下面命令验证语言服务器是否安装成功

shell 复制代码
$ which typescript-language-server
$ typescript-language-server --version

3)基本使用

安装完成后使用以下命令重启Claude Code CLI

ini 复制代码
$ ENABLE_LSP_TOOL=1 claude
或者
$ export ENABLE_LSP_TOOL=1
$ claude

直接输入提示词或者在提示词中添加"使用LSP"关键词向Claude Code CLI提问,可以看到Claude Code CLI先后调用了LSP的 goToDefinition、hover 和findReferences 能力获取信息

然后根据获取到的信息进行提炼总结

cclsp社区方案

如果觉得手动配置LSP语言服务器麻烦,也可以选择使用社区提供的LSP方案,使用交互式命令一键配置。在命令行终端输入如下命令进行初始化配置

ruby 复制代码
$ npx cclsp@latest setup

选择支持的语言类型,支持多选

配置完成后将会在项目根目录生成 ./claude/cclsp.json 配置文件,同时会添加 cclsp MCP服务

初始化完成后就可以使用cclsp提供的LSP服务了

自定义语言插件

语言服务器是真正为语言提供能力的核心

创建一个Claude Code插件,添加配置如下:

json 复制代码
{
  "name": "typescript-lsp",
  "description": "TypeScript/JavaScript language server",
  "version": "0.0.1",
  "author": {
    "name": "程序员小溪",
    "email": "邮箱"
  },
  "source": "./typescript-lsp",
  "strict": false,
  "lspServers": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"],
      "extensionToLanguage": {
        ".ts": "typescript",
        ".tsx": "typescriptreact",
        ".js": "javascript",
        ".jsx": "javascriptreact",
        ".mts": "typescript",
        ".cts": "typescript",
        ".mjs": "javascript",
        ".cjs": "javascript"
      }
    }
  }
}

对于Claude Code插件还不了解的小伙伴可以看往期内容:如何从零开始创建一个Claude Code插件,更多参数可以参阅官方文档:code.claude.com/docs/en/plu...

添加应用市场,选择LSP语言服务器插件安装

安装完成后,在【Installed】中可以查看安装状态

重启Claude Code CLI,输入提示词即可使用(注意这里也是需要提前安装语言服务器的)

常见问题

语言服务器是否启动

查看语言服务器是否启动,可以在命令行终端中输入如下命令

javascript 复制代码
$ grep "LSP notification handlers registered" ~/.claude/debug/latest

Claude Code CLI没有LSP工具调用权限

如果发现Claude Code没有调用LSP,可以尝试询问AI是否有调用LSP工具的权限

vbnet 复制代码
do you hava access to LSP tools? 

如果没有调用LSP工具权限可以手动进行开启

ini 复制代码
ENABLE_LSP_TOOL=1 claude

也可以使用命令永久开启

bash 复制代码
# 以zsh 为例
echo 'export ENABLE_LSP_TOOL=1' >> ~/.zshrc
source ~/.zshrc

开启后再次询问Claude Code CLI验证

友情提示

见原文:Claude Code CLI支持LSP了,编程向智能再进一步

本文同步自微信公众号 "程序员小溪" ,这里只是同步,想看及时消息请移步我的公众号,不定时更新我的学习经验。友情提示友情提示

相关推荐
AI拾光录2 小时前
设计抗 AI 的技术评估
面试·claude
___波子 Pro Max.3 小时前
Claude Code 中的 agents 目录详解:自定义子代理完全指南
claude·opencode
_Meilinger_3 小时前
文献汇总|AI生成图像检测与溯源相关工作(2026)
aigc·ai安全·生成图像·图像取证·生成图像检测·sid·生成图像取证
DisonTangor4 小时前
黑森林研究所提出KV缓存方式让生图模型能更好地多参考编辑
人工智能·缓存·ai作画·开源·aigc
da_vinci_x5 小时前
告别“塑料机甲”:Plasticity的次世代硬表面磨损与自定义贴花工作流
游戏·3d·aigc·材质·技术美术·游戏策划·游戏美术
猫头虎8 小时前
OpenClaw下载安装配置|Windows安装流程|macOS 安装流程|Telegram 集成使用|飞书集成使用|常见坑和注意事项保姆级教程
人工智能·windows·macos·开源·aigc·飞书·ai编程
小程故事多_8014 小时前
Vibe Coding的致命隐患,你必须知道的技术债务和扩展性危机
大数据·人工智能·aigc
冬奇Lab16 小时前
OpenClaw 实战:SKILL安装极简指南,让你的 Agent 真正干活
人工智能·aigc
HuDie34017 小时前
黑马多模态AIGC课程笔记
笔记·aigc