Product Requirements Document · Public Edition

mygod 音乐中枢

把多个在线曲库与本地文件合成一个播放队列,用一个统一入口供人和智能助手共同操作。 一份播放器、一份会话、一份音效偏好,换设备、换入口都不丢。

文档版本 1.0 状态 对外发布版 日期 2026-11-06 文档类型 产品需求文档(营销可读)
01

产品概述 一个中枢,替代一堆分散的客户端

1.1 一句话定义

mygod 是运行在用户自己设备上的音乐中枢:它同时对接多个在线曲库来源和一个本地音乐库, 向上提供统一的检索、播放、歌词、评论、推荐与音效能力,并以两种形态对外开放—— 一种是可脚本化的命令行,一种是可被智能助手直接调用的开放接入协议。

1.2 背景与问题

音乐内容被拆散在多个平台,用户的真实听歌行为因此断成三截:

断点用户实际遭遇产品回应
内容分散 一首歌只在一个平台有版权;想听的专辑被切成三份,各自打开一个客户端。 把多个曲库来源聚合成同一份检索结果,一次搜索看到全部可用版本。
播放割裂 每个客户端各自维护队列与进度;切换入口就从头开始,音效与音量也要重设。 本机只有一份播放会话,任何入口接入都接管同一个队列与同一条进度。
助手缺席 智能助手能写文档、能查资料,却无法真的把一首歌放出来。 把音乐能力拆成一组可被助手调用的动作,一句自然语言即可完成检索到播放。

1.3 目标

目标以用户可观察的结果表述,不以百分比承诺:

02

目标用户与使用场景 三类人,一个中枢

用户典型场景触发动作完成证据
日常听众
主力用户
在家用电脑听歌,歌单跨几个平台,还要兼顾本地下载的老歌。 说出或输入歌名/歌手/歌单名。 目标曲目开始播放,进度条前进,歌词与当前行同步。
智能助手用户 在对话里让助手"放一首适合通勤的歌""把刚才那首加到队列后面"。 一句自然语言请求。 助手调用成功并回读快照,确认状态由暂停变为播放。
脚本与自动化用户 用脚本定时播放、把播放状态接入自己的面板或快捷键工具。 执行一条命令或调用一次接口。 命令返回结构化快照,脚本据此判断下一步。

核心用户旅程(最短闭环)

登记内容来源→ 检索目标曲目→ 确认可播状态→ 建立播放队列→ 播放并回读快照→ 调整(下一首/跳转/循环/音效)→ 退出后恢复

完成条件:用户听到目标曲目,且下一次打开时能从上一次的队列与进度继续。

03

产品范围 已交付、规划中、明确不做

3.1 本期已交付(P0)

3.2 规划中(P1)

3.3 明确不做

04

产品模型与术语 先统一语言,再定义行为

术语定义唯一性规则
内容来源 提供曲目检索与在线取流的一方,或用户本机文件目录。 在线来源与本地库各算一方;每条来源可独立登录、独立可用。
曲目 一条可被检索、可被加入队列的音乐条目。 由"来源 + 来源内编号"唯一定位;不同来源的同名曲目视为不同曲目。
播放队列 当前参与播放的有序曲目集合,含播放位置与当前条目。 本机同一时刻只有一个活动队列;队列允许跨来源混排。
播放会话 队列 + 循环模式 + 随机开关 + 音量 + 音效偏好的集合。 会话可落盘;重新启动后按上次状态恢复,恢复后处于暂停。
播放快照 一次读取得到的播放状态:状态、当前曲目、进度、当前歌词行、队列、音量、随机、循环、错误信息。 所有接入端读到的都是同一份快照;进度随时间自行推进。
本地索引 用户登记目录下音频文件的元数据与文件位置清单。 仅由用户显式登记的目录产生;搜索仅覆盖索引内条目。
可播性 曲目在当前来源与当前登录状态下能否取到流。 检索阶段即可判定并标注;播放阶段若判定失败则自动跳过。
05

功能需求 每条需求都写清触发、规则、结果与状态变化

5.1 内容来源与检索

FR-01多来源聚合检索P0

触发:用户输入关键词,并指定内容来源(默认首个在线曲库)与结果类型。

处理规则
按来源各自检索,来源间不做合并去重;结果按来源计数分页返回;分页偏移量对多来源按整页对齐。
结果
返回该页条目,每条带可播状态、时长、艺人、专辑;专辑与歌单结果额外带条目数。
状态变化
检索本身不改变播放状态;若当前有播放,快照保持不变。
异常
未登录导致该来源不可用:返回空页并说明需要登录;某来源超时:返回其余来源结果,不整体失败。
FR-02详情页与播放列表展开P0

触发:用户点开艺人、专辑、歌单或用户主页。

处理规则
艺人页提供热门曲目与专辑列表切换;专辑/歌单页返回完整曲目,单次最多 1000 条;除主来源外,其余来源只保证专辑与歌单。
结果
页面含名称、封面、简介与曲目集合;曲目集合可直接作为播放队列来源。
异常
资源已下架:返回明确的不可用提示,不返回半截列表。
FR-03批量曲目详情P0

触发:调用方持有一组曲目编号,需要补齐名称、时长与可播状态。

处理规则
按传入顺序返回,逐条判定可播性;任一编号失效不影响其余条目。
结果
返回顺序与输入一致的曲目列表,缺失条目以不可用标注。
FR-04来源可用性与账号状态P0

触发:接入端首次连接,或用户想确认当前可用能力。

处理规则
逐来源报告登录状态;未登录来源给出"游客可用范围"说明;已登录来源附带账号资料。
结果
调用方据此决定后续动作:可直接播放、需要登录,或该来源当前不可用。

5.2 播放与队列

FR-05建立播放队列P0

触发:用户指定曲目集合、歌单、专辑或电台中的恰好一种,并可指定从第几条开始。

处理规则
四种来源互斥,一次只能指定一种;指定起始位置时,队列保留完整集合,从该位置开始播;心跳式电台允许同时附带其歌曲来源的歌单编号。
结果
新队列覆盖旧队列并立即进入加载;返回建立后快照。
状态变化
状态由空闲/暂停变为加载,再变为播放;失败的条目按 6.1 跳过。
异常
一次指定多种来源:拒绝并说明只能指定一种;本机无音频输出:明确提示可在无输出设备的环境下不可播。
FR-06播放控制集合P0

触发:用户执行暂停、继续、上一首、下一首、跳转到指定条目、跳转到指定时间点或设置音量。

处理规则
跳转时间点在已加载范围内即时生效;超出范围的跳转以可播边界为准;音量取值 0–100,跨接入端共享同一音量。
结果
返回操作完成后的快照,调用方无需再次查询。
状态变化
暂停与继续在同一队列位置往返;切歌重置进度为 0 并重新进入加载。
异常
队列为空时所有控制返回空操作提示,不报错、不崩溃。
FR-07循环与随机P0
处理规则
循环三档:关闭(播完队列末条即停)、列表(末条回到首条)、单曲(当前曲目重复)。随机为独立开关,与循环叠加生效:随机顺序在队列建立时确定并保持,不回退到未随机前的顺序。
持久化
循环与随机随会话落盘,重启后保持上次选择。
FR-08播放快照P0

触发:任意接入端请求当前播放状态,可重复轮询。

结果字段
状态(空闲/加载/播放/暂停/停止)、当前曲目及其来源与可播标记、进度与总时长、当前歌词行、队列与当前序号、电台名、音量、随机、循环、音效开关、错误说明。
处理规则
进度随时间自行推进,每次读取都是最新值;加载中的曲目进度停在起点并置为加载状态;出错但未跳过时错误说明随快照返回。
FR-09电台续播与口味反馈P0

触发:队列播完,或用户给出"不喜欢"。

处理规则
电台模式下队列耗尽时,按模式补充新曲目并继续;补充时过滤掉当前不可播的曲目,避免插队即卡。
结果
队列自动延长,播放不中断;"不喜欢"记录到该来源的偏好,并影响后续挑选。
异常
补充连续失败:保持当前队列并置为停止,附错误说明,不进入无限重试。
FR-10跨来源混排队列P0

队列条目各自携带来源,同一队列内可同时包含多个在线来源与本地库曲目;某一条目不可播时,仅跳过该条目,不改变其余条目的顺序。

5.3 歌词与评论

FR-11歌词三种形态P0
处理规则
提供时间轴歌词、翻译歌词与逐字歌词;调用方可任选其一或全部;本地曲目优先读取同目录同名歌词文件。
结果
快照同时给出"当前歌词行",供接入端直接展示;无歌词时返回空而不报错。
异常
来源暂无该曲目歌词:返回空集合,不编造内容。
FR-12评论浏览P0
处理规则
首屏按热度排序,其后按时间排序;可按曲目、节目、歌单或话题检索;分页返回。
异常
目标无评论:返回空页并给出零计数。

5.4 发现与推荐

FR-13发现页卡片P0
卡片内容前置条件
每日推荐按日期生成的曲目集合需登录
推荐歌单与口味相关的歌单集合需登录
精选编辑精选的歌单集合无需登录
榜单按热度排序的榜单元数据无需登录
最近播放最近播放曲目需登录

未满足前置条件的卡片返回空集合并说明原因,不隐藏入口。

FR-14个人电台三档P0
档位
默认(按整体口味)、熟悉(贴近常听)、探索(扩大尝试范围)。
规则
一次返回若干曲目,作为队列或续播补充;连续两次拿不到可播曲目时停止补充并说明。
FR-15心动模式P0

以用户收藏歌单为种子、以当前曲目为起点生成连续曲目;种子歌单编号随会话保存,重启后仍可续播。

FR-16收藏与歌单管理P1

当前版本对收藏与歌单写入返回"尚未开放"的明确说明;读取路径已具备,写入将在后续版本提供。

5.5 音质与音效

FR-17音质档位P0
档位
标准、较高、极高、无损,按来源实际提供的最高档向下兼容。
规则
请求档位高于来源能力时自动降到该来源最高档;本地曲目按文件本身规格播放,不做转码。
结果
快照显示实际生效档位,调用方可判断是否降级。
FR-18音效处理P0
能力作用默认
均衡器预设按预设曲线调整频段增益,可保存、可删除、同名覆盖未启用
夜间模式压低低频与峰值,适合安静环境关闭
增强提升细节与临场感关闭
响度均衡让不同曲目的听感音量趋于一致开启
增益整体升降电平0

音效偏好随会话保存,切换曲目与重启后保持;任一音效关闭时,对应处理立即停止而不影响播放连续性。

5.6 本地音乐库

FR-19目录登记与索引P0

触发:用户把某个绝对路径目录交给中枢,或要求移除、查看、重扫。

处理规则
登记后立即遍历该目录;仅收录受支持的音频文件;同一目录重复登记视为重扫;移除时连同其曲目一并从索引清除。
结果
返回登记后的曲目总数与目录清单(含每个目录当前贡献的曲目数)。
状态变化
索引写入本机;此后该来源的检索立即可命中。
异常
路径不存在或不可读:拒绝登记并说明;目录内个别文件读取失败:跳过该文件,不中断整体扫描;单目录无权限:跳过该目录,其余继续。
FR-20索引更新策略P0
增量规则
重扫时以文件大小与修改时间判定是否变化;未变化的文件跳过元数据读取,只保留原条目。
删除规则
重扫后不再存在的文件,其条目从索引移除,检索不再命中。
结果
一次重扫完成后返回最终曲目数,调用方可直接用于校验。
FR-21本地检索与播放P0
检索规则
在曲名、艺人、专辑与文件路径上做子串匹配,大小写不敏感;曲名命中的排序优先于只在路径命中。
播放规则
直接读取本机文件播放,不复制、不转码、不发起网络请求;同目录同名歌词文件自动加载。
异常
播放期间文件被移动或删除:本次播放按 6.1 失败处理,队列继续前进。

5.7 接入形态与多端共享

FR-22两种接入形态P0
形态适用能力边界
智能助手接入 在对话中完成检索、播放、调音效、看状态。 一次性暴露全部能力动作,助手按需调用;每次调用返回结构化结果。
命令行 脚本、快捷键、自动化流程。 子命令 + 交互模式;输出可直接被其他程序解析。

两种形态共用同一套能力定义与同一份播放会话,行为一致,不出现"命令行能播、助手不能播"的差异。

FR-23单一播放器与多端接入P0

背景:多个助手或终端可能同时连接,若各自启动播放器,会出现两路音频互相覆盖、队列互相清空。

处理规则
本机只允许一个进程持有播放引擎;后到者以客户端身份接入同一引擎,读写同一会话。
结果
任一端播放,其他端立即看到同一快照;不存在两个队列、两个音量。
异常
持有引擎的一方异常退出:下一次接入自动重新建立引擎,并从落盘会话恢复。
FR-24登录与会话维持P0
登录方式
扫码登录:先取二维码内容与轮询标识,再轮询登录进度,确认后会话保存到本机。
状态语义
过期 / 等待扫码 / 已扫码待确认 / 已确认,四种状态可区分。
游客模式
不登录也能使用部分来源的检索与播放;受限能力在检索阶段即标注,不等到播放才失败。
异常
会话过期:相关调用返回"需要重新登录"并指明下一步动作。

5.8 缓存与恢复

FR-25边播边缓存P0
规则
在线曲目边取流边播放,同时写入本机缓存;完整取回后保留,下次直接播放。
容量
缓存设总容量上限,超出时按最近播放时间由远及近淘汰;超过上限四分之一的单曲不入缓存。
隐私
缓存仅存于本机;本地库文件不复制进缓存。
异常
磁盘写入失败:本次播放改为纯内存进行,播放不中断,仅失去缓存收益。
FR-26播放恢复P0
落盘时机
播放状态发生变化后延迟数秒合并写入,避免频繁写盘;退出时再写一次。
恢复结果
下次启动按上次的队列、序号、循环、随机、音量、电台与种子歌单恢复,处于暂停状态,等待用户继续。
异常
恢复时某曲目已不可用:该条目标记为不可播,播放时自动跳过,不影响其余曲目。
FR-27停止与清理P0

停止播放保留队列与序号,仅结束发声;清空队列后快照回到空闲。用户主动清理缓存不影响队列与索引。

06

共享规则与异常处理 只在这里定义一次,各功能引用

6.1 可播性与自动跳过

规则 R1:队列中每一条目在加载时判定可播性。不可播(版权受限、需付费、来源已下架、文件已删除、取流失败、长时间无数据)时, 记录原因、不打断其余队列,自动前进到下一条;若队列中已无可播条目,则置为停止并保留错误说明,不做无限重试。

该规则覆盖在线取流与本地文件两种来源,是"播放不中断"的唯一依据。

6.2 无响应阈值

规则 R2:取流阶段若在 15 秒内没有收到任何数据,视为该条目失败并转入 R1;加载期间状态保持"加载",但不进入无限等待。

6.3 队列与序号

规则 R3:队列是有序且可重复的集合;同一曲目可出现多次,各次独立计序。切歌只移动序号,不改写队列内容;建立新队列才替换旧队列。

6.4 会话一致性

规则 R4:所有接入端读写同一份会话;任一端写入后,其余端的下一次快照即反映该变化。不存在"每端一份音量"或"每端一个队列"。

6.5 失败与恢复对照

情形用户可见表现系统行为恢复方式
曲目不可播 当前曲目短暂显示加载后切到下一首 记录原因并跳过(R1) 无需操作
取流长时间无数据 加载状态在约 15 秒内结束 判定失败并跳过(R2) 无需操作
整条队列都不可播 停止并显示原因 停止补充,不重试 换队列或稍后重试
来源未登录 检索结果为空或受限项标注 不发起需要登录的请求 完成扫码登录
登录会话过期 调用返回"需要重新登录" 保留其余来源可用 重新扫码
本地文件被移动或删除 播放中断后自动下一首 索引在下次重扫时剔除 重扫或重新登记目录
引擎进程异常退出 下次连接从暂停态恢复 按落盘会话重建 继续播放即可
磁盘写入失败 播放继续,无缓存收益 转为内存播放(FR-25) 释放磁盘空间后自动恢复缓存
07

非功能需求 可感受的体验下限,不含实现细节

维度要求
响应 检索、详情与播放控制类操作返回时间不随本地库规模线性恶化;本地库一千条量级时,一次检索在可感知的即时范围内返回。
启动 接入端首次连接即可用,无需额外服务端账号;无播放任务时保持空闲不占音频设备。
稳定性 单条曲目失败不影响队列其余条目;任一控制命令可在队列为空、加载中、停止等状态下安全返回。
数据归属 播放会话、索引、缓存、音效偏好全部保存在用户本机;除向用户指定的内容来源请求内容外,不向第三方传输播放数据。
隐私 不在本机长期保存平台密码;登录凭据仅在用户主动登录后按来源保存,可随时清除。
兼容 同一份能力定义在两种接入形态下语义一致;返回结构稳定,新增字段不影响既有调用方。
可维护 每个能力有稳定名称与明确输入输出;错误信息包含可执行的动作提示(如"需要登录""换一个来源")。
合规 产品仅做在线取流播放与本机文件读取,不提供内容下载、转存或再分发能力;内容版权由各来源自身提供与授权。
08

待定事项 对外发布前需要明确,不影响当前能力使用

编号事项影响
Q1本地库规模上限与推荐存储策略(当前以文件式索引为主,十万条以上是否切换存储方式)大规模用户的检索速度
Q2目录变更是否提供实时感知,还是维持"手动重扫"语义本地库使用成本
Q3收藏、歌单写入、场景模式的上线节奏完整度与用户预期
Q4除现有格式外,本地库还需支持哪些音频封装本地库覆盖范围
Q5对外发布版是否需要附带可交互演示页宣传材料形态
合规声明
本文档描述能力与行为,不构成对任何第三方内容的授权、代理或替代。所有在线内容的可用性、地域限制与账号权益,均以对应内容来源自身的规则为准; 用户在本地库中播放的文件,其来源与授权由用户自行确保。