链载Ai

标题: Claude Code装了LSP后,Token消耗直接降了40% [打印本页]

作者: 链载Ai    时间: 昨天 17:13
标题: Claude Code装了LSP后,Token消耗直接降了40%




ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">Claude Code更新了2.0.74。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">它的更新日志上是这么写的。

Image

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">本次重点是这个LSP。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.578px;margin-top: 0px;margin-bottom: 8px;font-size: 22px;padding-bottom: 12px;">LSP是个啥玩意儿

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">先别急往下翻,很多人看到LSP仨字母就懵了。

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">LSP = Language Server Protocol

ingFang SC", system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;color: rgb(31, 35, 41);margin: 0px 0px 4px;word-break: break-all;min-height: 20px;">

说人话:让编辑器"长脑子"的技术。


VS Code里按Ctrl点函数名唰一下跳到定义,鼠标悬停显示类型——这些骚操作背后都是LSP。


没有LSP:AI把代码当文本,用Grep搜字符串,搜出来一堆还得自己判断。

有了LSP:AI直接问语言服务器要精确位置,一次到位。


在Claude Code里,LSP是隐性的。


运行/config看不到"LSP: 开/关"这种选项。


LSP有三种配置方式:


  1. 1.VS Code集成(最简单,需要VS Code)
  2. 2.cclsp社区方案(不需要VS Code)
  3. 3.手动配置.lsp.json(不需要VS Code)


如果你用VS Code,/config里有两个相关配置:


Diff tool = auto

"差异工具"设置。

设成auto让Claude Code自动检测你用的IDE。

检测到VS Code后,它才知道去调VS Code的LSP。


Auto-install IDE extension = true

自动安装IDE扩展。

开着的话,Claude Code会自动给VS Code装个扩展。

这个扩展负责让Claude Code和VS Code的LSP通信。


Image


不用VS Code?没关系。

方法二和方法三都不依赖IDE,纯终端也能用LSP。



为什么你该关心这事儿

说真的,老金我用Claude Code快大半年了,一直有个困扰:

Token消耗太离谱。


你让它改个函数,它先Grep全局搜一遍。

再让它找引用,又Grep一遍。

让它跳转定义,还是Grep。


每次搜索都在烧Token。

一个简单的重构任务,轻轻松松几万Token没了。


LSP能解决这个问题。


根据Milvus团队的实测数据:

用了LSP之后,Token消耗能降低40%以上。


差距就是这么大。


LSP能干啥(7个核心操作)

那LSP到底能干啥?


Claude Code从2.0.30开始实验性支持LSP(需要设环境变量)。

2.0.74版本正式上线。


重要:这些操作你不用手动调用!

配好LSP后,Claude Code搜代码时自动优先用LSP而不是Grep。

你只管正常提问,比如"这个函数在哪定义的",它自己会调goToDefinition。


老金扒了官方文档,支持这些操作:


1、goToDefinition(跳转定义)

点符号,直接跳到定义位置。

不用再Grep全局搜了。


2、findReferences(查找引用)

函数被哪调用了?

一条命令全列出来。

重构前必看。


3、hover(悬停信息)

光标停在变量上,自动显示类型和文档。

不用翻来翻去找类型定义。


4、documentSymbol(文档符号)

当前文件所有函数、类、变量,一键列出。

相当于一个mini大纲。


5、workspaceSymbol(工作区搜索)

整个项目搜符号。

比Grep精准,因为只搜真正的代码符号,不搜字符串和注释。


6、goToImplementation(跳转实现)

接口定义了方法,想看具体怎么实现的?

一键跳过去。


7、incomingCalls/outgoingCalls(调用链)

这个老金我超爱。

函数被谁调用、调用了谁,画个调用图出来。

理解复杂代码逻辑特别好使。


如果对你有帮助,记得关注一波~


三种配置方法(按推荐度排序)

说完好处,该上手了。

老金我折腾了三种方法,给你们排个序。


方法一:VS Code集成(最简单)


如果你本来就用VS Code,这是最省事的:


# 1、在VS Code终端里启动Claude Code
claude

# 2、运行配置命令
/config

# 3、设置差异工具为auto
# 系统会自动检测IDE,安装VS Code扩展(Beta版)


先说说/config界面那堆东西:


运行/config会弹出一堆配置项,看着吓人?

老金给你挑重点。


和LSP有关的就两个:


其他常见的:


看到警告别慌,"invalid settings"、"config mismatch"这俩不影响使用。

Image


配完后,Claude Code就能用VS Code的LSP了。


怎么验证LSP在工作

老实说,目前官方没有明确的指示器。


没有UI显示"LSP已连接"或"LSP启动成功"。

这也是很多人困惑的原因。


间接验证方法:


1、问Claude Code跳转定义

随便找个项目里的函数,问它:


"getUserById这个函数在哪定义的?"


如果它秒回精确位置(文件名+行号),说明LSP在工作。

如果它还在Grep搜一堆结果然后判断,说明没配好。


2、用cclsp测试

装了cclsp的话,它有测试命令可以直接验证。


3、看Token消耗

配好LSP后,同样的代码搜索任务,Token消耗应该明显下降。


方法二:cclsp(MCP服务器方案)


如果你不用VS Code,或者官方LSP报错,试试这个:

# 一键安装配置
npx cclsp@latest setup


cclsp是社区做的MCP服务器。

最牛的是它能自动修正行列号。

Github地址:https://github.com/ktnyt/cclsp


为什么这个重要?

因为AI生成的代码位置信息经常不准。

行号差个一两行,直接调LSP就找错。

cclsp会尝试多种位置组合,智能匹配正确符号。


方法三:手动配置.lsp.json(折腾党)


项目根目录建.lsp.json文件:

{
"typescript": {
"command":"typescript-language-server",
"args": ["--stdio"],
"extensionToLanguage": {
".ts":"typescript",
".tsx":"typescriptreact"
}
},
"python": {
"command":"pylsp"
}
}


注意:配置文件只告诉Claude Code怎么连语言服务器。

语言服务器本身得自己装:

# TypeScript
npm install -g typescript-language-server

# Python
pip install python-lsp-server


老金的Critical Thinking


说完好处,老金我得泼点冷水。


不是所有人都需要配LSP。


什么情况值得折腾?


1、项目够大(1万行以上)

小项目Grep也不慢。


2、经常做重构

改函数名、移动文件这些操作需要精确找引用。


3、Token预算紧张

40%省下来很可观。


什么情况别折腾?


1、只写新代码

从零写功能,LSP帮助不大。


2、官方还不稳定

GitHub上一堆报错,Anthropic还在打磨。


3、不想折腾

建议等几个版本。


目前的坑(2025年12月实测)


老金我踩过的坑,提前告诉你们:


1、"No LSP server available"报错

最常见。通常是语言服务器没装好。

先检查能不能直接运行typescript-language-server。


2、没有状态反馈

LSP服务器启动没、有没有报错,界面里看不到。

出问题只能翻日志。


3、某些操作偶尔失败

跨文件引用有时候找不全。

官方还在修。







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5