Claude Code 2.0.74-2.0.76:LSP集成,AI写代码也有IDE的“眼睛”了
说实话,这波更新我差点就错过了。最近在 Claude Code开发者平台 看到用户在讨论
现在版本都2.0.76,我看到change log写2.0.74版本带来lsp,当时我还愣了一下——LSP?Claude Code也能用LSP了?
这可不是小事儿,最近我都是在 Evol 里面使用Claude Code,相对稳定,推荐给小伙伴
01 先聊聊LSP是个啥
在说这次更新之前,先给不熟悉LSP的朋友科普一下。毕竟这玩意儿虽然天天在用,但很多人可能没注意过它的存在。
一个困扰业界的M×N问题
你想啊,编程语言有多少种?Java、Python、Go、Rust、TypeScript、C++……少说几十种。IDE和编辑器呢?VS Code、IntelliJ、Vim、Emacs……也是一大堆。
问题来了: 每个编辑器都想支持每种语言的智能提示 ——跳转定义、查找引用、自动补全这些。
按传统做法,这是个 M × N 的问题。M种编辑器,N种语言,你得写 M×N 个适配器。这活儿没法干。
微软的解法
2016年,微软搞VS Code的时候想了个办法: 把语言智能逻辑抽出来,单独跑一个进程,叫Language Server 。然后定义一套标准通信协议—— Language Server Protocol(LSP) 。
这样一来:
-
语言那边 :每种语言只需实现一个Language Server(TypeScript有 typescript-language-server ,Python有 pyright ,Rust有 rust-analyzer )
-
编辑器那边 :每个编辑器只需实现LSP客户端,就能对接所有语言服务器
M×N 变成了 M+N 。架构设计里常说的"通过抽象层解耦",这就是个典型案例。
核心思想 :编辑器只需实现一次LSP客户端,就能对接所有语言服务器。M×N 变成 M+N。
LSP协议长啥样
LSP本质就是JSON-RPC通信。比如你Ctrl+Click跳转定义,背后是这样的:
请求:
{
"method": "textDocument/definition",
"params": {
"textDocument": { "uri": "file:///project/src/main.ts" },
"position": { "line": 42, "character": 15 }
}
}
返回:
{
"result": {
"uri": "file:///project/src/utils.ts",
"range": { "start": { "line": 10, "character": 0 } }
}
}
编辑器拿到结果,打开对应文件跳到对应位置。就这么简单。
02 为什么Claude Code需要LSP
在没有LSP之前,Claude Code理解代码全靠"看"——读文件内容,用grep搜索,让模型自己推理。
这就像蒙眼摸象,大概轮廓能摸出来,细节全靠猜。
有了LSP,Claude Code等于接入了和VS Code一样的"视觉系统"。语言服务器已经把代码解析成AST,搞清楚了每个符号的定义、引用、类型。Claude直接问就行,不用猜。
打个比方:
没LSP:在图书馆一排排书架扫过去找书
有LSP:用检索系统,输书名直接告诉你在哪
03 版本概览
版本发布日期主要更新重要程度2.0.7412月20日LSP支持、终端设置扩展、主题快捷键⭐⭐⭐⭐⭐2.0.7512月22日未公布(小修复)⭐2.0.7612月23日未公布(小修复)⭐
2.0.74是主角 ——LSP正式落地。后两个版本官方changelog都没写,应该是小修复。
04 Claude Code里怎么用LSP
1. 官方说明
根据官方changelog(来源:GitHub CHANGELOG.md),2.0.74新增了LSP工具,支持:
go-to-definition - 跳转到符号定义
find references - 查找所有引用
hover documentation - 悬停显示文档
就这三个,官方写得很简洁。
2. 启用步骤
LSP通过 插件系统 提供,不是开箱即用:
/plugin
# 在Discover标签搜索 lsp
# 这里我们安装rust lsp



05 LSP的实际价值
举个例子。假设你让Claude"把 processRequest 函数重构成异步的"。
没有LSP:
grep搜索processRequest
找到定义,读文件
再grep搜索所有调用
可能漏掉动态调用、解构赋值等
一个个改,反复确认
有LSP:
goToDefinition找到定义
findReferences精确找到所有引用
一次性改完,不会漏
LSP找的引用是 语义正确 的,不会把注释里的同名内容当成引用。
06 社区怎么看
这条更新在Hacker News上拿了200+赞(来源:HN讨论帖),评价挺分化的。
正面声音:
HN用户cube2222:
"我两天前在一个Rust项目上偶然发现了新的LSP支持,工作得非常好。"
HN用户brianyu8(OpenAI工程师)甚至自己做了个类似的skill:
"我这周末在玩Codex,让它重命名符号时老是漏掉引用。所以我做了个skill教它用rope来做Python代码的机械重构。" (来源:他的GitHub项目)
质疑声音:
Elixir创始人José Valim在Twitter指出:
"LSP的API对Agent来说很别扭——你必须传file:line:column,不能直接问'Foo#bar的定义在哪里'。"
说得有道理。LSP是给人设计的(点击某个位置),AI Agent更想要语义查询。
HN用户paxys吐槽:
"他们把AI编程从IDE搬到CLI,现在又在CLI里造IDE功能。"
07 已知问题
目前还是Beta状态,有些问题(来源:GitHub Issues及HN讨论):
TypeScript LSP缺diagnostics - 实时错误警告功能不全,还得跑tsc
权限提示有bug - 不是阻塞的,会被其他权限请求覆盖
Claude不总是用LSP - 有时还习惯性grep,可能需要在CLAUDE.md里提示
实测翻车:go-to-definition根本不能用?
我自己在一个Rust项目上测试了一下,结果挺意外的。
环境:
Claude Code v2.0.76
已安装 rust-analyzer-lsp 插件,状态显示 Enabled
测试:
问:"用LSP工具帮我找到 MssqlDriver 的定义"
结果:
Claude还是用grep搜索,然后自己解释说:
注:当前可用的 IDE MCP 工具只有 getDiagnostics (获取诊断信息)和 executeCode (执行 Jupyter 代码),没有 LSP 的 "Go to Definition" 功能。上面是通过 Grep 搜索找到的定义位置。

说白了:
官方changelog写的是支持 go-to-definition, find references, hover ,但实际装上插件后, 只有 getDiagnostics 能用 ,核心的定义跳转、查找引用功能压根没暴露出来。
这就尴尬了。插件装了,状态是Enabled,但功能没完全实现。
所以目前LSP的实际价值可能只有:
getDiagnostics - 获取代码诊断信息(错误、警告)
其他功能还在路上
如果你也想试试,别抱太高期望。等后续版本打磨吧。
08 其他更新
2.0.74还有些小改进:
/terminal-setup 支持Kitty、Alacritty、Zed、Warp终端
/theme 里按Ctrl+T切换语法高亮
macOS快捷键显示从 alt 改成 opt
/context 命令可视化优化
修复了若干bug
2.0.75和2.0.76官方没写changelog。根据@ClaudeCodeLog监控:"No major changes detected"。Windows上有个git命令多冒号的bug([Issue #15117]https://github.com/anthropics/claude-code/issues/15117)。
09 快速参考
# 升级
npm update -g @anthropic-ai/claude-code
# 安装LSP插件
/plugin → 搜索lsp → 空格选中 → i安装
相关链接:
[官方Changelog]https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md
[LSP插件文档]https://code.claude.com/docs/en/discover-plugins
[HN讨论]https://news.ycombinator.com/item?id=46355165
Evol官网:https://www.evolai.cn/
更多推荐

所有评论(0)