egoist/mygo-music
多媒体与设计用 Go 编写的原生桌面音乐播放器,本地文件开箱即用,并通过 JavaScript 插件扩展在线曲库与账号。
项目介绍
MyGo Music 是一个用 Go 和 MyGo 原生 UI 工具包编写的桌面音乐播放器,不带 WebView。本地文件可以直接播放;账号、在线曲库、播客、电台、评论和自定义页面等能力都由插件提供。
内置播放支持带标签、封面和 .lrc 歌词的本地文件,以及播放列表、喜欢的歌曲、搜索、专辑和艺术家。正在播放页提供歌词舞台样式、封面墙、队列、随机和循环;另有音频缓存、暂停与跳转淡入淡出、响度归一化、会话恢复、macOS 刘海播放器、托盘和媒体键,界面支持英文和简体中文(功能列表)。
播客字幕会在播放时用 sherpa-onnx 和 Qwen3-ASR 在设备上转写,相关组件由应用在用户主动请求时下载。
快速使用
从源码构建需要 Go 和 MyGo 工具链:
go tool mygo dev # 开发模式运行
go tool mygo build # 打包到 build/
go test ./internal/...
README 没有说明如何获取预编译版本,因此源码构建是当前有文档的路径(构建命令)。
想试用插件,可把 examples/demo-plugin 复制到应用的插件目录(Settings > Plugins > + > Show Plugins Folder),也可以在 Settings > Plugins 中点击 +,从 GitHub 仓库或压缩包安装。插件就是一个包含 plugin.json 和一个 JavaScript 或 TypeScript 文件的文件夹,无需构建,同一插件可在所有平台运行。
编写与发布插件
插件按能力导出函数,例如 search、stream、home、lyrics 或 remote* 远程播放系列。完整导出表和 JSON 结构见 internal/music/music.go。navigation 决定插件在侧边栏中的入口,minAppVersion 指定兼容的最旧应用版本。
JavaScript 标准库之外的能力需要在 plugin.json 中申请权限:network 列出 fetch 可访问的主机,process 列出 host.spawn 可启动的程序。host 对象还提供持久存储、设置、翻译、登录辅助和加密工具(权限与 host API)。
发布时,把 plugin.json 放在公共 GitHub 仓库根目录,可在 Release 中附上按平台命名的 zip,并给仓库加上 mygo-music-plugin 标签,即可出现在插件页。mygo-music://install-plugin?repo=owner/repo 形式的安装链接会打开应用,并在安装前询问用户。
使用约束
- 插件权限在安装或更新时校验;新版本申请更多权限会再次提示用户。
process权限尤其敏感,因为启动的程序拥有与用户相同的权限。 - 涉及原生程序时,需要按平台分别提供二进制,并通过
host.platform和host.arch选择。 - 插件翻译放在
locales/<language>.json;内置语言为英文和简体中文。 - 项目使用 AGPL-3.0 许可证(许可证)。
HotRepo 点评
MyGo Music 首次出现在 HotRepo 新项目榜 2026-11-06 的快照中:观测点为 147 stars、28 forks,报告在约一小时的窗口内新增 42 stars 和 8 forks。该项目没有记录到全语言日榜最好名次,所以这只是一次早期快照,不足以判断趋势。值得关注的设计点是插件边界:Go/MyGo 原生外壳加带显式权限的 JavaScript 插件并不常见,而 README 对这套边界的描述比播放器 UI 本身更详细。
本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。