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

代理状态音轨 yangyue1974/dsh-plugin-audiolib

DeepSeek Harnessv0.2.0
yangyue197481 天前有提交已提供中文文档扫描:含敏感能力需联网ui

按 agent 工作状态自动播放 AudioLib 曲库音乐

31.7/100
综合分
3
GitHub 星标
41
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-audiolib
npm 源 · dsh-plugin-audiolib 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]✓
静态安装检查通过
未做真实安装
L4 · 真实安装等级说明 →
数据截至 2026/10/28·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 81 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-plugin-audiolib @ 0.2.0
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 15:48:18

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
  • 发起网络请求
    lib/index.js:90
    async fetch(library, signal) {
  • 发起网络请求
    lib/index.js:187
    return { library, startsAt: soundtrack.request(library) };
  • 发起网络请求
    lib/ambient.js:306
    const track = await this.#options.source.fetch(library, signal);
  • 执行外部命令来自配置/变量
    lib/player.js:53
    return binary => spawnSync(locator, [binary], { stdio: 'ignore' }).status === 0;
  • 发起网络请求
    lib/player.js:86
    const response = await fetch(url, { signal });
  • 删除本地文件递归
    lib/player.js:92
    const dispose = () => rm(directory, { recursive: true, force: true });
  • 写入本地文件
    lib/player.js:94
    await pipeline(Readable.fromWeb(response.body), createWriteStream(file), { signal });
  • 执行外部命令来自配置/变量
    lib/player.js:137
    const child = spawn(binary, rest, { stdio: 'ignore' });
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

⚠ 该插件运行需访问外部网络 / 远程 API,部署在国内无外网环境时可能无法正常使用。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-credentials@deepseek-ai/dsh-session@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 按代理状态播放音乐
  • 接入曲库音轨
  • 状态切换不中断音轨

由代理状态驱动的DeepSeek Harness的安眠音轨. 从AudioLib.ai流出100k+清除的音轨——一条音轨总是会完成,所以州变永远不会切断一条音轨.

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-audiolib npm ci license 给 DeepSeek Harness 的环境音轨插件:音乐由 agent 自己的状态驱动,曲库来自 AudioLib.ai——10 万首以上全版权清理的原创曲目,一次 API 调用换一首完整曲子。 agent 需要的状态信号本来就在会话事件流里:一个 turn 打开,说明它在干活;所有 turn 关闭,房间安静下来。这个插件把那条事件流变成声音。 状态变化永远不打断正在播的曲子。 turn 的开合远比一首歌短,中途切歌听起来是噪音而不是反馈。曲子放完那一刻你处于什么状态,才决定下一首放什么。只有显式的 music_stop 会立刻停——要安静就得立刻安静。 安装 如果你是用 npx @deepseek-ai/dsh web 装的 DSH——不装全局包,CLI 就活在 profile 里——那 dsh 根本不在 PATH 上,直接敲 dsh 只会得到 command not found。改用 npx 调用它,并且先启用 pnpm:DSH 用 pnpm 管理 profile 插件,没装就直接拒绝。
展开完整文档(README 剩余 1 节)
dsh-plugin-audiolib

npm
ci
license

给 DeepSeek Harness 的环境音轨插件:音乐由 agent 自己的状态驱动,曲库来自 AudioLib.ai——10 万首以上全版权清理的原创曲目,一次 API 调用换一首完整曲子。

agent 需要的状态信号本来就在会话事件流里:一个 turn 打开,说明它在干活;所有 turn 关闭,房间安静下来。这个插件把那条事件流变成声音。

状态变化永远不打断正在播的曲子。 turn 的开合远比一首歌短,中途切歌听起来是噪音而不是反馈。曲子放完那一刻你处于什么状态,才决定下一首放什么。只有显式的 music_stop 会立刻停——要安静就得立刻安静。

安装

如果你是用 npx @deepseek-ai/dsh web 装的 DSH——不装全局包,CLI 就活在 profile 里——那 dsh 根本不在 PATH 上,直接敲 dsh 只会得到 command not found。改用 npx 调用它,并且先启用 pnpm:DSH 用 pnpm 管理 profile 插件,没装就直接拒绝。

corepack enable pnpm
npx @deepseek-ai/dsh plugin --profile web add dsh-plugin-audiolib

corepack 随 Node 自带,这一步不会引入任何第三方全局安装,corepack disable pnpm 也能随时撤销。要是你的 PATH 上本来就有 dsh,直接 dsh plugin --profile web add dsh-plugin-audiolib 效果一样。

重启——npx @deepseek-ai/dsh web——之后打开 设置 → 插件 → 插件配置,在 AudioLib 环境音轨 卡片里粘贴密钥,保存即可——密钥存进 DSH 的凭据库(~/.dsh/.credentials.yaml,权限 600),不进任何配置文件,也不用重启。

密钥在 audiolib.ai 获取,免费额度每月 300 次。

不想用界面的话,环境变量同样有效:

export AUDIOLIB_API_KEY=alp_your_key

播放

曲子是流式播放的:缓冲到第一批字节就出声,这也是 AudioLib 的 URL 本来的用法。这需要一个能直接吃 URL 的播放器——mpv 或 ffplay,装哪个都行:

brew install mpv # 或:apt install mpv

都没有时,插件回落到 macOS 自带的 afplay。它只能读本地文件,于是插件会提前把整首下载下来——能用,但每首要花掉几 MB,中途换曲库时还会卡住等下载。建议装一个流式播放器。

配置

在 profile 的 cordis.patch.yml 里按 id 覆盖这一行:

- id: audiolib
name: dsh-plugin-audiolib
config:
workingLibrary: audio.focus
idleLibrary: audio.ambient

| 字段 | 默认值 | 含义 |
| apiKeyRef | AUDIOLIB_API_KEY | 存放密钥的凭据名——只是引用,密钥本身不写在这里 |
| baseUrl | https://api.audiolib.ai/v1/audio | 音频接口地址 |
| ambient | true | 是否让会话事件驱动音轨 |
| workingLibrary | audio.focus | turn 打开期间播放的曲库;'' 表示静音 |
| idleLibrary | '' | 所有 turn 关闭后播放的曲库;'' 表示静音 |
| exposeTools | true | 是否把 music_play / music_stop / music_status 给模型 |
| playerCommand | [] | 播放器 argv;留空自动选。{url} 声明流式播放器,{file} 声明只读本地文件的 |
| requestTimeoutMs | 15000 | AudioLib 请求超时 |

曲库共 25 个——audio.focus、audio.ambient、audio.cinematic、audio.jazz、audio.classical、audio.sleep、audio.meditation、audio.workout、audio.electronic 等。API 认的 id 都能用;完整列表在 src/libraries.ts,也写进了 music_play 的工具描述。

工具

- music_play(library) — 让模型给自己的工作配乐。在下一个接缝处生效;当前没有播放时立即开始。
- music_stop() — 立刻停止,并保持静音直到再次调用 music_play。
- music_status() — 报告正在播放的曲目,以及 AudioLib 的套餐、剩余调用次数和速率上限。配额搭在每次取曲的响应里返回,所以这个查询不花调用额度。

两者都是 ctx.tools 上的普通注册,因此在 Code Mode 里也能直接 await tools.music_play({ library })。

music_play 选的曲库只活到这段工作结束:最后一个 turn 关闭时,音轨回到 idleLibrary。明确选的曲库,是为它配的那段工作而选的。

请求失败时,瞬时原因——网络、5xx、超时、速率限制——会退避重试且不设上限,音乐自己接上。密钥错误、额度耗尽、播放器缺失、响应读不了则转为暂停;music_status 会说是哪一种,其中额度暂停在周期翻转后自行解除。

实现方式

| 部分 | 扩展点 |
| 状态跟踪 | ctx.on('session/event') — 按会话计数 turn/start / turn/end |
| 模型控制 | ctx.tools.register(),原始 JSON Schema 定义 |
| 卸载清理 | ctx.effect() — 插件卸载即杀掉播放器并删除全部临时文件 |

playerCommand 里的占位符决定播放模式。{url} 把 AudioLib 的 URL 直接交给播放器,边播边缓冲——不落盘,API 一返回就出声。{file} 表示播放器不能流式,插件才会先把曲子下载到私有临时目录,播完删除。

两种模式都会提前取好下一首:插件加载时取一首,让第一个 turn 一开就有声;每首开始播时再取下一首,接缝处没有空隙。AudioLib 调用很便宜,因状态变化被丢弃的预取不值得优化。

开发

npm install
npm run build

不安装、直接把源码 checkout 挂进运行中的 harness:

audiolib.overlay.yml
- insert:
- id: audiolib
name: '/absolute/path/to/dsh-plugin-audiolib/lib/index.js'
config:
workingLibrary: audio.focus

dsh web --patch ./audiolib.overlay.yml

许可

MIT
预览分享卡片长什么样 ↓yangyue1974/dsh-plugin-audiolib
分享 · DeepSeek Harness Hub
yangyue1974/dsh-plugin-audiolib

按 agent 工作状态自动播放 AudioLib 曲库音乐

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部