背景
前几天想在 Windows 11 上体验一下 OpenCode 这个 AI 辅助开发工具,结果安装后一运行就直接崩溃:
bash
PS E:\...\listener> opencode
============================================================
Bun v1.3.13 (bf2e2cec) Windows x64 (baseline)
...
panic(main thread): Segmentation fault at address 0x7FF78FFB07DA
oh no: Bun has crashed. This indicates a bug in Bun, not your code.
每次都是这个 Segmentation fault,连个正常输出都没有。错误报告建议我去 GitHub 提 issue,但作为一个急性子,我决定自己先折腾看看。
排查过程:我踩过的三个坑
第一次尝试:升级 Bun(失败)
按照错误提示,我以为是 Bun 版本太低有 bug,于是尝试升级到最新的 canary 版:
bash
bun upgrade --canary
结果直接给我来个 ConnectionClosed:
text
Downloading [5.56MiB] Bun upgrade failed with error: ConnectionClosed
Please upgrade manually: powershell -c 'irm bun.sh/install.ps1|iex'
网络问题,挂代理、换 DNS 都没用。手动运行那个 PowerShell 脚本倒是能下载,但安装后版本依旧是 v1.3.13,似乎没覆盖成功。
第二次尝试:重装 OpenCode(没用)
既然升级 Bun 不顺利,那我试试重装 OpenCode 本身:
bash
npm uninstall -g opencode-ai
npm install -g opencode-ai # 重新安装最新版
再次运行 opencode,一模一样的内存访问错误------说明问题不在版本新旧,而是 OpenCode 内置的那个 Bun 运行时在 Windows 下根本不稳。
第三次尝试:切换后端(终于搞定)
在 OpenCode 的 GitHub Issues 里翻到一个讨论,有人提到可以强制让 OpenCode 使用 Node.js 后端而不是内置的 Bun。抱着试试看的心态:
bash
opencode config set runtime backend node
再次运行 opencode,终于不再崩溃了!虽然启动速度慢了一点点,但至少能用了。
最终解决方案(亲测有效)
如果你也遇到一模一样的 Segmentation fault,按以下步骤大概率能解决:
步骤一:用 npm 重装 OpenCode
用包管理器来管理,而不要依赖它自带的安装程序:
bash
npm uninstall -g opencode-ai
npm install -g opencode-ai
步骤二:强制切换后端为 Node.js
这是最关键的一步:
bash
opencode config set runtime backend node
步骤三:验证
bash
opencode --version # 正常输出版本号
opencode doctor # 运行健康检查
看到正常的输出界面,就代表成功了。
如果你也遇到了 ConnectionClosed
这个主要是网络问题。在 Windows 下可以尝试:
-
用管理员 PowerShell 运行官方脚本:
powershell
powershell -c "irm bun.sh/install.ps1 | iex" -
配置代理(如果你有):
powershell
$env:HTTPS_PROXY="http://127.0.0.1:7890" -
直接放弃 Bun,全程用 npm 管理 OpenCode(我就是这样做的)。
总结与建议
| 遇到的现象 | 根本原因 | 有效解决方案 |
|---|---|---|
Segmentation fault |
OpenCode 内置的 Bun 运行时与 Windows 存在底层兼容性 bug | opencode config set runtime backend node |
bun upgrade --canary 报 ConnectionClosed |
国内网络访问 GitHub Releases 不稳定 | 用 npm 管理 OpenCode,不依赖独立 Bun |
| 升级后问题依旧 | 默认后端仍是 Bun | 手动修改配置文件或执行上述命令 |
最后给 Windows 用户两个忠告:
-
不要迷信"自带 Bun 更快"------在它稳定之前,老老实实切 Node.js 后端。
-
实在搞不定就上 WSL2------在 Ubuntu 子系统中装 OpenCode 没有任何段错误,省心。
希望这篇踩坑记录能帮你少花一下午时间。如果你有其他奇怪的错误,欢迎评论区交流~
环境:Windows 11 22H2,Node.js v20.11.0,OpenCode v1.14.34