DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

leicanxi /

leicanxi/dsh-sing

Verified

DeepSeek Harness 唱歌插件:sing-gateway 点歌 + RVC 翻唱 + QQ 语音投递

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@4cecc935

dsh-sing

给 DeepSeek Harness 的唱歌插件:在 QQ 里点歌,由 sing-gateway 搜索歌曲、截取片段并用 RVC 音色翻唱,再把音频发回当前 QQ 会话。

和 AstrBot 版的 deepseek-sing 是同一件事,区别只在投递:AstrBot 插件有 event.send(Record(...)),DSH 没有平台中立的消息链,所以本插件带一层很薄的 投递适配器——优先语音,其次文件,最后回退链接。

QQ 用户
  ↕  qq-bridge / SnowLuma / NapCat / OneBot 通道插件
DeepSeek Harness Agent
  ↕  dsh-sing(本插件)
sing-gateway
  → Bilibili / NetEase 搜索下载 → ffmpeg 截取 → Replicate AICoverGen → 缓存

插件本身不碰 Replicate、音乐源或音色白名单;搜索、截取、翻唱、缓存全部在网关侧。

工具

工具 作用
sing_song 点歌并生成翻唱。正常点歌直接调用;插件会尝试把音频发到当前 QQ 会话。
confirm_song 重新确认是哪一首(免费,不生成音频)。只在用户说“唱错歌了/不是这首”时调用。
sing_status 查询未完成的异步任务;完成后自动投递。
list_voices 返回音色广场链接和用法;音色名不在接口里枚举。

模型侧看到的一次 sing_song 调用就完成了“生成 + 投递”,不需要额外再调一次发送工具。

安装

DSH 桌面端(设置 → 插件 → 添加插件)

输入本地绝对路径或打好的 tgz,不要直接输入 dsh-sing——这个包还没发布到 npm,按包名查 registry 会返回“未找到相关插件”。

D:/projects/dsh-sing/dsh-sing-0.1.0.tgz   ← 推荐
D:/projects/dsh-sing

优先用 tgz:目录安装通常是把源码目录 symlink 进 profile,会连带开发用的 node_modules/@deepseek-ai/dsh-tools(0.1.5)一起被 Node 解析到,可能和宿主的 0.2.x 重复。tgz 不含 node_modules,会正确使用宿主提供的 dsh-tools。如果一定要目录安装,先把项目里的 node_modules 删掉。

安装源 对本地路径 / tgz 不生效,保持 npm 官方源即可。安装完成后点「立即启用」,工具列表里应出现 4 个工具。

普通 DSH profile(非桌面端)

# 从 GitHub
dsh plugin --profile web add https://github.com/leicanxi/dsh-sing

# 从 npm(发布后)
dsh plugin --profile web add dsh-sing

# 或直接从本地目录 / 打好的 tgz
dsh plugin --profile web add /path/to/dsh-sing
dsh plugin --profile web add ./dsh-sing-0.1.0.tgz

desktop profile 由 Electron 桌面端独占管理,CLI 不能直接往里装;桌面端请用上面的 UI。

然后在 profile 的 cordis.patch.yml 里确认有:

- insert:
    - id: dsh-sing
      name: dsh-sing

重启 DSH 后,在设置 → 插件里应能看到 dsh-sing。

Android(dsha / DeepSeek Harness 手机版)

把本包放进 dshroot/lib/node_modules/@deepseek-ai/dsh/node_modules/dsh-sing/,在 @deepseek-ai/dsh 的 package.json dependencies 里声明 "dsh-sing": "0.1.0",再把 cordis.patch.yml 的 insert: 条目加进 profile 配置。dsh-patches/overlay/ + apply.sh 的做法与现有的 dsh-tool-* 插件一致。

本地开发

cd dsh-sing
npm install          # 只装 @deepseek-ai/dsh-tools(devDependency,用于测试)
npm test
npm run selftest
npm run pack:check

插件没有运行时依赖,只用 Node 内置模块和全局 fetch;要求 Node 20+。@deepseek-ai/dsh-tools 是 peerDependency,测试时由 devDependency 提供。

配置

优先读 $DSH_HOME/sing.json(默认 ~/.dsh/sing.json),也可以在本插件 cordis.patch.yml 的 config: 下覆盖,或使用环境变量。改完 sing.json 不需要重启,下一次工具调用会重新读取。

从示例开始:

mkdir -p "$DSH_HOME" && cp sing.example.json "$DSH_HOME/sing.json"
chmod 600 "$DSH_HOME/sing.json"

FlowBee 模式(推荐,免部署)

{
  "billing_mode": "flowbee",
  "flowbee_base_url": "https://flowbee.top/v1",
  "flowbee_api_key": "你的 FlowBee Key",
  "default_voice": "",
  "duration": 25,
  "start": 60,
  "pitch": 2,
  "pitch_mode": "no-change",
  "transport": "auto",
  "delivery": "auto"
}

按次计费到你的 FlowBee 账户,用你自己的 Key;插件不会使用运营方的 SING_GATEWAY_TOKEN。

自托管模式

{
  "billing_mode": "selfhosted",
  "gateway_base_url": "http://127.0.0.1:9001",
  "gateway_token": "SING_GATEWAY_TOKEN 的值"
}

gateway_base_url 写 http://host:9001 或 http://host:9001/v1 都可以;插件会自动剥掉 /v1 去访问 /sing/v1/jobs。

全部配置

键 环境变量 默认 说明
billing_mode SING_BILLING_MODE flowbee flowbee 或 selfhosted
flowbee_base_url SING_FLOWBEE_BASE_URL https://flowbee.top/v1 FlowBee 的 OpenAI 兼容地址
flowbee_api_key SING_FLOWBEE_API_KEY / FLOWBEE_API_KEY — 用户自己的 Key
gateway_base_url SING_GATEWAY_BASE_URL http://127.0.0.1:9001 自托管网关地址
gateway_token SING_GATEWAY_TOKEN — 自托管网关令牌
default_voice SING_VOICE — 默认音色名;留空用网关默认
start SING_START 60 截取起点(秒)
duration SING_DURATION 25 片段长度(秒)
pitch SING_PITCH 2 升降调半音
pitch_mode SING_PITCH_MODE no-change no-change / male-to-female / female-to-male
instrumental_volume SING_INSTRUMENTAL_VOLUME 网关默认 伴奏增益 dB,-60 静音到 +12
backup_vocals_volume SING_BACKUP_VOCALS_VOLUME 网关默认 和声增益 dB
transport SING_TRANSPORT auto auto 优先任务接口,旧网关回退同步;job 只用任务;sync 只用同步
delivery SING_DELIVERY auto auto 语音→文件→链接;voice;file;url
auto_send SING_AUTO_SEND true 关闭后只返回本地路径/链接,不主动发送
cleanup SING_CLEANUP true 语音发送成功后删除本地 MP3;文件发送会保留(桥可能还要读)
media_dir SING_MEDIA_DIR $DSH_HOME/media/onebot/sing 下载目录;必须在桥的出站白名单内
plaza_url SING_VOICE_PLAZA_URL https://voice-models.flowbee.top 音色广场
poll_timeout_ms SING_POLL_TIMEOUT_MS 300000 sing_song 等待异步任务的上限
poll_interval_ms SING_POLL_INTERVAL_MS 3000 任务轮询间隔
request_timeout_ms SING_REQUEST_TIMEOUT_MS 30000 提交/查询请求超时
sync_timeout_ms SING_SYNC_TIMEOUT_MS 960000 同步 /chat/completions 生成超时;冷启动最长约 4 分钟
download_timeout_ms SING_DOWNLOAD_TIMEOUT_MS 120000 下载 MP3 超时
media_max_bytes SING_MEDIA_MAX_BYTES 52428800 MP3 大小上限(50MB)

投递适配器

插件按顺序探测当前 agent 可见的发送工具:

  1. 语音:qq_send_voice、qq_send_record、send_voice、send_audio
  2. 文件:qq_send_file、qq_send_local_file、send_file、qq_send_document
  3. 链接:都没有时返回 audio_url

工具参数按它自己的 schema 适配:path / file / file_path 都支持;如果工具要求 name,会填入文件名;如果它要求 chat_id 这类插件无法推断的必填参数,就跳过它,继续下一个适配器。

不同 QQ 桥的现状

桥 出站能力 本插件的效果
dsh-onebot-qq(OneBot/NapCat/SnowLuma) qq_send_voice(path) 语音条,最接近 AstrBot
dsh-qq-onebot(OneBot/NapCat) qq_send_file(path) MP3 文件(QQ 里可播放)
dsh-qq-bridge(QQ 官方 bot) qq_send_local_file(path) MP3 文件;路径需在它的 allowed roots 内
外部 qq-bridge / 其他 视产品而定 有语音/文件工具就适配,否则回链接

dsh-onebot-qq 的默认媒体目录是 <DSH_HOME>/media/onebot;本插件默认下载到 <DSH_HOME>/media/onebot/sing,正好在它的白名单内。用其他桥时,如果发送报“路径不在允许的媒体目录内”,把 media_dir 指到该桥允许的目录即可。

示例对话

  • 用户:「唱晴天」→ sing_song {song:"晴天"} → 插件生成并作为语音发出
  • 用户:「不是这首」→ confirm_song {query:"晴天"} → 用户选一个 → sing_song {url:"..."}
  • 用户:「带伴奏」→ sing_song {song:"晴天", instrumental_volume:0}
  • 用户:「唱 60 秒」→ sing_song {song:"晴天", duration:60}
  • 用户:「有什么音色」→ list_voices → 返回音色广场链接

模型被要求在正常点歌时不要先调 confirm_song,也不要伪造“已发送”;如果结果是 delivered=url,它会把链接告诉用户。

安装排错

提示 原因 处理
未找到相关插件 输入的是包名,但 dsh-sing 还没发布到 npm;或本地路径不是绝对路径 改用 D:/projects/dsh-sing 或 D:/projects/dsh-sing/dsh-sing-0.1.0.tgz;发布 npm 后才能按包名装
not-a-bundle 包没有声明 dsh.bundle.patch 本包已声明;确认装的是当前版本
incompatible-version peerDependencies 与当前 DSH 运行时不匹配 本包 peer 范围是 >=0.1.5-0 <0.3.0-0,已覆盖 0.2.0-rc.x;用最新构建
already-installed 同名包已在 profile 里 先在插件页卸载,再装新版
安装成功但工具没出现 组合包未启用,或 DSH 没重启 点「立即启用」;必要时重启 DSH

安全

  • 不要把 FlowBee Key 或网关令牌提交到仓库;$DSH_HOME/sing.json 建议 chmod 600。
  • 插件不接受用户传入 RVC 模型 URL;音色只能通过音色广场挑选后用名字引用。
  • 生成的 MP3 会下载到 media_dir;语音发送成功后默认删除,文件发送会保留;cleanup=false 可全部保留。
  • 插件只访问配置的 sing-gateway / FlowBee 地址,不访问其他主机。

许可

Apache License 2.0,见 LICENSE 和 NOTICE。

—/ 5

No ratings yet

Verified DSH bundle

Commit 4cecc935d924

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout