最近打算试一下用 opencode ,看看这类CLI应用使用体验如何。不过我的电脑是 Windows,而 opencode 在 Linux 环境下用起来更顺手,于是决定在 Windows 上装个 WSL(Windows Subsystem for Linux),把项目搬进去用 opencode。记录一下整个过程,也给同样在 Windows 上挣扎的开发者们一点参考。

为什么选 WSL?

以前我都是直接在 Windows 上搞开发,但很多工具链、脚本在 Linux 下更原生,尤其是涉及到服务器部署、Docker 之类的场景。虚拟机太重,双系统又麻烦,WSL2 是个不错的折中方案——既能在 Windows 上用熟悉的软件,又能享受 Linux 的命令行环境。

安装 WSL2

微软官方文档已经写得很详细了,但实际走一遍还是会踩几个坑。

  1. 启用 WSL 功能
    用管理员权限打开 PowerShell,运行:
    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    

    重启电脑。

  2. 安装 Linux 发行版
    重启完成后可以运行以下代码来看目前有哪些版本可以使用
    # 查看所有已安装的 WSL 发行版及其状态
    wsl --list --online
    
  3. 升级到 WSL2
    在 PowerShell 里执行:
    wsl --set-default-version 2
    
    Windows11自带即为WSL2,不需要手动更新
  4. 再次重启
    确保设置生效

  5. 转移到其他盘
    众所周知呢,Windows默认安装总是安装到C盘下,这也导致了我们C盘的空间异常紧张,那么此时此刻,就需要我们把Linux系统转移到其他盘下

    • 先导出Linux系统为.tar文件
      wsl --export Ubuntu-22.04 D:\WSL\Ubuntu-22.04\Ubuntu-22.04.tar
      
    • 接下来把原有的Linux注销了
      wsl --unregister Ubuntu-22.04
      
    • 解压.tar文件
      wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\WSL\Ubuntu-22.04\Ubuntu-22.04.tar --version 2
      
    • 启动Ubuntu
      wsl -d Ubuntu-22.04
      

      启动完成后需要你输入用户名,自己想一个填进去就好了

配置开发环境

WSL 装好后,第一件事是换源、装常用工具。

# 备份原来的源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 换成阿里云源(国内快很多)
sudo sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo apt update && sudo apt upgrade -y

# 装基础工具
sudo apt install -y git curl wget zsh build-essential
当然,这不重要,我就没换

然后配置 Git、SSH 密钥,把本地的项目拷贝到 WSL 里,如果是在GitHub或者Gitee上的项目再在WSL中mkdir新建一下项目目录,再到里面克隆一下仓库即可

安装 opencode

opencode 的安装只能说是及其方便了,只需要在WSL中输入curl -fsSL https://opencode.ai/install | bash即可

安装完成后,运行 opencode 可直接启动。

第一次使用 opencode

在项目目录下直接跑 opencode,它会启动一个交互式会话。我试着让它帮我修改“关于”页面的样式,效果还不错(此时用的是免费的模型,忘记叫什么了)。

遇到的坑与解决

  1. 文件权限问题
    Windows 和 WSL 的文件系统权限不互通,从 Windows 拷贝过来的文件权限可能不对,导致脚本无法执行。用 chmod +x script.sh 修复即可。

  2. 网络问题
    WSL2 的网络和 Windows 主机是分开的,有时候代理配置需要手动同步。在 ~/.bashrc 里加上:

    export http_proxy=http://127.0.0.1:7890
    export https_proxy=http://127.0.0.1:7890
    

    http://127.0.0.1:7890前面是WSL在Windows上的ip,后面是代理的端口

总结

如果你也在用 Windows 开发,不妨试试 WSL + opencode 这个组合。

一点小建议

  • 尽量把代码放在 WSL 分区,避免跨文件系统性能损失。
  • 定期备份 WSL 系统(wsl --export),免得玩坏了重装。
  • opencode 虽然智能,但生成的代码还是要自己 review,别完全依赖它。

接下来我打算用 opencode 继续优化这个博客的其他页面,比如文章列表、首页布局。有机会再和大家分享更多使用心得。


本文写于 WSL2 + Ubuntu 22.04 环境,opencode 版本为最新稳定版。