心绪电台 / Mood radio
一个带左侧栏入口的 DSH 插件。打开它时,它会读取当前会话最近的消息,推断此刻的情绪,打开本机的网易云音乐(或 QQ 音乐 / Spotify),播放一首适合调节当下氛围的歌。
没有明显情绪信号时,它会按顺序退回到:
- 上一首歌的气质;
- 你的历史收听与「喜欢 / 跳过」反馈形成的偏好;
- 当前时间(凌晨 / 清晨 / 工作时段 / 夜晚)。
用法
- 左侧栏「心绪电台」图标 → 打开面板。首次打开(或上次选择超过 6 小时)会自动选歌;6 小时内再次打开会停在上次选好的歌,不会自动切歌。
- 面板里可以「重新播放」「换一首」「安静一点」;只有这些操作才会主动切歌。
- 情绪分析优先调用当前 DSH 模型,把最近真实用户发言总结成一句情绪判断,再按结果选歌;同一轮对话的分析缓存 10 分钟,避免反复调用模型。
- 模型还会提取你明确谈到的具体对象:动漫/电影/游戏、事件、地点、活动。比如聊到「进击的巨人」,会先搜相关主题曲;聊到「毕业论文」「生日」,会用对应主题词找歌。泛泛的「动漫」「音乐」「事情」,以及技术/产品/插件/仓库/路径这类词,不会被当成话题。
- 话题歌曲最多 3 首,随后补 2 首公开歌单里的「新发现」,剩余位置再用曲库补齐;话题搜索失败或没有具体对象时,就由「新发现 + 情绪画像」接手。话题搜索结果缓存 12 小时。
- 连续批次会避开最近 12 首,同一批里尽量不重复同一位歌手;即使一直处在同一种情绪,也会在 42 首目录里轮换,并用时间种子做小幅随机,不会固定成同一组五首。
- 没有具体话题时,也会先从曲库外的公开歌单里随机捞 2 首「新发现」,再用曲库补足 5 首;只有歌单请求失败才完全回退到曲库。卡片上会标出「曲库 / 话题 / 新发现」,能直接看出这首是不是兜底。
- 面板顶部有「在对话中采集情绪」开关。开启后,电台会按队列时长在歌曲快结束前自动分析并补下一批;关闭后只在你点按钮时播放。
- 采集开关旁有「自动补歌」小开关;关掉后当前队列播完就停,不会再自动续。
- 非会员的 VIP 歌曲按 30 秒试听参与时长计算;一批试听按顺序播完并暂停时,会尝试补下一批。
- 你在对话里直接说「好烦 / 累 / 难受 / 开心」等明显情绪时,开启采集的情况下会记入本轮情绪窗口,补歌时统一分析;不会为了这一句话硬切当前歌曲。
- 每批会排 5 首同氛围的歌进网易云队列,补歌用追加方式接到队尾,播完自动续;每批排过的歌都会记入近期列表,避免下一批原样重来。
- 面板每 5 秒读取当前实际播放曲目,队列自动切歌或手动下一首后,标题、歌手和队列数量会同步更新。
- 点「喜欢 / 跳过」会写入本机的小型收听日记,下一次选歌会参考。
- 情绪只在 DSH Host 本机分析,不上传;歌曲通过现代桌面客户端的
orpheus://<base64>指令({"type":"song","id":"...","cmd":"play"})交给网易云桌面客户端。 - 非黑胶会员播放 VIP 歌曲时,网易云会进入 30 秒试听;面板会提前标注这一点。
安装
从 GitHub 安装:
dsh plugin add -w github:SAI-h/dsh-mood-dj
也可以把本目录交给 DSH 的 plugin_manager 安装。
本目录就是一个 bundle:package.json 声明 dsh.bundle.patch 和 dsh.client,cordis.patch.yml 插入 mood-dj 行。
后台切歌
Windows 上优先使用网易云桌面客户端的本地 Chromium 控制通道:
- 客户端未运行时,插件用
--remote-debugging-address=127.0.0.1 --remote-debugging-port=9223启动它,再通过 CDP 在页面内派发playing/play; - 客户端已经带控制通道运行时,切歌只改变播放状态,窗口不会被带到前台;
- 如果客户端已经在运行、但没开控制通道,本次会回退到深链播放,面板出现「开启后台切歌」按钮;点一次会重启客户端并启用后台控制;
- 控制通道不可用时仍会回退到
orpheus://<base64>深链。
数据
收听日记默认保存在:
~/.dsh/mood-dj/state.json
可以用 MOOD_DJ_HOME 指到任意位置,例如:
MOOD_DJ_HOME=/path/to/dsh-save-place
只包含歌曲 id、标题、歌手、情绪标签、时间和反馈,不保存对话原文。插件不依赖仓库所在的本地路径。
关于 ncm-cli
可选的 @music163/ncm-cli 集成不随插件自动安装,也不要求固定目录。它适合搜索、歌单和 TUI;Windows 上它的 orpheus 播放器不可用,需要使用 mpv 后端,会是一个独立于官方客户端的播放器。
如果你本机想使用它,把命令里的 $NCM_CLI_HOME、$MPV_HOME 换成自己的安装目录:
ncm-cli --version
mpv --version
ncm-cli 的 player 设为 mpv,并确保 mpv 在 PATH 中。它和电台的后台切歌是两条独立路径:电台默认仍用官方客户端 + CDP,ncm-cli 由你手动使用。
API 私钥属于高敏感凭证,不写入插件、配置或日志。ncm-cli config set privateKey 请在你自己的终端里执行。
限制
- 精确到歌曲的自动播放依赖网易云桌面客户端注册的
orpheus:协议;其他客户端会尽量打开并提示手动确认。 - 情绪推断是本地可解释的关键词 / 标点 / 表情信号,不调用外部模型;它不会假装读懂反讽或非常隐晦的表达。
- 内置曲库是人工挑选的小型歌单,每首都有已验证的网易云歌曲 id,避免运行时搜索失败。
- 首次启用后台控制可能需要重启一次网易云客户端;之后切歌不再弹出窗口。
No comments yet. Be the first to write one.