Skip to content

S00-00 General-AI-IDE

[TOC]

OpenCode

问题集

OpenCode 安装时缺失 postinstall

问题

通过 pnpm i opencode-ai -g 安装的 opencode,在 CMD 中执行 opencode 启动时报图1和图2的错误,在 Bash 中执行 opencode 启动时报图3的错误


原因分析

这是一个非常典型且由于 pnpm 版本更新引发的“连环案”。

  1. 核心原因(图 3 指出的问题): 在新版本的 pnpm 中,出于安全考虑(防止恶意代码在安装时自动运行),默认禁用了依赖包的生命周期脚本(如 postinstall

  2. 为什么 CMD 会报“16 位/不兼容”错误(图 1 和图 2): opencode-ai 这个工具在安装时,需要通过 postinstall 脚本去下载或解压真正的 Windows 平台执行文件(opencode.exe)。由于 pnpm 默认拦截了该脚本,导致生成的 opencode.exe 只是一个空文件(0 字节)或不完整的占位符。Windows 系统在尝试运行一个损坏或 0 字节的 .exe 时,就会误报成“不支持的 16 位应用程序”或“版本不兼容”。

  3. 为什么 Bash 的报错不一样: Bash 运行的是该工具的外部包装脚本(通常是 Shell/Node 脚本),这个脚本在执行前先检查了环境,发现 postinstall 没运行,于是直接拦截并输出了更人性化的错误提示。


解决方案

方法一:允许构建脚本并重新全局安装(推荐)

直接利用 pnpm--allow-build 标志,明确告诉 pnpm 允许运行 opencode-ai 的安装脚本。在终端中执行以下命令:

bash
pnpm add -g opencode-ai --allow-build=opencode-ai

安装完成后,重开一个 CMD 或 Bash 窗口,再次输入 opencode 即可正常启动。

方法二:手动补救

如果你不想重新安装,也可以根据图 3 中 Bash 的提示,直接去 pnpm 的全局缓存目录中手动触发那个被遗漏的脚本。

  1. 打开 Git BashCMD

  2. 复制并运行以下命令,直接进入该包的全局安装路径:

    bash
    cd C:\Users\Mr\AppData\Local\pnpm\global\5\.pnpm\opencode-ai@1.17.11\node_modules\opencode-ai
  3. 手动执行它的后期安装脚本:

    bash
    node postinstall.mjs
  4. 脚本执行完毕后(它会把真正的 opencode.exe 下载/生成好),即可在任意地方正常使用 opencode 命令了。


注意事项

  1. Bash 中运行 opencode 会报 EUNKNOWN: unknown error, read 错误

    原因分析

    opencode 是一个包含精美 TUI(终端用户界面)的交互式 AI 工具。这类工具需要实时捕获你的键盘输入(比如按 Tab 键切换模式、上下键选择菜单)。

    然而,Windows 上的 Git Bash 默认采用的是模拟 Unix 环境的 mintty 终端,它并不是原生的 Windows 控制台。当 Node.js 或底层程序尝试在 Git Bash 中以“原始模式(Raw Mode)”读取你的键盘输入(stdin)时,由于管道通信机制不兼容,就会直接崩掉并抛出 unknown error, read 错误。

    解决方案

    针对这种 TUI 工具在 Windows 上的环境限制,有两种解决方法:

    • 方法一:换用原生终端(推荐)

      这是最省心、体验最好的方式。AI 编程代理这类复杂的终端交互工具,在 Windows 原生控制台下表现最稳定。

      • 直接打开 Windows 自带的 CMDPowerShell 或者 Windows Terminal

      • 直接输入命令启动:

        bash
        opencode
    • 方法二:在 Git Bash 中使用 winpty 桥接

      如果你有强烈的强迫症,必须要在当前的 Git Bash 里运行它,可以在命令前面加上 winpty,强行帮它套一层原生控制台的壳:

      bash
      winpty opencode

      💡 小贴士:如果使用 winpty 启动后界面渲染有些许错位,还是建议直接投奔 PowerShellWindows Terminal,现在的 Windows 新终端对这类 AI TUI 工具的支持非常完美!