音乐CLI排行榜:Agent时代最佳找歌工具
摘要
试想两个生活片段。 深夜,你正心流爆棚地写代码,想换首BGM。以往的操作路径是:手离
试想两个生活片段。
深夜,你正心流爆棚地写代码,想换首BGM。以往的操作路径是:手离开键盘,切换到手机或桌面客户端,滑动推荐列表,三首都提不起兴致,思路断了,算了随便来一首。现在的方式:在聊天框里自然发一句「帮我找几首适合深夜写代码的音乐」,AI完成处理后,背景音无缝切换,还附带一句推荐理由——你甚至没离开代码编辑器。
另一个例子:在飞书写了大半天文档,想看看照片放松双眼。直接在飞书发送「用我的红心歌单为我生成一个照片墙」,结果瞬间生成。这就是 ncm-cli 搭配 OpenClaw 在当前阶段能提供的体验。
从“选歌焦虑”到即时响应:OpenClaw如何破解模糊需求
OpenClaw 代表了一种Agent交互范式的转折点:AI不再局限于浏览器内的对话框,它能成为你即时通讯工具里随时待命的执行体,在你本地的操作系统上完成真实操作。
我们判断,在这个框架下,音乐场景是最佳验证范式。原因很简单:「不知道听什么」是日常中最典型的模糊意图——你并非要搜索某首具体曲目,而是渴望获得「匹配当前心境的旋律」。这种模糊性正是AI的强项,传统搜索界面反而显得笨拙。同时,音乐操作存在天然属性:输入与输出分离。你用手机发指令(输入),电脑播放音乐(输出)。OpenClaw 的跨设备特性与这个场景简直是天作之合。
工具形态决策:为何选择CLI而非App或插件
确定方向后,首个问题是:做成何种形态?App不可取——需要维护UI,迭代繁重,与AI Agent集成反而多绕弯路。插件或SDK则受限于特定平台,更换Agent就得重写。
我们最终选择了CLI。这一判断基于一个直白的逻辑:CLI命令是AI Agent最自然的功能调用形式。一条 ncm-cli play --song xxx 的指令,无论对Claude、OpenClaw内置的AI,还是其他Agent框架,调用方式完全一致。CLI本身不依赖任何AI框架,它只是一个可以被任何系统调用的原子工具。
同时,CLI保留了「直接操作」的可能性——手动键入命令、Shell脚本集成、自动化流水线,均可实现。基于这一形态,我们设计了两套Skill来深度融入Agent:
netease-music-cli —— 针对「我知道要听什么」的场景。搜索、播放、队列控制、歌单管理,直截了当。这套Skill有一个精妙设计:我们并未在Skill定义中枚举所有命令,而是允许AI通过 --help 自行渐进式探索。AI接到任务后,会先执行 ncm-cli --help 查看顶层命令,再根据需要深入子命令查看参数,最后执行。整个过程与人第一次使用新CLI的探索方式如出一辙。
这一设计带来两个优势:一是Skill定义本身无需随命令变更而更新;二是与后续的动态命令系统形成自然协同——服务端新下发指令,AI下次即可通过 --help 发现并使用,整条链路无须人工介入。
netease-music-assistant —— 面向「我不知道听什么」的场景。它会先读取你的红心歌曲库,分析你的偏好(曲风、情绪、时间段习惯),然后制定多维度搜索策略,从歌单、专辑、单曲多个维度混合推荐,每条结果附带个性化推荐理由,并自动去重(避免重复推荐你已收藏或近期推荐过的内容)。两个Skill的分工非常清晰:前者负责执行,后者负责决策。
核心实现细节
ncm-cli 提供三种使用模式:
- AI Agent 集成(推荐):自然语言操控,智能推荐,手机端指挥
- CLI 命令行:脚本嵌入,精准控制
- TUI:终端播放器的沉浸式体验
命令体系:基于AI“原子操作”而非功能按钮设计
命令覆盖范围的选择,我们并未从「用户会点击哪些界面按钮」出发,而是从「AI完成一个音乐任务需要哪些原子操作」出发。
AI处理请求,本质上是一个多步推理加执行的过程。以「帮我播放一首适合现在心情的歌曲」为例,AI需要依次完成:
围绕这个流程,我们将命令划分为几个层次:
- 感知层:执行前先获取当前状态,避免盲目操作(
state、queue) - 发现层:寻找候选内容(
search、recommend daily/fm/heartbeat) - 用户画像层:理解用户偏好,辅助个性化决策(
user favorite、user history、user listen-ranking) - 执行层:实际的播放控制(
play、pause、next、seek、volume) - 管理层:持久化操作,帮助用户整理收藏(
playlist create/add/remove、song like)
此外值得提及:所有命令默认输出JSON格式,稳定可靠,AI可直接解析,无需额外文本处理。
动态命令机制:让CLI保持“活性”
传统CLI有一个固有局限:命令是编译进代码的,新增功能必须改代码、发版、等待用户升级,整条链路冗长。
ncm-cli 引入了一套动态命令系统,核心理念是:将命令的定义从代码中移至服务端。
传统CLI的版本更新链路:
动态命令的更新流程:
CLI启动时,向服务端发送一次同步请求,告知「本地已缓存了哪些命令的哪个版本」。服务端仅返回有变化的部分,CLI利用这些增量数据在本地重建命令树。
效果是:业务团队可以独立地添加、修改或下线命令,用户无需升级客户端,下次启动即可使用新功能。CLI从一个静态工具转变为一个持续演化的命令执行引擎。
播放模式设计
播放后端支持两种方案:
内置播放器(mpv):跨平台支持,macOS/Linux/Windows均可用。即使未安装网易云音乐桌面客户端,也能直接播放。
网易云音乐桌面客户端:这种模式带来独特体验——AI操控的不是一个独立的播放进程,而是你已安装的网易云音乐App本身。
技术实现上,ncm-cli 通过
orpheus://URL Scheme 向客户端发送指令,客户端后台常驻进程监听并响应。若App未运行,则自动启动。这意味着:你对AI说「帮我播放林俊杰的曹操专辑」,打开的是完整的网易云音乐界面——专辑封面、歌词、音质、红心、社交……全套App体验,只是控制方式从点击变成了自然语言。
App并未被取代,而是获得了一个全新的控制界面。
TUI播放器是我们较为得意的功能之一——黑胶旋转动画、卡拉OK风格歌词同步、场景切换,在终端里展现出独特的仪式感。
TUI有一个值得一提的特性:它可以与CLI命令同时运行。TUI运行时,你仍可在另一个终端执行 ncm-cli next、ncm-cli volume 80,TUI界面会实时响应。这对AI Agent来说尤为自然——Agent发出的指令与人在TUI中的操作是完全对等的。
快速上手指南
首先,安装 ncm-cli:
npm install -g @music163/ncm-cli
前往 网易云音乐开放平台 完成入驻并获取API凭证,然后运行配置向导:
ncm-cli configure
接下来即可开始使用。以下是几种操作方式:
方式一:通过OpenClaw
安装OpenClaw并关联你的飞书等IM工具,然后安装我们提供的skill(github.com/NetEase/ski… ),之后你就可以随时通过手机控制电脑上的音乐播放。
这种方式最适合日常使用:无需打开终端,无需记忆命令,通过IM发送消息即可。
一个有趣的例子:你在飞书发送「用我的红心歌单帮我生成一个照片墙」。
这个请求看起来与音乐播放无关,但它展示了Agent模式更广阔的想象空间——
ncm-cli在这里不仅是播放工具,更是音乐数据的结构化接口。Agent获取这些数据后,可以做任何事——生成图片、撰写报告、分析偏好、发送邮件,取决于你的创造力和Agent能调用的其他工具。
这正体现了CLI作为Agent工具的核心价值:一个专注、稳定的数据与控制接口,Agent来决策如何使用。
方式二:集成Claude Code Skills
npx skills add https://github.com/NetEase/skills
安装后,直接与Claude Code对话:
> 帮我推荐几首适合专注的纯音乐
> 播放我最近听的歌单
> 下一曲
> 把这首歌加入红心
方式三:直接使用CLI
npm install -g @music163/ncm-cli
ncm-cli configure # 配置凭证
ncm-cli login # 扫码登录
ncm-cli tui # 启动 TUI 播放器
...
期待你的反馈
做这件事的初衷极为朴素:「合适的」音乐应当更容易「被找到」,而不是每次都在推荐算法的摇摆与自己的选择困难中挣扎。AI Agent提供了一个新的可能性——用自然语言描述当下的状态,让AI替你完成决策。
ncm-cli 是我们探索这一方向的起点,还有很多需要打磨的地方。
几个问题想听听各位的看法:
- 你日常听歌的「痛点」是什么?是发现新歌难,还是管理歌单繁琐,或是其他?
- 如果AI能更主动地介入你的听歌体验(例如感知你的状态、主动推荐),你希望它如何做,又不希望它如何做?
- 如果你有技术背景,是否有想贡献的方向?
欢迎在评论区讨论,也欢迎到GitHub提交issue。
来源:互联网
本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。