GoForum🌐 V2EX

搓了个给 Agent 用的 LSP 增强层,弥补 Claude Code 目前的代码理解短板

observerw · 2026-01-09 11:58 · 0 次点赞 · 1 条回复

最近高强度用各种 AI Coding Agent 写代码,发现一个挺无语的现象。现在的 Agent (包括最近很火的 Claude Code )查代码主要还是靠 grep/ripgrep 暴力搜索。小项目还好,代码一多,或者遇到复杂的跨模块引用,正则匹配根本搞不定。这就导致 Agent 想重构代码的时候唯唯诺诺,生怕改了一个文件把隔壁模块搞挂了。

虽然 Claude Code 官方也在推进 LSP 支持,但目前体验确实还差点意思。之前试过社区里的一些方案(像 Serena ,cclsp ),大多只是简单粗暴地把 LSP 原始 JSON 扔给 LLM 。这种做法最大的问题是费 Token 且慢,Agent 往往需要往返交互十几次才能搞懂一个函数的上下文。

实在受不了这个效率,就自己动手造了个轮子叫 lsp-skill

跟市面上其他简单的 LSP 包装器不同,lsp-skill 应该是目前唯一一个把“写操作”作为核心能力的方案。绝大多数竞品都停留在“只读”阶段(查查定义、找找引用),但 lsp-skill 支持完整的重构预览。这意味着 Agent 不再是瞎改,而是能像人一样,在重命名变量前先生成跨文件的 Diff 预览,确认无误了再下手。这点在维护大型遗留代码时非常关键。

另外一个比较独特的设计是它的扩展机制。通常 LSP 工具只懂语法不懂框架,但我们引入了基于 Markdown 的 Best Practices 系统。你不需要懂底层代码,只要写个 Markdown 文档,就能教 Agent 怎么处理 Django 的 View 或者 React 的 Hooks 。这种让社区通过文档来定义“代码导航策略”的做法,目前还没在其他工具里见到过。

这些特性加上它是完全为 LLM 优化的(输出 Markdown 而不是 JSON ),算是在“Agent Native”这个方向上走得比较远的一次尝试。

架构上为了稳,拆成了 lsp-client 处理底层脏活( Server 生命周期、多 Workspace 管理),中间层做协议转换,最上层通过 MCP 对接 Claude Code 或者 Cursor 。目前 Python, TS, Go, Rust, Deno 这些主流语言都已经支持了。

有兴趣的朋友可以玩玩看,如果是做 Agent 开发或者对 MCP 感兴趣的,也可以看看我们的 Protocol 设计,说不定能有点启发。

🔗 GitHub: https://github.com/lsp-client/lsp-skill 📄 文档: https://lsp-client.github.io/

1 条回复
fusi · 2026-01-09 12:23
#1

牛逼!下午就试一试

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: observerw
发布: 2026-01-09
点赞: 0
回复: 0