前言
最近在研究 AI 辅助编程工具,发现了一套非常强大的组合:OpenCode + Oh-My-OpenCode。它们不仅能调用 GitHub Copilot 等模型,还支持灵活配置各种语言的 LSP(语言服务器),特别是 Java 的 jdtls。本文将详细记录从安装到配置的全过程,包括模型设置、LSP 集成和常见问题处理。
环境准备
-
操作系统:Windows (本文以 Windows 为例,macOS/Linux 类似)
-
Node.js:建议 v18 或更高版本(npm 随附)
-
PowerShell:用于运行安装脚本
-
GitHub Copilot 订阅(若使用其模型)
一、安装 OpenCode 和 Oh-My-OpenCode
1. 安装 OpenCode
npm i -g opencode-ai
安装完成后,可以通过 **opencode --version**检查是否成功。
2. 安装 Oh-My-OpenCode
npm i -g oh-my-opencode
然后执行安装命令(会完成一些初始化配置):
npx oh-my-opencode install
opencode
二、模型配置(使用 GitHub Copilot 模型)
OpenCode + Oh-My-OpenCode 的模型配置通过 oh-my-openagent.json 文件完成。该文件位于:
C:\Users\你的用户名\.config\opencode\oh-my-openagent.json
如果文件夹不存在,手动创建即可。
1. 完整配置示例
以下是我实际使用的 oh-my-openagent.json,包含了多个代理(agent)和类别(category),并统一使用 github-copilot/gpt-5.4 及其变体,以及一些备用模型(fallback)。
{
"$schema": "https://raw.githubusercontent.com/code-yeongyu/oh-my-openagent/dev/assets/oh-my-opencode.schema.json",
"agents": {
"sisyphus": {
"model": "github-copilot/gpt-5.4",
"variant": "max",
"fallback_models": [
{ "model": "github-copilot/gpt-5.4", "variant": "max" },
{ "model": "github-copilot/gpt-5.4" },
{ "model": "github-copilot/gpt-5.4", "variant": "medium" },
{ "model": "opencode/big-pickle" }
]
},
"hephaestus": {
"model": "github-copilot/gpt-5.4",
"variant": "medium",
"fallback_models": [{ "model": "github-copilot/gpt-5.4", "variant": "medium" }]
}
// 其他 agent 类似,按需添加
},
"categories": {
"quick": {
"model": "github-copilot/gpt-5.4-mini",
"fallback_models": [
{ "model": "github-copilot/gpt-5.4-mini" },
{ "model": "github-copilot/claude-haiku-4.5" },
{ "model": "github-copilot/gpt-5.4" },
{ "model": "opencode/gemini-3-flash" }
]
}
// 其他 category 类似
}
}
说明:
variant表示模型能力级别(如 max, high, medium, xhigh)。
fallback_models是当主模型不可用时依次尝试的模型列表。模型名称格式
github-copilot/xxx需要有效的 GitHub Copilot 授权。
三、配置 Java LSP(jdtls)
OpenCode 通过 LSP 提供代码补全、跳转、重构等功能。Java 官方推荐使用 jdtls(Eclipse JDT Language Server)。
注意!!!:jdk需要配置全局环境,且版本不低于21
1. 下载并安装 jdtls
提供了一个 PowerShell 脚本 installjdtls.ps1,内容如下(保存为 .ps1 文件):
# install-jdtls.ps1
$installDir = "$env:USERPROFILE\.local\share\opencode\bin"
$tempFile = "$installDir\jdtls.tar.gz"
New-Item -ItemType Directory -Force -Path $installDir | Out-Null
Write-Host "Downloading jdtls..."
Invoke-WebRequest -Uri "https://download.eclipse.org/jdtls/milestones/1.57.0/jdt-language-server-1.57.0-202602261110.tar.gz" -OutFile $tempFile
Set-Location $installDir
Write-Host "Extracting..."
tar -xzf jdtls.tar.gz
$jdtlsBinDir = "$installDir\bin"
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
if (-not $currentPath.Contains($jdtlsBinDir)) {
[Environment]::SetEnvironmentVariable("Path", "$currentPath;$jdtlsBinDir", "User")
Write-Host "Added to PATH: $jdtlsBinDir"
}
Remove-Item $tempFile -Force
Write-Host "Verifying installation (expected: usage error or missing args)..."
& "$jdtlsBinDir\jdtls.bat" 2>&1 | Select-Object -First 3
执行步骤:
-
将上述脚本保存为
installjdtls.ps1。 -
在文件资源管理器中进入脚本所在目录,地址栏输入
powershell并回车。 -
在 PowerShell 中运行:
.\installjdtls.ps1 -
观察输出。如果出现类似下面的内容,其实是成功的:
Downloading jdtls... Extracting... Added to PATH: C:\Users\Admin\.local\share\opencode\bin\bin Verifying installation... Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 WARNING: Using incubator modules: jdk.incubator.vector这些警告可以忽略,只要没有报错"找不到命令"之类的即可。
2. 验证 jdtls 是否可用
打开一个全新的 PowerShell 窗口(使得 PATH 生效),运行:
jdtls -help
如果输出帮助信息(如 Usage: jdtls [-data <workspace>] ...),说明安装成功。
3. 在 oh-my-openagent.json 中注册 jdtls
在 JSON 配置文件的顶层添加 lsp 字段,内容如下:
"lsp": {
"jdtls": {
"command": ["jdtls", "--stdio"],
"extensions": [".java"],
"priority": 10,
"env": {
"NODE_OPTIONS": "--max-old-space-size=4096"
},
"initialization": {
"preferences": {
"includeInlayParameterNameHints": "all"
}
}
}
}
将该段合并到你已有的 oh-my-openagent.json 中(注意 JSON 语法,不要遗漏逗号)。届时打开任何 .java 文件,OpenCode 就会自动启动 jdtls 提供智能提示。
四、其他 LSP 配置(以 Vue 为例)
如果需要前端开发支持,可以安装 Vue 的语言服务器:
npm install -g @vue/language-server
然后在 lsp 字段中添加相应配置(类似 jdtls)。
五、常见问题与注意事项
1. jdtls 运行报错 JAVA_TOOL_OPTIONS 或 incubator modules
这是正常提示,不影响使用。如果希望去除,可以移除环境变量 JAVA_TOOL_OPTIONS 或降级 JDK 版本(但建议保留)。
2. PATH 未生效
安装完 jdtls 后要关闭并重新打开 终端(或 PowerShell),否则系统找不到 jdtls 命令。
3. 模型无法调用
-
确保已登录 GitHub Copilot(可使用
github-copilot auth命令验证)。 -
检查网络环境,部分地区可能需要代理。
4. OpenCode Web 界面不显示 LSP 功能
确认 JSON 配置文件没有语法错误(可用在线 JSON 校验工具)。LSP 功能在打开对应文件(如 .java)后才会激活。
六、总结
本文手把手教会了:
-
安装 OpenCode 和 Oh-My-OpenCode
-
配置 GitHub Copilot 模型(通过
oh-my-openagent.json) -
安装并配置 Java LSP(jdtls),包括使用 PowerShell 脚本自动安装
-
添加其他 LSP(如 Vue)
现在你可以享受 OpenCode 带来的强大 AI 辅助编程体验了!如果遇到问题,欢迎在评论区留言交流。