跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

使用 LSP 查询代码

先定位符号,再查询定义、引用、调用层级、诊断与代码动作。

配置并启用语言服务后,Qwen 通过统一 lsp 工具查询代码。返回质量取决于服务器能力、索引和项目编译配置。

先找准确位置

workspaceSymbol 用 query 搜索工作区,可加 limit;documentSymbol 返回某 filePath 中的符号。先用它们定位,再执行依赖位置的查询,不猜行列。

操作必需位置或输入
goToDefinitionfilePath、line、character
findReferences同上,可选 includeDeclaration
goToImplementationfilePath、line、character
hoverfilePath、line、character
prepareCallHierarchyfilePath、line、character

Qwen 工具接口的 line、character 都从 1 开始,不应直接传其他客户端的零基位置。

调用层级

先 prepareCallHierarchy 取得 callHierarchyItem,再传给 incomingCalls 或 outgoingCalls。前者查谁调用当前函数,后者查当前函数调用谁。返回对象是后续请求的输入,不用仅凭名称重新拼装。

诊断与动作

diagnostics 需要 filePath;workspaceDiagnostics 可用 limit 控制数量。诊断为空可能是尚未索引、文件未保存或服务没连上,应结合 /lsp 状态判断。

codeActions 使用起始 line/character,可带 endLine/endCharacter,省略终点时使用起点;还可带 diagnostics 与 codeActionKinds。常用动作类型:

  • quickfix:修复诊断。
  • refactor、refactor.extract、refactor.inline:重构或抽取/内联。
  • source、source.organizeImports、source.fixAll:源码级整理和可自动修复项。

获得代码动作列表不等于动作已应用;应检查后续实际修改和验证输出。

没有结果时

先保存文件并确认语言后缀映射,再等待索引。clangd 需要真实编译数据库或 flags;缺少 include 路径不能只靠增大超时补救。

同一文件类型可以配置多个服务,但每次操作只使用其中一个,先返回结果者胜出。不要假定结果是多个服务器诊断的完整并集。