Claude Code LSP 配置指南
本文档记录了在 Claude Code v2.0.76 中配置 TypeScript/JavaScript LSP 功能的完整过程。
问题背景
Claude Code v2.0.76 存在一个已知的 LSP 加载 bug:LSP 管理器在插件加载之前就初始化了,导致无法读取插件中的 lspServers 配置,使得 LSP 功能无法正常工作。
解决方案
需要应用社区提供的 patch 来修复这个时序问题。
配置步骤
1. 安装 TypeScript Language Server
npm install -g typescript-language-server typescript
验证安装:
which typescript-language-server
typescript-language-server --version
2. 安装 LSP 插件
在 Claude Code 中执行:
/plugin
- 进入 "Discover" 标签
- 搜索 "typescript-lsp"
- 按空格键选择,按
i安装
或者直接在 ~/.claude/settings.json 中启用:
{
"enabledPlugins": {
"typescript-lsp@claude-plugins-official": true
}
}
3. 应用 LSP 修复 Patch(关键步骤)
这是最关键的步骤!
# 1. 下载修复脚本
curl -o /tmp/apply-claude-code-2.0.76-lsp-fix.sh \
https://gist.githubusercontent.com/Zamua/f7ca58ce5dd9ba61279ea195a01b190c/raw/apply-claude-code-2.0.76-lsp-fix.sh
# 2. 添加执行权限
chmod +x /tmp/apply-claude-code-2.0.76-lsp-fix.sh
# 3. 运行修复
/tmp/apply-claude-code-2.0.76-lsp-fix.sh
成功后会显示:
✓ Fix applied successfully!
! Restart Claude Code for changes to take effect
4. 重启 Claude Code
/exit
然后重新启动 Claude Code。
验证 LSP 功能
重启后,LSP 服务器需要几秒钟初始化。可以测试以下功能:
1. 查看文档符号
列出文件中的所有类、方法、函数等:
LSP({
operation: "documentSymbol",
filePath: "/path/to/file.js",
line: 1,
character: 1
})
2. 悬停信息
查看函数/变量的类型和文档:
LSP({
operation: "hover",
filePath: "/path/to/file.js",
line: 66,
character: 20
})
3. 跳转到定义
LSP({
operation: "goToDefinition",
filePath: "/path/to/file.js",
line: 60,
character: 30
})
4. 查找引用
查找符号在项目中的所有使用位置:
LSP({
operation: "findReferences",
filePath: "/path/to/file.js",
line: 25,
character: 30
})
5. 调用层次结构
// 准备调用层次
LSP({
operation: "prepareCallHierarchy",
filePath: "/path/to/file.js",
line: 66,
character: 20
})
// 查找谁调用了这个函数
LSP({
operation: "incomingCalls",
filePath: "/path/to/file.js",
line: 66,
character: 20
})
// 查找这个函数调用了谁
LSP({
operation: "outgoingCalls",
filePath: "/path/to/file.js",
line: 66,
character: 20
})
6. 跳转到实现
LSP({
operation: "goToImplementation",
filePath: "/path/to/file.js",
line: 25,
character: 15
})
7. 工作区符号搜索
LSP({
operation: "workspaceSymbol",
filePath: "/path/to/file.js",
line: 1,
character: 1
})
可用的 LSP 操作
| 操作 | 功能描述 |
|---|---|
hover | 获取符号的类型和文档信息 |
goToDefinition | 跳转到符号的定义位置 |
findReferences | 查找符号的所有引用 |
documentSymbol | 列出文件中的所有符号(类、方法、函数等) |
workspaceSymbol | 在工作区中搜索符号 |
goToImplementation | 跳转到接口或抽象方法的实现 |
prepareCallHierarchy | 获取调用层次结构 |
incomingCalls | 查找调用该函数的所有位置 |
outgoingCalls | 查找该函数调用的所有函数 |
注意事项
-
不要使用
.lsp.json文件:使用插件时,不要在~/.claude/或项目目录下创建.lsp.json文件,容易产生冲突。 -
LSP 服务器启动时间:首次使用时,LSP 服务器需要几秒钟来初始化。如果遇到 "server is starting" 错误,等待几秒后重试。
-
备份文件:patch 脚本会自动创建备份文件(
cli.js.backup-*),如果出现问题可以恢复。 -
版本兼容性:此 patch 专门针对 Claude Code v2.0.76。如果升级到新版本,可能需要重新应用 patch。
-
jsconfig.json 和环境变量:经过验证,
jsconfig.json和ENABLE_LSP_TOOL环境变量都不是必需的。只要安装了 language server 并应用了 patch,LSP 就能正常工作。
故障排查
LSP 返回 "No LSP server available"
-
确认已安装 typescript-language-server:
which typescript-language-server -
确认插件已启用:
cat ~/.claude/settings.json | grep typescript-lsp -
确认已应用 patch(检查是否有备份文件):
ls -la ~/.nvm/versions/node/*/lib/node_modules/@anthropic-ai/claude-code/cli.js.backup-* -
检查 LSP 服务器是否已加载:
grep "LSP notification handlers registered" ~/.claude/debug/latest应该看到类似
all 1 server(s)或更多,而不是all 0 server(s)。 -
重启 Claude Code
LSP 服务器启动失败
查看完整的调试日志:
grep -i "lsp\|typescript" ~/.claude/debug/latest
恢复备份
如果 patch 导致问题,可以恢复备份:
# 找到备份文件
ls -la ~/.nvm/versions/node/*/lib/node_modules/@anthropic-ai/claude-code/cli.js.backup-*
# 恢复(替换为实际的备份文件路径)
cp /path/to/cli.js.backup-* ~/.nvm/versions/node/*/lib/node_modules/@anthropic-ai/claude-code/cli.js
其他语言的 LSP 支持
Claude Code 支持多种语言的 LSP 插件:
- Python:
pyright-lsp - Rust:
rust-analyzer-lsp - Go:
gopls-lsp - C/C++:
clangd-lsp - C#:
csharp-lsp - Java:
jdtls-lsp - PHP:
php-lsp - Lua:
lua-lsp - Swift:
swift-lsp
安装方法相同:
- 安装对应的 language server
- 在
/plugin中安装对应的 LSP 插件 - 应用 patch(只需要应用一次)
- 重启 Claude Code
参考资源
配置信息
- 配置完成时间:2026-01-03
- Claude Code 版本:2.0.76
- TypeScript Language Server 版本:5.1.3
- Node.js 版本:v22.19.0
配置成功标志:执行 LSP 操作时能够正常返回结果,调试日志显示 LSP notification handlers registered successfully for all N server(s) 其中 N ≥ 1。