困扰无数 WSL2 用户的“Select agent 只剩两个原生选项”问题,今天彻底解决! 各位在 WSL2 里用 OpenCode 的朋友们,最近是不是也被这个 Bug 折磨得够呛?
你用 bunx oh-my-opencode install 成功安装了 oh-my-openagent(已改名),配置文件也正常生成,Sisyphus、Prometheus、Oracle 等一大堆高级代理都写进去了,doctor 检查也没问题……
但一敲 opencode,Select agent 列表里永远只有两个:
build native 和 plan native
多代理、ultrawork、@sisyphus 全部消失!😵
我同样在 WSL2 + Ubuntu 环境下反复折腾了三天,终于在今天(2026-04-06)找到了无需降级、直接用最新版的完美解决方案。
下面把最清晰、最完整、可直接复制执行的方案分享给大家。
一、问题现状
- 环境:WSL2 + OpenCode 1.3.16 + oh-my-openagent v3.15.3(均为最新版)
- 症状:插件安装成功、配置文件完全正确,但启动后 Select agent 只显示原生两个代理,所有 oh-my-openagent 自定义代理全部不出现
- 影响:无法使用多代理协同功能(这是 oh-my-openagent 的核心价值)
二、问题根因
bunx oh-my-opencode install 这个OMO官方安装命令是没问题的,它负责帮你生成配置文件。
真正出问题的是 OpenCode 自己加载插件的阶段。
从 OpenCode 1.3.14 开始,官方对插件加载机制进行了升级,内部改用了更标准的 npm 依赖解析方式(底层涉及 @npmcli/arborist)。
这个新机制在 WSL2 环境下会自动继承 Windows 的代理环境变量(HTTP_PROXY、HTTPS_PROXY 等,即使这些变量是空的),导致加载器在注册 agents 时静默失败。
结果就是:配置文件都写好了,但 OpenCode 启动时“看不见”那些自定义代理。
(v3.15.3 虽然修复了配置迁移等问题,但没能完全解决 WSL2 的这个“水土不服”现象。)
三、最终解决方案(推荐直接复制执行)
步骤 1:彻底清理残留(建议执行一次)
可以将~/.config/opencode下面:opencode.json 以及 oh-my-openagent.json/oh-my-opencode.json(旧的)复制到其他目录
rm -rf ~/.config/opencode ~/.cache/opencode/node_modules/oh-my*
步骤 2:重新安装最新插件
export OPENCODE_CONFIG_DIR="$HOME/.config/opencode"
bunx oh-my-opencode@latest install
(安装时 OpenCode Go 选 Yes,其他订阅按实际情况选 No)
步骤 3:WSL2 关键修复(最重要!)
永久生效方案(强烈推荐) :
在 ~/.zshrc 文件最末尾加入下面这一行:
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY http_proxy https_proxy all_proxy 2>/dev/null || true
然后执行:
source ~/.zshrc
以后直接敲 opencode 就能正常启动。
临时测试命令(想立刻验证可直接用):
env -u HTTP_PROXY -u HTTPS_PROXY -u ALL_PROXY -u http_proxy -u https_proxy -u all_proxy opencode
四、验证与后续优化
启动后请检查:
- Select agent 是否出现 Sisyphus、Prometheus、Oracle、Librarian、Atlas 等代理
- 执行
bunx oh-my-opencode doctor,应该只剩 comment-checker、LSP、GitHub CLI 三个无关警告
五、解决方案来源
写在最后
这次问题的本质是 WSL2 与 OpenCode 新版插件加载器的“兼容性冲突”。通过清除代理环境变量,我们终于让最新版的 OpenCode + oh-my-openagent 完美跑起来了!
解决后欢迎在评论区打个“✅ 已解决” ,也把这篇文章转发给同样在 WSL2 里折腾的小伙伴~
点赞 + 在看 + 转发,就是对我最大的支持!
我们下期再见 👋