终于在Claude code 里用上LSP了

1,745 阅读4分钟

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查找该函数调用的所有函数

注意事项

  1. 不要使用 .lsp.json 文件:使用插件时,不要在 ~/.claude/ 或项目目录下创建 .lsp.json 文件,容易产生冲突。

  2. LSP 服务器启动时间:首次使用时,LSP 服务器需要几秒钟来初始化。如果遇到 "server is starting" 错误,等待几秒后重试。

  3. 备份文件:patch 脚本会自动创建备份文件(cli.js.backup-*),如果出现问题可以恢复。

  4. 版本兼容性:此 patch 专门针对 Claude Code v2.0.76。如果升级到新版本,可能需要重新应用 patch。

  5. jsconfig.json 和环境变量:经过验证,jsconfig.jsonENABLE_LSP_TOOL 环境变量都不是必需的。只要安装了 language server 并应用了 patch,LSP 就能正常工作。

故障排查

LSP 返回 "No LSP server available"

  1. 确认已安装 typescript-language-server:

    which typescript-language-server
    
  2. 确认插件已启用:

    cat ~/.claude/settings.json | grep typescript-lsp
    
  3. 确认已应用 patch(检查是否有备份文件):

    ls -la ~/.nvm/versions/node/*/lib/node_modules/@anthropic-ai/claude-code/cli.js.backup-*
    
  4. 检查 LSP 服务器是否已加载:

    grep "LSP notification handlers registered" ~/.claude/debug/latest
    

    应该看到类似 all 1 server(s) 或更多,而不是 all 0 server(s)

  5. 重启 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

安装方法相同:

  1. 安装对应的 language server
  2. /plugin 中安装对应的 LSP 插件
  3. 应用 patch(只需要应用一次)
  4. 重启 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。