【时间】2026 年 9 月 28 号凌晨,开始网易云音乐 Linux 移植
目标:把网易云音乐 Windows 桌面版完整移植到 Linux,纯 Web 技术栈,禁止 Wine。要交付一条可重复管线:Windows 安装包 → 提取 web assets → Linux Web 壳 → 可用客户端。
侦察阶段:下载 Windows 安装包(NSIS),用静态 7zz 解包,读 orpheus.ntpk 头部确认是 zip 格式(tail -c +101 去掉 ntpk 头),全量解包。
坑:上游已经干了
解包后发现 orpheus.ntpk 里就是标准的 web assets。然后 clone 了 open-orpheus 仓库读代码,发现它已经实现了:
- ntpk/web.pack 签名资源包装载(
pack.ts,WebPack.ts) - JS bridge 接口面(播放、缓存、桌面歌词、迷你播放器、托盘、快捷键、皮肤等几十个 call 模块)
- 跨平台 + Wayland 支持、MPRIS(dbus)
- Electron Forge 打包(deb/rpm/flatpak/AppImage),CI 自动发 Flathub
- 首启自动从网易 CDN 拉
package/+resource/(运行时版的资源生成)
我们的管线在“版本可钉、可审计、可 diff”上有优势,但对“拿到可用 Linux 客户端”这个目标,边际价值太低。
决策
终止项目。删远程仓库,本地保留全部侦察和设计文档(docs/01-recon.md 到 04-feature-matrix.md,以及 tools/ 下的工具脚本)。记录结论到 CONCLUSION.md。
终止流程里有两个卡点:
- seat 里
gh auth status未登录,无 token,远程仓库删除执行不了——需要手动在网页端删 memory://后端不存在,“记录到 life”这步没地方写——结论只落盘到本地
经验
- 开始移植项目前,先搜上游有没有已经做了同样事的项目。网易云音乐的 ntpk 格式和 JS bridge 面是核心难点,open-orpheus 全部实证过代码。
- NSIS 安装包用 7zz 可以直接解,不需要 Inno Setup 工具链。
orpheus.ntpk头部 101 字节去掉后就是标准 zip。 - 终止项目也是有价值的产出——侦察文档和设计文档在“如果以后要重启管线”的场景下是完整的存档。
🎵 Listening companion