OpenCode LSP 自动配置指南
⚠️ Agent 执行规范:本文档面向 AI Agent。Agent 收到用户"执行配置"指令后,必须立即开始执行,不得询问用户。所有步骤均可自动化完成。
访问 GitHub/Eclipse 可能涉及网络配置,请提前为终端配置好相关设置。
概述
LSP (Language Server Protocol) 为 OpenCode 提供代码补全、类型检查、重构等能力。本文涵盖 4 种常用语言的 LSP 配置:
语言LSP Server安装方式包管理器TypeScripttypescript-language-servernpm 全局安装npmPythonpyrightnpm 全局安装npmYAMLyaml-language-servernpm 全局安装npmJavajdtls自动下载解压-Agent 执行流程
Step 1: 环境检查(并行)
同时执行以下检查:- # 检查 npm 环境
- npm --version && node --version
- # 检查 jdtls 是否已安装
- where jdtls 2>nul || echo NOT_FOUND # Windows
- which jdtls 2>/dev/null || echo NOT_FOUND # macOS/Linux
- # 检查配置文件是否存在
- # 读取: ~/.config/opencode/oh-my-opencode.json
复制代码 Step 2: 安装 npm LSP 包
- npm install -g typescript-language-server pyright yaml-language-server
复制代码 验证安装:- typescript-language-server --version # 期望输出版本号
- pyright --version # 期望输出版本号
- yaml-language-server --version # 期望输出版本号
复制代码 Step 3: 安装 Java LSP (jdtls) - 自动化
⚠️ jdtls 必须自动下载安装,不得要求用户手动操作。
3.1 下载 jdtls
下载地址(选择最新稳定版):- https://download.eclipse.org/jdtls/milestones/1.57.0/jdt-language-server-1.57.0-202602261110.tar.gz
复制代码 3.2 Windows 自动安装脚本- # 定义安装目录
- $installDir = "$env:USERPROFILE\.local\share\opencode\bin"
- $tempFile = "$installDir\jdtls.tar.gz"
- # 1. 创建目录
- New-Item -ItemType Directory -Force -Path $installDir | Out-Null
- # 2. 下载压缩包
- Invoke-WebRequest -Uri "https://download.eclipse.org/jdtls/milestones/1.57.0/jdt-language-server-1.57.0-202602261110.tar.gz" -OutFile $tempFile
- # 3. 解压(使用 tar,Windows 10+ 内置)
- Set-Location $installDir
- tar -xzf jdtls.tar.gz
- # 4. ⚠️ 关键:jdtls 解压后 bin 目录嵌套,实际可执行文件在 bin/bin/
- # 目录结构:
- # $installDir/
- # ├── bin/
- # │ ├── jdtls <- 启动脚本(Linux/macOS)
- # │ ├── jdtls.bat <- 启动脚本(Windows)
- # │ ├── jdtls.py <- Python 启动器
- # │ └── ...其他文件
- # ├── plugins/
- # └── config_win/
- # 5. 添加正确的 bin 目录到 PATH(注意是 bin/bin/)
- $jdtlsBinDir = "$installDir\bin"
- [Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";$jdtlsBinDir", "User")
- # 6. 清理压缩包
- Remove-Item $tempFile -Force
- # 7. 验证安装(jdtls 不支持 --version,检查是否可执行即可)
- & "$jdtlsBinDir\jdtls.bat" 2>&1 | Select-Object -First 3
- # 期望:Python 报错(缺少参数),证明命令可用
复制代码 3.4 jdtls 目录结构说明
⚠️ 这是安装过程中最容易出错的地方!
解压后的目录结构:- #!/bin/bash
- INSTALL_DIR="$HOME/.local/share/opencode/bin"
- TEMP_FILE="$INSTALL_DIR/jdtls.tar.gz"
- # 1. 创建目录
- mkdir -p "$INSTALL_DIR"
- # 2. 下载
- curl -L -o "$TEMP_FILE" "https://download.eclipse.org/jdtls/milestones/1.57.0/jdt-language-server-1.57.0-202602261110.tar.gz"
- # 3. 解压
- cd "$INSTALL_DIR"
- tar -xzf jdtls.tar.gz
- # 4. 添加到 PATH(注意是 bin/bin/)
- echo 'export PATH="$HOME/.local/share/opencode/bin/bin:$PATH"' >> ~/.bashrc
- source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null
- # 5. 清理
- rm "$TEMP_FILE"
- # 6. 验证
- "$INSTALL_DIR/bin/jdtls" --help 2>&1 | head -3
复制代码 PATH 应该指向: $installDir/bin/(即包含 jdtls.bat/jdtls 的目录)
常见错误:
- ❌ PATH 指向 $installDir/(根目录)
- ✅ PATH 指向 $installDir/bin/(正确的 bin 目录)
Step 4: 写入配置文件
目标文件: ~/.config/opencode/oh-my-opencode.json
将以下内容合并到配置文件(添加 lsp 字段):- $installDir/ # 例如 C:\Users\xxx\.local\share\opencode\bin\
- ├── bin/ # 第一层 bin
- │ ├── jdtls # Unix 启动脚本
- │ ├── jdtls.bat # Windows 启动脚本 ⬅️ 这是需要添加到 PATH 的
- │ ├── jdtls.py # Python 启动器
- │ └── ...配置目录
- ├── plugins/ # JAR 文件
- ├── features/
- ├── config_win/ # Windows 配置
- ├── config_mac/ # macOS 配置
- └── config_linux/ # Linux 配置
复制代码 验证 JSON 语法:- {
- "lsp": {
- "typescript-language-server": {
- "command": ["typescript-language-server", "--stdio"],
- "extensions": [".ts", ".tsx"],
- "priority": 10,
- "env": { "NODE_OPTIONS": "--max-old-space-size=4096" },
- "initialization": {
- "preferences": { "includeInlayParameterNameHints": "all" }
- }
- },
- "pyright": {
- "command": ["pyright-langserver", "--stdio"],
- "extensions": [".py", ".pyi"],
- "priority": 10,
- "env": { "NODE_OPTIONS": "--max-old-space-size=4096" },
- "initialization": {
- "preferences": {
- "python": {
- "analysis": {
- "typeCheckingMode": "basic",
- "autoSearchPaths": true,
- "useLibraryCodeForTypes": true
- }
- }
- }
- }
- },
- "yaml-language-server": {
- "command": ["yaml-language-server", "--stdio"],
- "extensions": [".yaml", ".yml"],
- "priority": 10,
- "initialization": {
- "yaml": {
- "format": { "enable": true },
- "validate": true,
- "hover": true,
- "completion": true
- }
- }
- },
- "jdtls": {
- "command": ["jdtls", "--stdio"],
- "extensions": [".java"],
- "priority": 10,
- "env": { "NODE_OPTIONS": "--max-old-space-size=4096" },
- "initialization": {
- "preferences": { "includeInlayParameterNameHints": "all" }
- }
- }
- }
- }
复制代码 Step 5: 最终验证
检查项命令期望结果TypeScript LSPtypescript-language-server --version输出版本号Python LSPpyright --version输出版本号YAML LSPyaml-language-server --version输出版本号Java LSPwhere jdtls / which jdtls输出路径配置文件JSON 语法检查OK完整执行清单(Agent Checklist)
执行配置时,Agent 应按顺序完成:
- Step 1: 并行检查 npm 环境、jdtls 状态、配置文件
- Step 2: 安装 3 个 npm 包并验证
- Step 3: 下载 jdtls 压缩包
- Step 3: 解压到 $HOME/.local/share/opencode/bin/
- Step 3: 将 $HOME/.local/share/opencode/bin/bin/ 添加到 PATH
- Step 3: 删除下载的压缩包
- Step 3: 验证 jdtls 可执行
- Step 4: 编辑 oh-my-opencode.json 添加 lsp 字段
- Step 4: 验证 JSON 语法
- Step 5: 输出配置完成摘要
故障排除
问题原因解决方案command not found: typescript-language-servernpm 全局目录不在 PATH检查 npm config get prefix,确保其 bin 子目录在 PATHcommand not found: pyright-langservernpm 全局目录不在 PATH同上jdtls 找不到PATH 指向错误目录PATH 应指向 $installDir/bin/(包含 jdtls.bat 的目录)jdtls 报 Python 错误正常,jdtls 无参数会报错不影响使用,LSP 配置正确即可LSP 不生效配置未重载重启 OpenCodeJSON 语法错误配置文件格式问题使用 python -c "import json;..." 验证Java 项目无法识别缺少构建文件确保项目根目录有 pom.xml 或 build.gradle下载失败网络问题配置网络环境或使用镜像注意事项
- 不要询问用户:本文档所有步骤均可自动化,Agent 应直接执行
- npm 全局路径:确保 npm 全局目录在 PATH 中
- 检查:npm config get prefix
- 该路径下的 bin 或目录应包含在 PATH
- jdtls 目录结构:解压后 bin 嵌套,PATH 需指向包含 jdtls/jdtls.bat 的目录
- 配置文件格式:oh-my-opencode.json 是标准 JSON,不支持注释
- 优先级:用户配置 > 项目配置
- 清理:安装完成后删除下载的压缩包,节省空间
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |