LSP
通过语言服务器增强代码理解能力。
本节概述 OpenCode 与 Language Server Protocol (LSP) 的集成方式,具体细节以英文文档为准。
OpenCode 可以连接项目中已有的语言服务器(LSP),或为常见语言自动下载 LSP,从而获得:
- 跳转定义 / 查找引用;
- 符号列表 / 文档悬停信息;
- 调用层级等高级分析能力。
这些能力既可以在 TUI 内使用,也可以通过 lsp 工具在自动化任务中被 Agent 调用。
状态检查
可以使用 opencode server 的 /lsp 接口查看当前 LSP 状态(也可以在 TUI 中的状态视图里看到):
- 哪些语言已启动对应 LSP;
- 是否存在错误或启动失败;
- LSP 进程的基本信息。
自动下载 LSP
对于部分语言,OpenCode 可以在需要时自动下载并管理对应的 LSP Server(具体支持列表以英文文档为准)。
如果你不希望自动下载:
{ "$schema": "https://opencode.ai/config.json", "formatter": {}, "tools": {}, "permission": {}, "experimental": {}, "watcher": {}, "mcp": {}, "plugin": [], "autoupdate": true}或使用环境变量:
export OPENCODE_DISABLE_LSP_DOWNLOAD=true手动配置 LSP
在某些环境中你可能已经使用编辑器或其他工具安装了 LSP,可以直接复用:
- 确保对应 LSP 二进制已在
PATH中; - 或通过插件/配置指定启动命令;
- 然后在规则或 Agent 中提示 OpenCode 优先使用 LSP 工具进行导航/分析。
作为工具使用 LSP(实验性)
如果设置环境变量 OPENCODE_EXPERIMENTAL_LSP_TOOL=true(或 OPENCODE_EXPERIMENTAL=true),可以启用 lsp 工具:
{ "$schema": "https://opencode.ai/config.json", "permission": { "lsp": "allow" }}Agent 之后就可以通过 lsp 工具执行:
goToDefinitionfindReferenceshoverdocumentSymbolworkspaceSymbolgoToImplementationprepareCallHierarchyincomingCalls/outgoingCalls
等操作(具体支持列表以实际实现为准)。
与其它工具的配合
LSP 提供的是“语义级代码理解”,而:
grep/glob提供的是全文/文件层面的搜索;read/edit/patch负责文件的读写与修改;- MCP 则可以调用外部系统。
合理的搭配方式是:
- 用 LSP 做“跳转、找引用、列符号”;
- 用
grep做模糊/批量搜索; - 用 MCP/LSP 组合做跨服务、跨代码仓调用。