项目链接: https://github.com/observerw/lsp-client
各位同行们应该对 LSP 都不陌生,平常咱们使用 VSCode 写代码的时候基本少不了 LSP Server 的帮助。
我目前所做的工作有关 LLM 代码生成,所以不可避免地会需要对代码仓库进行一些静态分析,但我发现现有的静态分析工具的生存状况堪忧,基本上都没什么人维护了,即使那些还活着的项目,其功能也少得可怜。
相比之下,各个语言的 LSP Server 活的都非常好(应该是因为用的人也多),而且功能非常全面,看起来比那些半死不活的静态分析工具好太多了🤣。所以我就希望能够在代码中直接调用 LSP Server 的各个功能,来完成一些分析任务,说白了就是需要一个 LSP Server 的 Python SDK 。
我曾经尝试使用过 multilspy,一个微软开发人员所开发的 LSP Server SDK 。在简单场景下用着没什么问题;但当我想手动扩展一下它的功能时,就发现它的代码写的乱七八糟,让人难以有 follow up 的欲望(微软对于开源项目也太不上心了)。所以我干脆就另起炉灶起了一个新项目,实现一个更加现代化的 LSP Client 。相较于 multilspy ,该项目的优势体现在:
lsprotocol
提供类型,绝对标准而且符合 LSP 协议的规定;所有的能力都声明为 Protocol
,所以你甚至可以声明一个新类型用于约束一个 client 必须具有哪些 LSP 能力;后续我计划在该项目中添加 MCP ( Model Context Protocol )支持,从而让 LLM Agent (比如 Cursor )也能够具有调用 LSP Server 的能力。
目前该项目还处于起步阶段,原生支持的 LSP Server 还不太多;但由于扩展起来比较容易,我预计应该能很快的补全这一短板。欢迎诸位试用,当然更欢迎诸位为本项目提供宝贵的 PR 完善其功能,非常感谢!