🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

音乐DJ klT45/dsh-music-dj

DeepSeek Harness
klT4513 天前有提交已提供中文文档扫描:含敏感能力

说一句话就能搜歌切歌,遥控本机洛雪播放

29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add klT45/dsh-music-dj
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 13 条)
  • 发起网络请求
    client.js:75
    const response = await fetch(path, { ...init, cache: 'no-store' })
  • 读取本地文件
    lib/config.mjs:86
    const raw = JSON.parse(readFileSync(path, 'utf8'))
  • 写入本地文件
    lib/config.mjs:95
    mkdirSync(dirname(path), { recursive: true })
  • 写入本地文件
    lib/config.mjs:97
    writeFileSync(tmp, JSON.stringify(merged, null, 2) + '\n', 'utf8')
  • 写入本地文件
    lib/config.mjs:98
    renameSync(tmp, path)
  • 删除本地文件
    lib/config.mjs:142
    unlinkSync(path)
  • 读取本地文件
    lib/lx.mjs:78
    if (existsSync(path)) return path
  • 发起网络请求
    lib/lx.mjs:105
    const response = await fetch(this.base + path, {
  • 发起网络请求
    lib/lx.mjs:128
    const result = await this.request('/status', { timeout })
  • 发起网络请求
    lib/lx.mjs:135
    const result = await this.request('/lyric-all', { timeout: 2500 })
  • 发起网络请求
    lib/lx.mjs:150
    if (map[action]) return this.request(map[action])
  • 发起网络请求
    lib/lx.mjs:155
    return this.request('/seek?offset=' + Math.floor(offset))
  • 发起网络请求
    lib/lx.mjs:160
    return this.request('/volume?volume=' + Math.max(0, Math.min(100, Math.floor(volume))))
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 AI DJ:一句话生成一首歌;通过本地 LX Music 实例搜索并切换曲目(不内置音源)。

README

由 DeepSeek 最新模型翻译生成
音乐 DJ(dsh-music-dj) 把 DeepSeek Harness 的对话接成一台 AI DJ:说一句「来点适合写代码的」或「放首晴天」,DSH 就会自己搜歌、自己切歌。 本插件不含任何音源、不下载音频、不分发音源脚本。 它只负责「把话变成检索词」和「遥控播放器」;真正的音源与播放都在你本机的 LX Music(洛雪音乐助手) 里。 它解决的问题 | 普通音乐插件 | 音乐 DJ | | 需要你自己维护曲库(下载/整理/索引) | 不需要,音源由洛雪提供 | | 模型只能「播放/暂停/下一首」 | 模型能理解意图:场景、情绪、具体歌曲 | | 插件里塞解码器、代理、歌词、媒体键 | 全部交给洛雪,插件本体只有几十 KB | | 切歌要你开口 | 开了 DJ 模式,模型会在合适的时候自己换歌 | 搭配要求(重要) 插件本身不能放歌。
展开完整文档(README 剩余 1 节)
音乐 DJ(dsh-music-dj)

把 DeepSeek Harness 的对话接成一台 AI DJ:说一句「来点适合写代码的」或「放首晴天」,DSH 就会自己搜歌、自己切歌。

本插件不含任何音源、不下载音频、不分发音源脚本。
它只负责「把话变成检索词」和「遥控播放器」;真正的音源与播放都在你本机的 LX Music(洛雪音乐助手) 里。

它解决的问题

| 普通音乐插件 | 音乐 DJ |
| 需要你自己维护曲库(下载/整理/索引) | 不需要,音源由洛雪提供 |
| 模型只能「播放/暂停/下一首」 | 模型能理解意图:场景、情绪、具体歌曲 |
| 插件里塞解码器、代理、歌词、媒体键 | 全部交给洛雪,插件本体只有几十 KB |
| 切歌要你开口 | 开了 DJ 模式,模型会在合适的时候自己换歌 |

搭配要求(重要)

插件本身不能放歌。第一次使用请按下面四步准备,只需一次:

1. 安装 LX Music 桌面版 ≥ 2.8(建议 ≥ 2.12,支持 -hidden 托盘启动):GitHub Releases
2. 打开洛雪 →「设置 → 自定义源」→ 导入一个可用的自定义音源(洛雪 2023 年起不再内置音源,自行选择社区源;插件不提供、不分发)
3. 打开洛雪 →「设置 → 开放 API」→ 启用(默认端口 23330,只监听 127.0.0.1)
4. 在 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 说:

- 「来点适合写代码的」→ 按场景词搜索并播放
- 「放首周杰伦的晴天」→ 精确点歌(会校验播的确实是这首)
- 「换首更安静的」→ 叠加意图重新找
- 「声音小一点」「暂停一下」「下一首」→ 控制
- 「现在放的什么」→ 读取真实状态

模型拿到的三个工具

| 工具 | 作用 |
| music_play | 点歌/找歌播放:intent(场景)、query(检索词)、title+artist(精确点歌) |
| music_control | play/pause/toggle/next/prev/seek/volume/mute/collect/uncollect |
| music_status | 连接诊断 + 当前播放 + 最近错误 |

所有工具都返回回读校验后的真实结果:成功了告诉你实际在放什么,失败告诉你试过哪些检索词、大概率是哪个环节坏了。

工作原理(为什么可靠)

洛雪的协议有个现实约束:开放 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(Scheme URL 分别走 cmd start / open / xdg-open)。

设置项

配置文件:~/.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。

合规声明

- 插件不内置、不分发任何音源,也不下载、不转存任何音频;所有播放行为发生在用户本机的洛雪中,音源由用户自行安装的第三方脚本提供。
- 洛雪是 Apache-2.0 + 补充协议 授权的第三方软件;本插件只调用其公开文档化的本地接口,不包含其代码。
- 请遵守各音乐平台的用户协议与版权规定;本插件不提供任何绕过付费/会员/版权保护的能力。

开发

node --test test/*.test.mjs # 纯函数单测(意图映射 / 播放校验 / 配置 / Scheme URL)

index.js Host:工具、动态上下文、事件、/music-dj-api client.js Client:迷你播放条 + 设置页 lib/config.mjs 配置读写 + 默认场景表 lib/intent.mjs 意图 → 检索词;播放是否成功的判定(纯函数) lib/lx.mjs 洛雪引擎适配器(HTTP + Scheme URL) test/ node:test 单测 DESIGN.md 设计文档与取舍记录

Roadmap

- [ ] v0.2:SSE /subscribe-player-status 实时同步(曲末自动续播不再依赖轮询)
- [ ] v0.2:music_queue 工具(AI 队列:一次排 5 首,曲末自动下一条)
- [ ] v0.3:第二个引擎适配器(mpv + yt-dlp,不装洛雪也能用)
- [ ] v0.3:音源健康检查(记住哪些场景词最近失败过,自动跳过)
- [ ] 持续:Windows 之外的平台实测(-hidden、Scheme 注册)

License

MIT
预览分享卡片长什么样 ↓klT45/dsh-music-dj
分享 · DeepSeek Harness Hub
klT45/dsh-music-dj

说一句话就能搜歌切歌,遥控本机洛雪播放

这是你的仓库?认领条目

回到顶部