前言¶
DeepSeek Harness(DSH)把 LLM 对话能力开放给插件,让模型不仅能查资料、写代码,还能控制外部工具。对于需要「持续伴随」或「场景化控制」的工具,传统做法往往要自己维护状态、处理协议、处理播放器。本文介绍的 dsh-music-dj 插件,把 DSH 的对话变成一台「AI DJ」,让模型理解场景和意图,驱动本机的 LX Music 完成搜索与播放,自己搜歌、自己切歌。
是什么¶
- 名称:dsh-music-dj
- 维护者:klT45
- 分类:模型推理
- 定位:AI DJ for DeepSeek Harness:把一句自然语言变成检索词,通过 LX Music 完成搜索与播放,插件本身不含音源、不下载音频。
它解决的是「音乐播放的意图理解与自动化」问题:普通音乐插件只能执行播放/暂停/下一首等简单指令,而 dsh-music-dj 让模型理解「写代码时放点 lofi」「放首晴天」「换首更安静的」这类意图,并自动生成检索词、尝试播放、校验结果。
核心功能¶
工具接口¶
插件向模型暴露三个工具:
music_play:点歌/找歌播放。参数包括intent(场景)、query(检索词)、title+artist(精确点歌)。music_control:控制播放,支持play/pause/toggle/next/prev/seek/volume/mute/collect/uncollect。music_status:连接诊断 + 当前播放 + 最近错误。
所有工具返回「回读校验后的真实结果」:成功了告诉你实际在放什么,失败告诉你试过哪些检索词、大概率是哪个环节出了问题。
场景与精确点歌¶
- 场景点歌:模型调用
music_play(intent="写代码")时,插件会按配置的scenes表把意图映射成检索词序列(如「lofi 纯音乐」「轻音乐 工作」「study lofi」),逐条尝试搜索并播放。 - 精确点歌:提供
title+artist,插件会校验播放的实际歌名与歌手是否匹配。
自动续播与冷却¶
- 开启 DJ 模式后,插件会在每轮对话结束、超过冷却时间、且音乐已暂停时才自动续播,不打断正在听的歌。
- 默认
dj.enabled: false,不主动打扰。
多标签单实例与多平台¶
- 播放状态由 LX Music 维护,DSH 开多个标签页不会重复出声。
- 支持 Windows / macOS / Linux,通过 Scheme URL 调起播放器。
搭配要求¶
插件本身不提供音源,必须先准备 LX Music。
- 安装 LX Music 桌面版 ≥ 2.8(建议 ≥ 2.12,支持
-hidden托盘启动)。 - 打开洛雪 →「设置 → 自定义源」→ 导入一个可用的自定义音源(洛雪 2023 年起不再内置音源,需自行选择社区源)。
- 打开洛雪 →「设置 → 开放 API」→ 启用(默认端口
23330,只监听127.0.0.1)。 - 在 DSH 里打开「设置 → 音乐 DJ」→ 点「检测连接」,看到「已连接」即可。
音源会失效,点歌失败时会明确提示「没确认播放成功」,换源后重试。
安装与启用¶
插件市场:在 DSH 插件市场搜索「音乐 DJ / dsh-music-dj」安装(推荐)。
命令行:dsh plugin add dsh-music-dj(前提是 CLI 可用;本插件声明了 dsh.bundle,可被 dsh plugin add 安装)。
本地开发:把本仓库克隆到任意目录,在 profile 的 cordis.patch.yml 里 insert 一条:
- insert:
- id: dsh-music-dj
name: dsh-music-dj
安装后,在 DSH 设置里找到「音乐 DJ」,启用并检测连接。
配置¶
配置文件:~/.dsh/dsh-music-dj.json(人类可编辑,改完重启 DSH 生效)。
{
"engine": "lx",
"lx": { "apiPort": 23330, "exe": "" },
"dj": { "enabled": false, "cooldownMin": 10, "autoNext": false },
"scenes": {
"写代码": ["lofi 纯音乐", "轻音乐 工作", "study lofi"],
"专注": ["专注 纯音乐", "钢琴 纯音乐"],
"放松": ["轻松 纯音乐", "轻音乐 放松"]
}
}
scenes可随意添加或修改中文场景词,模型说「来点写代码的」时会按这里搜。dj.enabled默认关闭,想让它自己切歌再打开。- 端口不是
23330就改lx.apiPort;洛雪装在非默认路径就填lx.exe。
工作原理¶
洛雪的开放 API 能控制但没有搜索,搜歌只能通过 lxmusic://music/searchPlay/<检索词> 这类 Scheme URL,且「发出去就不管了」,没有回执。插件采用「双通道 + 回读校验」:
- 模型根据意图调用
music_play(intent="写代码")。 - 插件按场景词表生成检索词序列,如
["lofi 纯音乐", "轻音乐 工作", ...]。 - 逐条派发
lxmusic://music/searchPlay/<词>。 - 每 800ms 回读
http://127.0.0.1:23330/status,校验:在播 + 歌名变化/进度回零(精确点歌还要标题/歌手匹配)。 - 命中即停;3 次不对就换下一个词;全失败则如实报错。
额外做了这些:
- 动态上下文:把「正在播放」写进模型的系统上下文(一行,≤30 token),模型不用问就知道在放什么。
- 曲线事件:开启 DJ 模式后,每轮对话结束、超过冷却时间、且音乐已暂停时才自动续播。
- 多标签单实例:播放状态在洛雪里,DSH 开几个标签都不会重复出声。
- 多平台:Windows / macOS / Linux 分别通过
cmd start/open/xdg-open调起 Scheme URL。
合规声明¶
- 插件不内置、不分发任何音源,也不下载、不转存任何音频;所有播放行为发生在用户本机的 LX Music 中,音源由用户自行安装的第三方脚本提供。
- 洛雪是 Apache-2.0 + 补充协议授权的第三方软件;本插件只调用其公开文档化的本地接口,不包含其代码。
- 请遵守各音乐平台的用户协议与版权规定;本插件不提供任何绕过付费/会员/版权保护的能力。
生态背景¶
DeepSeek Harness 的理念是「一切皆插件」,社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。dsh-music-dj 是社区插件,维护者与贡献者自行负责。
短结尾¶
dsh-music-dj 让 DSH 对话接管本地音乐,把自然语言变成检索词与播放指令,配合回读校验保证结果可复现。适合需要「持续伴随」或「场景化播放」的开发者,安装前请检查源码与许可证。