我一直用Jellyfin来管理我的媒体收藏:音乐、电影、照片等……其中的音乐收藏是我多年收集的成果,质量远超网络音乐……
不过,我不是很喜欢它自带的播放界面:没有频谱动态显示,CD封面也太小。于是我决定采用快速原型开发方式制作一个。

工具
- Visual Studio Community 2026作为开发环境
- C#语言
- 智能体:Github Copilot尊贵入门会员
- 编程模型:GPT-5.2-Codex
我用了2个上午,0手工代码,最终完成一个我个人认为还比较可用的小程序。
主要功能:
- 显示当前播放曲目的信息:曲名,艺术家,专辑。
- 显示CD封面(Artwork),并转动——感觉回到唱机时代。
- 简单的回放控制:上一首、下一首、播放/暂停。
- 环形播放进度提示,悬停时提示曲目总长和剩余时长。
- 动态频谱显示。
- 曲目切换后动态更新系统托盘图标(Tray Icon)提示,并更新图标为Artwork。
- 可配置Jellyfin Server(服务器和API Key),安全连接自家的服务器。
最后的界面如下(只有那个橙色的环,那个机器人是我Steam Wallpaper Engine的壁纸)。

谈谈过程
这次开发,延续了我比较喜欢的快速原型开发过程。全程我提供了:
- Jellyfin的API文档
- 一个可以借鉴的现成插件配置(
.ini)和界面(.png截屏)。
我用的Agent学得很彻底,在一些核心的功能方面,基本没有任何波折,在第一个半天就基本完成了。而且,在第一个半天,我还微调了界面,使其更符合我的个人偏好。
用编程术语说,这个时候我已经有了一个MVP(Minimum Viable Product,最简可行产品)。所以第二个上午我集中在微调。
我想动态更新任务栏(Taskbar,不是Tray)应用图标,使其成为我现在播放的专辑的封面。这个工作耗费了我上午的大部分时间。AI试图用各种不同的方法来实现。但:
- 多数方法无效
- 部分方法只能部分有效
这时,我只能人工干预了。我在网上进行了一些搜索,得到一个结论是:我的要求很难实现。
我将这个反馈提给AI,它才如梦方醒,说:确实如此!但有折中的方案:不用Taskbar,而用Tray。
事实证明,这个思路是对的:每当乐曲切换,Windows就能弹出一个提示,提示我现在播放的是什么曲目,并更新应用Tray Icon的图标。
AI最终实现的是动态更新系统托盘中的应用程序图标,而非任务栏上的窗口按钮图标。
通过这次开发实践,我总结出一套有效的人机协作开发模式:
- 明确需求边界:在AI开始编码前,清晰定义功能需求和技术约束
- 渐进式验证:采用MVP(最小可行产品)方式,先实现核心功能再逐步完善
- 智能识别瓶颈:当AI尝试多种方案仍无法解决问题时,应及时介入分析技术可行性
- 灵活调整策略:当原定方案受技术限制无法实现时,主动寻找替代方案
- 经验驱动决策:结合自身技术经验判断AI方案的合理性,必要时引导AI探索其他路径
这种协作模式充分发挥了AI的快速编码能力和人类的架构判断能力,实现了高效的软件开发。
这里的一个重要结论是:不能完全依赖AI。AI的讨好型人格——至少我使用的AI的缺省人格——使得它很难挑战人类提出的想法。它会顺着你的想法无畏地前进,头破血流也很难让它幡然醒悟:这个方案是行不通的。
这个时候,人的介入很重要:为它打开新的思路。而这样的工作,是需要人的经验和判定的。
我觉得,这是人和AI协同工作的方向。


(我让Nano Banana和本机的Comfy用同样的关键词生成了两张图。)
Leave a Reply