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 | 空列表 |
| transport | stdio |
| env | 进程环境 |
| initializationOptions | initialize 参数 |
| settings | 经 workspace/didChangeConfiguration 发送 |
| extensionToLanguage | 后缀到语言 ID |
| workspaceFolder | 项目根内部的工作目录覆盖 |
| startupTimeout / shutdownTimeout | 10,000 / 5,000 毫秒 |
| restartOnCrash / maxRestarts | false / 3 |
| trustRequired | true |
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 操作。