OpenCode: OpenCode LSP服务器配置
最后更新:2026-08-31
LSP(Language Server Protocol)让 OpenCode 获得 IDE 级别的代码分析能力。
1. 你将学到
- LSP 的作用与原理
- OpenCode 中的 LSP 配置
- 支持的语言服务器
- 实验性功能启用
2. 什么是 LSP
LSP(Language Server Protocol)是微软提出的语言服务协议,让编辑器获得代码分析能力。
| 能力 | 说明 |
|---|---|
| 代码补全 | 输入时提供智能补全建议 |
| 跳转定义 | 跳转到符号的定义位置 |
| 查找引用 | 查找符号的所有引用 |
| 符号重命名 | 安全地重命名符号 |
| 诊断信息 | 实时显示语法和类型错误 |
| 悬停信息 | 鼠标悬停显示类型和文档 |
3. OpenCode 中的 LSP
(1) 启用实验性 LSP 工具
BASH
export OPENCODE_EXPERIMENTAL_LSP_TOOL=true
或在环境变量中设置:
JSON
{
"env": {
"OPENCODE_EXPERIMENTAL_LSP_TOOL": "true"
}
}
(2) 配置 LSP 服务器
在 opencode.json 中配置:
JSON
{
"lsp": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"]
},
"python": {
"command": "pylsp",
"args": []
},
"go": {
"command": "gopls",
"args": []
}
}
}
4. 常用语言服务器
| 语言 | 服务器 | 安装命令 |
|---|---|---|
| TypeScript/JavaScript | typescript-language-server | npm i -g typescript-language-server typescript |
| Python | pylsp | pip install python-lsp-server |
| Python | pyright | npm i -g pyright |
| Go | gopls | go install golang.org/x/tools/gopls@latest |
| Rust | rust-analyzer | rustup component add rust-analyzer |
| C/C++ | clangd | 系统包管理器安装 |
| Java | jdtls | Eclipse JDT Language Server |
| Ruby | solargraph | gem install solargraph |
5. LSP 工具使用
启用后,AI 可以使用 LSP 工具进行代码分析:
TEXT
📖 仅展示
找出 auth 函数的所有引用
AI 会调用 LSP 的查找引用功能,精确返回结果。
6. 配置示例
(1) TypeScript 项目
JSON
{
"lsp": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"],
"file_patterns": [".ts", ".tsx", ".js", ".jsx"]
}
}
}
(2) 多语言项目
JSON
{
"lsp": {
"typescript": {
"command": "typescript-language-server",
"args": ["--stdio"]
},
"python": {
"command": "pyright",
"args": ["--stdio"]
}
}
}
7. 注意事项
- LSP 是实验性功能,可能不稳定
- 服务器需要单独安装
- 部分服务器需要项目初始化(如 tsserver 需要 tsconfig.json)
- 资源占用较高,大项目可能较慢
❓ 常见问题
Q LSP 工具是必须配置的吗?
A 不是。没有 LSP,OpenCode 仍可通过文件读取和搜索分析代码。LSP 提供更精确的分析能力(如跳转定义、查找引用),是增强功能。
Q LSP 服务器启动很慢怎么办?
A 大型项目的 LSP 服务器首次启动需要索引,确实较慢。可以提前启动 LSP 服务器,OpenCode 会复用已有实例。
Q Alice 配置了 LSP,Bob 没有,谁的代码分析更准确?
A Alice 更准确。LSP 提供语义级的代码分析(如类型推断、引用查找),而 Bob 只能依赖文本搜索,精度较低。
📖 小节
- LSP 提供 IDE 级别的代码分析能力
- 需要启用实验性功能
OPENCODE_EXPERIMENTAL_LSP_TOOL - 在 opencode.json 的 lsp 字段中配置服务器
- 常用语言:TS、Python、Go、Rust 都有对应服务器
- LSP 是增强功能,不配置也能正常使用
📝 作业
-
基础题:为你的主要编程语言安装 LSP 服务器。
-
进阶题:在 opencode.json 中配置 LSP,让 OpenCode 能使用跳转定义和查找引用功能。
-
挑战题:对比有无 LSP 时 OpenCode 的代码分析精度差异,记录具体的分析结果对比。