dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
Web 界面里的悬浮音频控制面板:控制 Windows 媒体会话(SMTC)的播放/暂停/上一首/下一首与系统主音量/静音,由注册路由的主机半调用 PowerShell 助手实现。
在 DeepSeek Harness 的 Web 界面里直接控制电脑音频 —— 播放 / 暂停 / 上一首 / 下一首 / 音量 / 静音。
不用切窗口、不用摸媒体键:右下角悬浮一个控制面板,浏览器里就能遥控本机正在播放的音乐。
这是一个 DSH profile bundle,安装后自动挂载(自带组合补丁,无需手改配置):
dsh plugin --profile web add git+https://github.com/Li-Mingshuang/dsh-audio-control.git
重启 Web GUI 后,右下角出现 🎵 面板。
前提:运行 Web GUI 的机器是 Windows,且有 PowerShell(
powershell.exe即可,不要求 pwsh)。
把仓库放到任意目录,然后在 $DSH_HOME/profiles/web/package.json 里加:
{
"dependencies": {
"dsh-audio-control": "link:C:/path/to/dsh-audio-control"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-audio-control"]
}
}
}
然后 pnpm install --offline --dir $DSH_HOME/profiles/web 并重启 GUI。
面板上每个媒体会话一行:
| 按钮 | 作用 |
|---|---|
| ⏮ | 上一首 |
| ▶ / ⏸ | 播放 / 暂停(显式指令,不会因状态不同步而误触发) |
| ⏭ | 下一首 |
| 🔊 / 🔇 | 静音开关 |
| 滑条 | 系统主音量(0–100%) |
| 标题栏 🎵 圆钮 | 收起 / 展开面板 |
浏览器面板 (React,轮询 /audio-control/sessions)
│ fetch(/audio-control/command | volume | mute)
▼
DSH 主机半 (Node,Cordis 插件注册 webserver 命名路由)
│ spawn powershell.exe
▼
PowerShell 助手 → Windows SMTC(播放控制) + IAudioEndpointVolume(音量/静音)
lib/index.js):在 Web GUI 的 webserver 上注册 /audio-control/* 路由,
每次调用跑一个动作驱动的 PowerShell 脚本,返回 JSONlib/client.js):React 浮动面板,2.5 秒轮询一次状态路由一览:
| 方法 | 路径 | 请求体 | 作用 |
|---|---|---|---|
| GET | /audio-control/sessions | — | { ok, sessions[], volume, muted, active } |
| POST | /audio-control/command | { action, app? } | play / pause / toggle / next / prev |
| POST | /audio-control/volume | { value: 0..1 } | 设置主音量 |
| POST | /audio-control/mute | { muted? } | 设置 / 切换静音 |
中文:DSH 插件、DeepSeek Harness 插件、网页控制电脑音频、浏览器控制音量、音频控制面板、 多媒体播放控制、网易云音乐 远程控制、播放暂停 网页按钮、系统音量 网页滑条、Windows 音频控制、 SMTC 媒体会话控制、DSH 客户端插件示例、插件热更新示例
English: dsh plugin, deepseek harness plugin, control windows audio from browser, media session control, SMTC, system volume control web ui, play pause next track from web, netease cloud music remote control, floating audio control panel, cordis plugin example, hot reload client plugin, react web plugin for audio
lib/ 是构建产物(已提交,安装即用);src/ 是源码参考。
重新构建需要 DeepSeek Harness 源码工作区(打包预设在其中),流程:
# 在 harness 工作区中(源码位于 packages/client/ui-audio-control)
tsc -b packages/client/ui-audio-control
tsdown --env.DSH_BUILD_FACE client
src/client/*)在开发链路下会被 DSH 的 client-hmr 自动热重载(浏览器无需刷新)