我做了一个越用越懂你的本地音乐 Agent
如果你觉得这个方向有意思,也欢迎顺手点个 Star。
最近我在做一个叫 Musio 的项目。
一句话介绍:
Musio 是一个本地优先的音乐 Agent。
它不是一个普通播放器,也不是一个只会聊天的 AI 助手。Musio 想做的是:把播放器、音乐源、歌词、评论、歌单、用户偏好、本地记忆和大模型能力连接起来,让音乐软件从“点按钮播放歌曲”变成“用自然语言完成音乐任务”。
比如你可以直接对它说:
给我推荐 5 首适合深夜写代码听的歌。
当前播放这首歌评论区都在聊什么?
把当前播放的歌曲加入歌单。
再推荐几首类似的,但不要重复刚才推荐过的。
Musio 会理解你的请求,然后调用真实的音乐能力去执行,而不是只生成一段看起来合理的文字。
为什么想做 Musio?
作为用户,我一直觉得音乐软件里有很多操作其实很适合交给 Agent。
听到一首歌时,我可能会想:
- 看看歌词
- 看看评论区
- 找几首类似的歌
- 把它加入歌单
- 根据当前心情继续推荐
- 让它记住我喜欢什么、不喜欢什么
传统播放器能做这些事,但通常要在不同页面里点来点去。
而 Musio 想做的是让你直接说:
这首歌不错,帮我看看评论,再找几首类似的,顺便加入我的 Musio 歌单。
然后 Agent 自己去理解、拆解、执行。
这就是 Musio 的核心目标:让音乐播放器不再是冰冷的播放工具,而是一个越用越懂你的个人音乐 Agent。
Musio 现在能做什么?
Musio 当前已经围绕音乐场景实现了一套完整的 Agent 工作流。
它可以:
- QQ 音乐扫码登录
- 搜索歌曲、歌手、专辑
- 播放音乐
- 查看歌词
- 查看热门评论
- 读取用户歌单和歌单歌曲
- 根据场景、心情、风格推荐真实歌曲
- 理解当前正在播放的歌曲
- 理解上一轮推荐结果
- 避免重复推荐最近已经推荐过的歌
- 把歌曲加入本地 Musio 歌单
- 在写入前请求用户确认,避免误操作
比如你可以说:
给我推荐几首适合通勤路上听的歌。
Musio 会根据场景生成候选歌曲,并到真实音乐源中匹配歌曲。它不是单纯让大模型“编一个歌单”,而是尽量保证推荐出来的歌是真实存在、可搜索、可播放、可继续读取歌词和评论的。
你也可以继续说:
第二首的歌词给我看看。
把这几首加入歌单。
当前播放这首歌评论区都在聊什么?
Musio 会结合上下文判断你说的“第二首”“这几首”“当前播放”分别指什么。
QQ 音乐扫码登录,开箱就能接入真实音乐源
Musio 当前优先支持 QQ 音乐。
启动后,你可以在 Web 控制台里进行 QQ 音乐扫码登录。登录成功后,Musio 就可以基于 QQ 音乐能力完成搜索、播放、歌词、评论、歌单读取等操作。
这点很重要。
因为一个音乐 Agent 如果只会聊天,其实价值有限。真正有用的是:它能接入真实音乐源,拿到真实数据,然后围绕这些数据继续执行任务。
Musio 的目标不是做一个“音乐聊天机器人”,而是做一个真的能帮你操作音乐世界的 Agent。
Loop 模型:不是一次性回答,而是一步步执行
Musio 的 Agent Runtime 采用了 loop 式的执行设计。
它不是让大模型一次性生成一长串工具调用,然后盲目执行到底,而是每次只决定下一步:
用户输入
-> 理解任务
-> 读取动态记忆
-> 决定下一步 action
-> 调用音乐工具
-> 得到 observation
-> 再决定下一步
-> 最终回答
这套 loop 设计让 Musio 可以处理更复杂的多步骤任务。
比如用户说:
推荐一首周杰伦的歌,把它加入歌单,然后分享一句值得看的歌词。
Musio 需要完成的不只是“推荐”:
- 先推荐真实歌曲。
- 拿到歌曲 ID。
- 读取歌词。
- 判断写入动作需要确认。
- 用户确认后再加入本地 Musio 歌单。
- 最后基于真实工具结果回答。
这就是 Agent 和普通聊天机器人的区别。
Musio 不是只回答“可以”,而是会真的把任务跑完。
动态记忆:越用越懂你的关键
Musio 里我很重视的一点是记忆机制。
一个音乐 Agent 如果每次对话都是全新的,它就很难真正“懂你”。Musio 会围绕本地环境维护动态记忆和音乐画像,让它逐渐理解你的偏好。
它会参考:
- 当前播放状态
- 播放队列
- 最近推荐过哪些歌
- 上一轮搜索或推荐结果
- 用户音乐画像摘要
- 行为偏好
- 对话摘要
- 本地任务记忆
所以你可以更自然地连续对话。
比如你刚让 Musio 推荐了 5 首歌,然后继续说:
第二首的歌词给我看看。
它不需要你重新输入歌名。
再比如你说:
不要再推荐刚才那几首了,换一批更安静的。
Musio 会知道最近推荐过哪些歌,并在后续推荐里尽量避免重复。
长期来看,Musio 想成为的不是“一个会播放音乐的软件”,而是一个会记住你口味、场景和习惯的个人音乐 Agent。
它知道“当前播放”是谁
音乐场景里有很多自然指代:
- “这首”
- “当前播放”
- “正在播放”
- “刚才那首”
- “第一首”
- “队列上一首”
- “这几首”
这些表达对普通聊天模型来说很容易误解。
Musio 会读取播放器状态和任务记忆,判断用户到底在指哪首歌。
比如:
把当前播放的歌曲加入歌单。
Musio 会优先使用播放器里正在播放的歌曲,而不是错误地使用上一轮推荐列表里的第一首歌。
这类细节很小,但它直接决定了 Agent 是不是真的可用。
写入前确认:Agent 可以强,但不能莽
Musio 支持把歌曲加入本地 Musio 歌单,但这类写入动作不会直接执行。
当你说:
把当前播放的歌曲加入歌单。
Musio 会先展示确认卡片。你确认之后,它才会执行写入。
这背后有一个原则:
读操作可以自动执行,写操作必须谨慎确认。
比如搜索、推荐、歌词、评论都属于读取能力,可以直接调用;但加入歌单属于本地写入能力,需要用户确认。
Agent 最终是要替用户做事的,所以越是能执行,就越应该有清晰的边界。
安装和使用尽量没有门槛
虽然 Musio 背后有不少组件:
- Spring Boot 后端
- React Web 控制台
- Java CLI
- QQ 音乐 Python sidecar
- Agent Runtime
- 本地记忆系统
- 平台运行时包
但我希望用户使用时足够简单。
如果使用发布包,理想情况下只需要:
npm install -g @mindforge-x/musio
musio
启动后,Musio CLI 会负责:
- 创建默认配置
- 选择音乐源
- 启动本地后端
- 启动音乐源 sidecar
- 打开 Web 控制台
日常也可以用这些命令管理:
musio # 启动 Musio
musio doctor # 检查运行环境
musio status # 查看服务状态
musio stop # 停止本地服务
也就是说,Musio 背后的架构可以复杂,但用户入口必须简单。
如果你是开发者,也可以从源码运行:
git clone https://github.com/mindforge-x/musio.git
cd musio
./scripts/dev.sh
技术架构上做了什么?
Musio 是一个本地优先的多组件架构。
大致结构是:
Musio CLI
-> 启动本地服务
-> 启动 QQMusic sidecar
-> 启动 Spring Boot backend
-> 打开 React Web 控制台
项目主要模块包括:
backend-spring/ Spring Boot API、Agent Runtime、配置、记忆和音乐接口
frontend/ React + Vite Web 控制台
cli-java/ Java CLI,本地服务启动器和诊断命令
providers/qqmusic-python-sidecar/ QQ 音乐 Python HTTP sidecar
packaging/ npm 平台包和发布脚本
本地记忆和音乐画像
Musio 的记忆系统会围绕本地数据保存动态记忆,包括任务记忆、偏好候选、行为事件、对话摘要和音乐画像。
简单说就是:Musio 会越来越知道你喜欢什么。
这也是我最想继续打磨的方向。
npm 平台包
Musio 的发布包设计也尽量降低使用门槛。
@mindforge-x/musio 是入口包,不同系统架构会安装对应的平台运行时包,例如 Linux、macOS、Windows 的 x64 / arm64 包。
平台包里包含运行所需的后端、前端、CLI、Java runtime 和 sidecar。用户不需要理解内部组件,只需要运行 musio。
Musio 和普通播放器有什么不同?
普通播放器解决的是:
我点哪首,你播哪首。
Musio 想解决的是:
我说出一个音乐意图,你帮我完成它。
它可以是播放器,但不止是播放器。
它更像一个本地音乐工作台:
- 能播放
- 能搜索
- 能推荐
- 能看歌词
- 能看评论
- 能记住偏好
- 能理解上下文
- 能执行多步骤音乐任务
- 能在确认后帮你整理歌单
这就是我想做 Musio 的原因。
当前状态和未来计划
Musio 目前优先支持 QQ 音乐,已经具备基础的 Agent 工作流、扫码登录、推荐、搜索、歌词、评论、歌单、本地记忆和确认写入机制。
后续我希望继续完善:
- 更多音乐源支持
- 更强的长期音乐画像
- 更自然的多轮音乐对话
- 更完整的本地歌单管理
- 更稳定的跨平台发布体验
- 更强的 Agent 长任务能力
最终目标是让 Musio 成为一个真正属于用户自己的个人音乐 Agent。
如果你也感兴趣
如果你也对“音乐播放器 + 本地 Agent + 动态记忆”这个方向感兴趣,欢迎来 GitHub 看看:
可以下载体验,也欢迎提 issue、提建议、参与开发。
如果觉得 Musio 这个方向有意思,也麻烦顺手点一个 Star。