rag系列文章目录
文章目录
- rag系列文章目录
- 前言
- 一、LSP简介
- [二、AI coding为何需要LSP](#二、AI coding为何需要LSP)
- [三、claude code + LSP](#三、claude code + LSP)
- [四、LSP vs MCP](#四、LSP vs MCP)
- 总结
前言
AI coding越来越火,相关的工具也也越来越成熟,程序员好像距离失业越来越近了。但是好的工具还是要学习的,这里介绍下LSP,主要之前有些AI coding工具,让人很困惑,比如仅仅支持某些语言,LSP这个工具就是让AI更好的理解代码的,能够更好地进行AI辅助编程。
一、LSP简介
LSP即(Language Server Protocol),是一种标准化协议,用于:在 编辑器(Client) 与 语言服务器(Server) 之间,通过 JSON-RPC 通信,提供语言相关的智能能力。
比如在IDEA编辑器里面,代码补全、跳转到定义、查找引用、类型提示、实时错误诊断、重构(重命名、提取方法等)这些功能,都是LSP提供的。LSP的核心思想是:将"语言理解能力"从编辑器中剥离,集中到语言服务器中。
编辑器:只负责 UI 与用户交互
Language Server:负责解析代码、构建 AST、类型推导、语义分析
当你在编辑器中:
- 输入代码 → 自动补全
- Cmd + 点击 → 跳转定义
- 重命名方法 → 全局安全替换
背后流程是:
- 编辑器发送请求(如 textDocument/definition)
- LSP 基于 AST / 符号表计算结果
- 返回精确位置或修改建议
二、AI coding为何需要LSP
大模型在代码上的天然局限
- 不具备真实符号表
- 不理解项目级依赖关系
- 容易编造不存在的类 / 方法
- 对大型工程改动风险极高
有LSP,大模型就能够补齐短板
| 大模型短板 | LSP 补充 |
|---|---|
| 不知道真实 API | 提供真实符号 |
| 改动影响不可控 | 提供引用关系 |
| 无法验证正确性 | 提供诊断结果 |
三、claude code + LSP
Claude Code 是一个 Code Agent,负责:
- 任务理解
- 修改规划
- 多步执行
- 校验与回滚
而不是一个语言分析器。claude code是如何使用LSP的呢?
bash
Claude Code(Agent / Planner)
│
│ 需要代码语义
▼
本地开发环境(VSCode / CLI)
│
▼
Language Server(jdtls / gopls / pyright)
Claude Code 实际利用的 LSP 信息,如文件结构(类 / 方法)、函数真实定义、调用与引用关系、编译 / 诊断结果。这些信息用于:安全重构、避免 hallucination、验证修改是否破坏工程,这也是 Claude Code 比"网页版 Claude 写代码"稳定得多的原因。
四、LSP vs MCP
MCP 是一种:大模型调用外部工具的标准协议,用于让模型安全、结构化地调用:shell、git、数据库、API、云服务。
MCP和LSP的区别如下:
| 维度 | LSP | MCP |
|---|---|---|
| 关注对象 | 代码语义 | 外部工具 |
| 提供能力 | 事实、结构、类型 | 动作、执行 |
| 是否确定性 | 是 | 取决于工具 |
| 是否代码专用 | 是 | 否 |
| 典型用途 | 理解代码 | 操作系统 / 服务 |
LSP:感知层(代码世界)
MCP:执行层(外部世界)
LLM / Agent:决策层
总结
LSP 是代码世界的"真相来源",MCP 是行动的"工具接口",Claude Code 是把两者组织起来完成复杂任务的 Agent。有了LSP的加持,能够让AI coding能力更强。