LSP 是什么?能做什么?
可以把 Claude Code 理解成一个向"后端专家"请教的"前端助手"。LSP 引入的"后端专家"就是各种编程语言专用的 Language Server ,这些服务器内置了 IDE(如 VS Code)精准理解代码的能力。
这带来了两大核心优势:
-
极大节省 Token 消耗 :没有 LSP,Claude 只能靠
grep等方式进行文本匹配,效率低且消耗大量 Token。根据社区的实测,配置好 LSP 后,Token 消耗能降低 40% 以上。 -
获得专业 IDE 级能力 :这能让 Claude Code 支持实时的错误与警告诊断 、精准的代码导航 和符号信息等功能。

参考:
https://zhuanlan.zhihu.com/p/1993283855554192045
https://www.cnblogs.com/dhcn/p/19684069
步骤 1:启用 LSP 工具
这是让人们困惑的部分。你需要在 Claude Code 设置中添加一个标志:
将 "ENABLE_LSP_TOOL": "1" 添加到你的 ~/.claude/settings.json:
XML
{
"env": {
"ANTHROPIC_BASE_URL": "https://token-plan-cn.xiaomimimo.com/anthropic",
"ANTHROPIC_AUTH_TOKEN": "xxx",
"ANTHROPIC_MODEL": "mimo-v2.5-pro",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "mimo-v2.5-pro",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "mimo-v2.5-pro",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "mimo-v2.5-pro",
"ENABLE_LSP_TOOL": "1"
}
}
额外:
启用环境变量:
[System.Environment]::SetEnvironmentVariable("ENABLE_LSP_TOOL", "1", "User")
它被保存在 HKEY_CURRENT_USER\Environment 下。这意味着即便你重启电脑、关机或更新系统,这个变量依然存在。
步骤 2:安装语言服务器
为你使用的每种语言安装二进制文件。这些是你的 IDE 使用的相同语言服务器。LSP 是通用的。
| 语言 | 插件 | 安装命令 |
|---|---|---|
| Python | pyright-lsp | npm i -g pyright |
| TypeScript/JS(包括鸿蒙) | typescript-lsp | npm i -g typescript-language-server typescript |
| Go | gopls-lsp | go install golang.org/x/tools/gopls@latest |
| Rust | rust-analyzer-lsp | rustup component add rust-analyzer |
| Java | jdtls-lsp | brew install jdtls |
| C/C++ | clangd-lsp | brew install llvm |
| C# | csharp-lsp | dotnet tool install -g csharp-ls |
| PHP | php-lsp | npm i -g intelephense |
| Kotlin | kotlin-lsp | GitHub releases |
| Swift | swift-lsp | Included with Xcode |
| Lua | lua-lsp | GitHub releases |
关于 kotlin,需要在 C:\Users\xx\.claude 文件夹下新建 lsp.json kotlin
XML
{
"languages": {
"kotlin": {
"command": ["intellij-server.exe"],
"args": []
}
}
}
关于 kotlin LSP :
安装官方 kotlin-lsp(更新)
https://github.com/Kotlin/kotlin-lsp
官方 kotlin-lsp 为 Windows 提供了 .zip 包,你可以这样操作:
-
访问发布页并下载 :在浏览器中打开 Kotlin/kotlin-lsp Releases 页面,在最新版本的 "Assets" 列表里,找到并下载
kotlin-lsp-standalone-<版本号>.zip文件(这是给通用编辑器使用的独立版本)-。 -
解压并配置环境变量到 path:
C:\Users\xx\.claude\kotlin-server-262.4739.0.win\bin
claude code
测试使用硬编码 .lsp.json 无效!!!
将 intellij-server.exe 拷贝为kotlin-lsp.exe ,有效果。让 claude code 自己测试下会自行进行修复!
修复步骤
问题: Claude Code 的 kotlin-lsp 插件在 Windows 上执行 uv_spawn 'kotlin-lsp' 时报 ENOENT。
根本原因: uv_spawn(libuv)在 Windows 上不会自动解析 .bat/.cmd 扩展名。虽然系统 PATH 中有 kotlin-lsp.bat,但 uv_spawn 只认 .exe 文件。
修复: 将 JetBrains 的 intellij-server.exe 复制了一份命名为 kotlin-lsp.exe:
cp ~/.claude/kotlin-server-262.4739.0.win/bin/intellij-server.exe \ ~/.claude/kotlin-server-262.4739.0.win/bin/kotlin-lsp.exe
就这一行。插件启动时找到 kotlin-lsp.exe,内部自动传入 lsp-server 参数,LSP 就通了。
另外你之前准备的 .lsp.json 配置文件其实没有生效------插件系统完全忽略了它,用的是插件自己硬编码的命令名。
步骤 3:安装并启用插件
首先,更新市场目录:
bash
claude plugin marketplace update claude-plugins-official
如果报错:
Updating marketplace: claude-plugins-official...
× Failed to update marketplace(s): Marketplace 'claude-plugins-official' not found. Available marketplaces:
那么就先安装:
bash
claude plugin marketplace add anthropics/claude-plugins-official
这个命令会告诉 Claude Code 去 https://github.com/anthropics/claude-plugins-official 这个仓库查找可用的插件。

然后为你的语言安装插件:
claude plugin install pyright-lsp # Python
claude plugin install typescript-lsp # TypeScript/JS
claude plugin install gopls-lsp # Go
claude plugin install rust-analyzer-lsp # Rust
claude plugin install jdtls-lsp # Java
claude plugin install clangd-lsp # C/C++
claude plugin install csharp-lsp # C#
claude plugin install php-lsp # PHP
claude plugin install kotlin-lsp # Kotlin
claude plugin install swift-lsp # Swift
claude plugin install lua-lsp # Lua
验证已安装并启用:
claude plugin list
最常见的陷阱 :插件可能已安装但被禁用。禁用的插件不会在启动时注册其 LSP 服务器。如果 claude plugin list 显示 Status: disabled,运行 claude plugin enable <name> 并重启 Claude Code。
为了安全起见,我还建议在 ~/.claude/settings.json 中明确将它们设置为 true:
{
"env": {
"ENABLE_LSP_TOOL": "1"
},
"enabledPlugins": {
"pyright-lsp@claude-plugins-official": true,
"typescript-lsp@claude-plugins-official": true,
"gopls-lsp@claude-plugins-official": true
}
}
这个单一问题------插件已安装但未启用------占据了大多数「LSP 不工作」问题的原因。
步骤 4:重启 Claude Code
LSP 服务器在启动时初始化。安装插件后,你需要完全重启。然后通过询问 Claude 来验证:「[某个变量] 是什么类型?」
实际使用场景
场景 1:快速导航大型代码库
问题:你加入了一个有 500+ 文件的新项目,需要找到用户认证逻辑。
无 LSP:
你:用户认证在哪里处理?
Claude: (搜索 30 秒)我找到了几个可能的地方...
-
src/auth/login.ts (可能是这个)
-
src/services/userService.ts (也可能是)
-
src/middleware/auth.ts (或者是这个)
我需要检查每一个...
启用 LSP:
你:用户认证在哪里处理?
Claude: 认证逻辑主要在 src/auth/login.ts 第 42 行定义。
authenticate 函数在第 42-89 行。
需要我解释实现细节吗?
场景 2:重构函数签名
问题:你需要向 createUser 函数添加 email 参数。
无 LSP:
你:给 createUser 添加 email 参数
Claude: 好的,已修改函数签名
你:(尝试运行)错误!有 3 个调用点没有更新
你:修复这些错误
Claude: 让我检查...(再次搜索)
启用 LSP:
你:给 createUser 添加 email 参数
Claude: 已完成。我更新了函数签名并修复了 3 个调用点:
-
src/controllers/userController.ts:15
-
src/services/adminService.ts:42
-
src/api/register.ts:78
所有类型检查都通过了。
场景 3:理解复杂类型
问题:你遇到了一个复杂的响应对象,不确定它的结构。
无 LSP:
你:response 对象有什么属性?
Claude: 让我查看文件...(读取多个文件)
看起来有 id、name、email...但可能有更多
我需要检查类型定义...
启用 LSP:
你:response 对象有什么属性?
Claude: response 的类型是 ApiResponse<User>:
{
id: string
name: string
email: string
createdAt: Date
metadata?: UserMetadata
}
完整定义在 src/types/api.ts 第 15-23 行。
常见问题解答
Q: LSP 会显著增加内存使用吗?
A: 语言服务器是独立进程,通常占用 100-500MB 内存(取决于项目和语言)。对于现代开发机器来说这是可接受的。如果你内存紧张,可以只为最常用的语言启用 LSP。
Q: 我可以为多个语言启用 LSP 吗?
A: 可以!实际上这是推荐的做法。每个语言服务器都是独立的,不会相互干扰。只需为项目使用的每种语言安装相应的插件。
Q: LSP 初始化需要多长时间?
A: 首次启动时,语言服务器可能需要 10-30 秒来索引项目。后续启动会快得多,因为索引会被缓存。大型项目(10000+ 文件)可能需要 1-2 分钟。
Q: 如果 LSP 不工作怎么办?
A: 按顺序检查:
- 确认
ENABLE_LSP_TOOL=1已设置 - 运行
claude plugin list确认插件状态为 enabled - 确认语言服务器二进制文件在 PATH 中(运行
pyright --version等检查) - 完全重启 Claude Code
- 检查 Claude Code 版本是否为 2.0.74+
Q: LSP 会与现有 IDE 冲突吗?
A: 不会。LSP 服务器是独立的进程,可以与 VS Code、Vim、Neovim 等同时运行。它们通过标准协议通信,不会相互干扰。
总结
启用 LSP 是你能给 Claude Code 做的最佳升级之一