Skip to content

LSP 语言服务器

Claude Code 集成了 Language Server Protocol (LSP) 客户端,提供代码智能分析能力。

LSP 集成架构

Claude Code

  ├── LSPClient (type,通过 createLSPClient() 工厂函数创建)
  │   └── sendRequest(method, params) → 通用 LSP 请求

  └── LSPTool (暴露给 AI)
      └── 允许 AI 查询代码诊断信息

LSPTool 集成

typescript
const inputSchema = z.object({
  operation: z.enum([
    'diagnostics', 'goToDefinition', 'findReferences', 'hover',
    'documentSymbol', 'workspaceSymbol', 'goToImplementation',
    'prepareCallHierarchy',
    // ... 共 9 个 operations
  ]),
  file_path: z.string(),
  line: z.number().optional(),
  column: z.number().optional(),
})

call() 方法根据 operation 参数映射到对应的 LSP method(如 textDocument/diagnostictextDocument/definition 等),通过 LSPClient.sendRequest() 发送请求并格式化结果。

诊断信息格式

typescript
interface Diagnostic {
  range: {
    start: { line: number; character: number }
    end: { line: number; character: number }
  }
  severity: 1 | 2 | 3 | 4  // Error, Warning, Information, Hint
  code?: string | number
  source?: string
  message: string
}