Skip to content
FunCoding

Search

Search docs, Skills and MCP

LSP 服务器配置

启用原生语言服务,定义文件类型映射、启动参数、信任与调试入口。

This page has not been translated into English yet. The original Chinese version is shown below.

LSP 给模型提供符号定位、引用、类型、诊断和代码动作。它是实验功能,启用开关不会自动安装语言服务器,也不会生成配置。

qwen --experimental-lsp

项目配置

项目根 .lsp.json 的每个键对应一个语言服务配置。例如已安装 TypeScript language server 时:

{
  "typescript": {
    "command": "typescript-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".ts": "typescript",
      ".tsx": "typescriptreact",
      ".js": "javascript",
      ".jsx": "javascriptreact"
    }
  }
}

本地 command 可以是 PATH 中的名称或绝对路径;逃出工作区的相对命令路径会被阻止。官方还支持 tcp、socket 传输,应按所选服务器的接口配置,不假设它与 stdio 启动方式相同。

常用字段

字段默认或用途
args空列表
transportstdio
env进程环境
initializationOptionsinitialize 参数
settings经 workspace/didChangeConfiguration 发送
extensionToLanguage后缀到语言 ID
workspaceFolder项目根内部的工作目录覆盖
startupTimeout / shutdownTimeout10,000 / 5,000 毫秒
restartOnCrash / maxRestartsfalse / 3
trustRequiredtrue

maxRestarts 有默认值不表示默认自动重启,仍需 restartOnCrash 启用。

clangd 和 Java

clangd 需要已安装可执行文件,并用 compile_commands.json 或 compile_flags.txt 获取准确编译信息。数据库在 build 下时:

{
  "cpp": {
    "command": "clangd",
    "args": ["--background-index", "--compile-commands-dir=build"]
  }
}

Java 需要 JDK 和 JDTLS,java、jdtls 可从 PATH 调用;官方示例把 JDTLS 配置和工作数据分别放 .jdtls-config、.jdtls-workspace。

信任和运行位置

默认只有可信工作区启动语言服务。每服务 trustRequired:false 可放宽这一条件,但服务器仍按用户权限运行;普通 LSP 路径在沙箱外访问代码,不应把启动语言服务等同于受沙箱隔离的工具执行。

扩展可通过 plugin.json 的 lspServers 提供内联配置或 .lsp.json 路径。该专章描述不能推广为所有便携插件格式都支持相同扩展能力,另见Agent Plugins v1。

排查与操作

/status 查看启用与 ready 数量,/lsp 查看各服务器命令、语言和失败原因。调试用 qwen --experimental-lsp --debug,没有额外 LSP 专用 debug 开关。

搜索 ~/.qwen/debug/latest 中的 LSP、Native LSP、connection closed,配置 runtime 根时改用 $QWEN_RUNTIME_DIR/debug/latest。先核对安装、PATH、信任、启动成功,再区分尚在索引与文件未保存。具体查询见LSP 操作。