← 返回列表
✓ 可直接安装
LX Music 增强控制插件 —— 为 deepseekharness
自动检查通过:npm 包已发布且 engines 声明满足基线;该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/11 · 已提供中文文档
这是一个插件,让 deepseek harness 拥有 lx music 的能力。
综合分
32.1
GitHub 分
32.1
用户评分
—
★ Stars
4
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add lx-music-for-dshnpm 包 lx-music-for-dsh 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包lx-music-for-dsh @ 1.0.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 01:13:00
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
lx-music-for-dsh
LX Music 增强控制插件 —— 为 deepseek_harness
Web 模式提供 LX Music 播放控制界面与 LLM 点歌能力。
功能
- 侧边栏迷你播放卡片(位于「设置」按钮上方):封面缩略图、歌名-歌手、可拖动/点击跳转的
进度条(与播放器双向同步)、上一首/播放暂停/下一首、播放模式切换按钮(列表循环/单曲循环/
随机/顺序,点击循环切换)、播放列表弹窗(内含四模式直接选择)、设置齿轮。
- 主窗口(点击卡片主体打开,可调大小、记忆位置):搜索(关键词/歌手/平台过滤)、
搜索结果(音质标识、时长、+队尾 / +下一首)、播放列表管理(拖拽排序、删除、清空、导出为文本,
播放模式分段按钮)。
- 播放模式:列表循环(默认,播完回第一首)/ 单曲循环(播完自动重播)/ 随机播放(不重复当前曲目)/
顺序播放(播完最后一首停止);host 侧权威状态,持久化,UI 与 LLM 工具共用。
- 设置窗口(点击齿轮打开):音源管理(文件/URL/粘贴导入并自动启用、启用/禁用/删除/排序)、
音质策略(全局默认音质、每音源平台优先级)、自动拉取规则(切歌自动最高音质、降级策略)。
- 细粒度 LLM 音乐工具集:music_search(搜索)/ music_play(播放)/ music_playlist
(播放列表管理)/ music_prev / music_next / music_control(暂停、音量、音质、播放模式等),
另保留兼容入口 search_and_play(一步点歌);内置滑动窗口防刷(默认 6 次/分钟)与带 action 的操作日志。
状态持久化(播放列表/音量/音质/播放模式/点歌日志/音源脚本)走 DSH storage domain
($DSH_HOME/storages/lx_music.json);storage domain 不可用时降级为内存 + 音源文件兜底,
并在启动日志与 stderr 明确告警。
架构
- 完全独立:搜索由内置音乐 SDK 提供(移植自 lx-music-desktop,酷我/酷狗/QQ音乐/网易云/咪咕
五平台);直链解析由内置音源脚本引擎提供(子进程隔离执行 lx-music-desktop 音源脚本协议,
与 lx-music-desktop v2.12.2 一致——直链 100% 依赖音源脚本);播放为浏览器 HTML5 Audio。
无需任何外部服务即可使用。
- 安全模型:第三方音源脚本(不可信 JS)在独立子进程中执行(每个音源一个子进程),
宿主 DSH 进程只通过 IPC 与其交换 JSON 消息;子进程环境为白名单(不含任何 DSH 机密)、
网络请求带 SSRF 防护(默认拦截私网/回环/链路本地地址)、初始化/调用超时自动杀进程兜底。
脚本的任何故障——异常、逃逸尝试(如 Buffer.constructor('return process'))、死循环——
都被限制在子进程内,下一次调用自动重启,宿主进程不受影响。
- host(Node):PlaybackService(Typert Remote lxPlayback,播放权威状态 + 播放模式 + storage 持久化)、
细粒度音乐工具集(music_search/music_play/music_playlist/music_prev/music_next/music_control
及兼容 search_and_play)、内置 SDK 搜索、音源脚本子进程沙箱(导入/启用/排序/删除本地管理)、
可选 lxserver 客户端(超时 10s / 重试 2 次 / 音质与平台降级链)。
- client(浏览器):React UI(注入 sidebar.footer.action slot)+ HTML5 Audio 播放引擎,
轮询 host 状态(500ms)diff 应用,进度节流上报(1s)。
- provider 门面(providerMode):auto(默认,有地址用 lxserver 否则内置引擎)/ engine(强制内置引擎)/
lxserver(连接 lxserver 同步服务器)/ mock(内置演示数据,用于无网络演示)。
快速开始
npm install && node scripts/link-dsh.mjs # 镜像全局 DSH 运行时(版本不一致会自动刷新)
npm run lint && npm run typecheck && npm run build && npm test
可选:真实网络冒烟(五平台搜索)
node scripts/compile-tests.mjs && node scripts/smoke-live.mjs
安装到 DSH(要求 @deepseek-ai/dsh ≥ 0.1.5-rc.1):
node scripts/install-to-dsh.mjs # 打包 + dsh plugin add + 旧版残留迁移校验
然后重启 dsh web 并刷新浏览器
插件包用 dsh.bundle.patch 声明为 profile 组合层,dsh plugin add 会自动激活,
无需手工编辑 profile 的 cordis.patch.yml。详见 docs/development.md(§6)。
端到端验证(真实浏览器,需要本机有 Chrome/Edge):
node scripts/browser-smoke.mjs "http://127.0.0.1:3099/?token="
直链解析失败排查
解析失败时错误会出现在三个位置:
1. 侧边栏卡片 / 主窗口:显示聚合后的错误摘要(含每个音源脚本的失败原因)。
2. 浏览器 Console:[lx-music] 直链解析失败: ...,包含完整错误消息与最近 5 条音源脚本 HTTP 请求(状态码:URL(耗时))。
3. 宿主进程 stdout(dsh web 所在终端):每个脚本的完整错误堆栈 + [lx-music sandbox] 音源脚本请求 HTTP : 非 2xx 告警。
按状态码判断根因:
- HTTP 403:第三方 API 拒绝(IP 封禁 / 风控 / UA 校验)——换网络或换音源。
- HTTP 503:第三方 API 不可用(onrender 免费实例休眠、配额耗尽或宕机)——重试或稍后再试;手机端能播多半是缓存了旧直链或使用了其他音源。
- timeout / ERR:网络不可达。
- HTTP 200 但仍报错:API 返回结构异常或脚本逻辑问题(可看宿主端脚本堆栈定位到具体行)。
音源健康检查:node scripts/compile-tests.mjs && node scripts/smoke-source.mjs [平台] [关键词]
文档
- 开发文档(调试/打包/安装/测试/验收)
目录
package.json npm 包 + dsh.bundle / dsh.client 声明
cordis.patch.yml 组合层 patch(dsh plugin add 后自动生效的插件行)
manifest.json 插件清单(元数据:入口、生命周期、工具、配置项)
src/index.ts host 入口
src/client.ts client 入口
src/ui/ React 组件
tests/ 单元测试(127 例)
docs/ 开发文档 / DSH 与 LX Music 研读笔记
版本兼容性
| 插件版本 | DSH 版本 |
|---|---|
| 1.0.1 | @deepseek-ai/dsh@0.1.5-rc.1(dsh.bundle 组合层,一条命令安装) |
| 1.0.0 | @deepseek-ai/dsh@0.1.0-rc.6(需手工写 profile patch 行) |
从 1.0.0 升级要处理两件事(第 2 件自动完成):
1. 删掉 profile cordis.patch.yml 里手工 insert 的 id: lx-music 行
(或用 scripts/install-to-dsh.mjs 自动迁移并备份),否则同一 id 会让 dsh 启动失败
(duplicate loader entry id: lx-music)。
2. 1.0.1 修好了 storage domain 的 schema:1.0.0 里它每次 open 都失败,插件静默降级为内存存储
—— 播放列表/设置/播放模式/日志都不落盘。修好后 domain 里的音源快照会比旧版兜底文件
$DSH_HOME/storages/lx-music-sources.json 更旧,插件会自动做一次非破坏性合并,并把该文件
改名为 .migrated-。
启动日志确认状态:[lx-music-for-dsh] 插件已加载,provider: engine,storage: durable
(storage: memory 表示持久化不可用)。细节见 docs/development.md §10。扫码进群