让 QQ 机器人发送语音、图片、视频和文件
29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Dnsthandsome/dsh-qq-media该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 20 处,展示前 15 条)
- 读取本地文件index.js:57
if (!existsSync(文件)) return {}; - 读取本地文件index.js:59
return JSON.parse(readFileSync(文件, 'utf8').replace(/^ FEFF/, '')); - 读取本地文件index.js:78
if (existsSync(文件)) 磁盘 = JSON.parse(readFileSync(文件, 'utf8').replace(/^ FEFF/, '')); - 读取本地文件index.js:78
if (existsSync(文件)) 磁盘 = JSON.parse(readFileSync(文件, 'utf8').replace(/^ FEFF/, '')); - 发起网络请求index.js:87
const 响应 = await fetch(`${baseUrl}/${动作}`, { - 读取本地文件index.js:130
if (!existsSync(规整)) throw new Error(`文件不存在:${规整}`); - 读取本地文件index.js:136
const 头 = readFileSync(文件); - 写入本地文件index.js:174
mkdirSync(dirname(输出路径), { recursive: true }); - 写入本地文件index.js:175
writeFileSync(输出路径, Buffer.concat([头, pcm])); - 执行外部命令固定命令index.js:194
const 子 = spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-ExecutionPolicy', 'Bypass', '-Command', 脚本], { - 执行外部命令来自配置/变量index.js:230
const 子 = spawn(c.python, 参数, { - 发起网络请求index.js:260
const r = await fetch(`${apiUrl}/health`, { signal: AbortSignal.timeout(毫秒) }); - 写入本地文件index.js:285
mkdirSync(dirname(日志), { recursive: true }); - 执行外部命令来自配置/变量index.js:286
const 子 = spawn(c.python, ['-m', 'breeze_infer.api', c.modelDir, '--host', '127.0.0.1', '--port', String(端口)], { - 发起网络请求index.js:307
const r = await fetch(`${c.apiUrl}/v1/audio/speech`, {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-qq-media
给 DeepSeek Harness 的 QQ 机器人(dsh-qq-moony)补上语音 / 图片 / 视频 / 文件出口。
dsh-qq-moony 本身只能发文字和表情包。这个插件给它加了 5 个工具,让它真的能「发一条语音过来」「把这张图发我」「这段视频发你」。
功能
| 工具 | 作用 |
| qq_send_voice | 合成语音条并发送(默认微软晓伊少女音,1~2 秒出结果) |
| qq_send_image | 发图片,本机路径或网络 URL 都行(走 QQ 图片消息,不是文字链接) |
| qq_send_video | 发视频文件 |
| qq_send_file | 发任意文件(可自定义显示名) |
| qq_media_check | 自检:OneBot 通不通、登录哪个号、TTS 各引擎可用不可用 |
另有一个版本探针路由 GET /api/qq-media/ping,返回当前宿主里跑的版本号 —— 改完插件代码想确认有没有真的重载,打这个接口就行。
语音引擎
三种,按优先级自动降级:
| 引擎 | 说明 |
| edge(默认) | 微软在线语音(edge-tts)。免费、无 key、1~2 秒出结果,不占显卡。
展开完整文档(README 剩余 1 节)
dsh-qq-media
给 DeepSeek Harness 的 QQ 机器人(dsh-qq-moony)补上语音 / 图片 / 视频 / 文件出口。
dsh-qq-moony 本身只能发文字和表情包。这个插件给它加了 5 个工具,让它真的能「发一条语音过来」「把这张图发我」「这段视频发你」。
功能
| 工具 | 作用 |
| qq_send_voice | 合成语音条并发送(默认微软晓伊少女音,1~2 秒出结果) |
| qq_send_image | 发图片,本机路径或网络 URL 都行(走 QQ 图片消息,不是文字链接) |
| qq_send_video | 发视频文件 |
| qq_send_file | 发任意文件(可自定义显示名) |
| qq_media_check | 自检:OneBot 通不通、登录哪个号、TTS 各引擎可用不可用 |
另有一个版本探针路由 GET /api/qq-media/ping,返回当前宿主里跑的版本号 —— 改完插件代码想确认有没有真的重载,打这个接口就行。
语音引擎
三种,按优先级自动降级:
| 引擎 | 说明 |
| edge(默认) | 微软在线语音(edge-tts)。免费、无 key、1~2 秒出结果,不占显卡。音色可换、音调语速可调 |
| breeze | 本机跑 Breeze TTS 2,用自然语言描述音色("一个二十出头的女生,声音偏软偏轻……"),效果接近真人。但很慢 —— 8GB 显卡上一条 5 秒音频要一两分钟,不适合聊天 |
| sapi | Windows 自带 System.Speech。难听但一定在,只作兜底 |
默认只走 edge,失败就报错,不会偷偷换成难听的 SAPI。 想允许降级到 SAPI,在配置里加 "allowSapiFallback": true。
edge-tts 偶尔会抽风(403 / 空音频),插件内置 3 次重试(间隔 400/1200ms)。另外发语音前会自动清洗文本:emoji、*_#>、控制符全去掉 —— 这些东西会让 edge-tts 整句哑掉。
内置音色
zh-CN-XiaoyiNeural 晓伊,少女,活泼 zh-CN-XiaoxiaoNeural 晓晓,温柔 zh-CN-shaanxi-XiaoniNeural 晓妮,明亮(陕西口音) zh-CN-liaoning-XiaobeiNeural 晓北(东北口音)
音调 pitch 用 +18Hz 这种写法(不写正负号插件会自动补 +),语速 rate 用 +3% / -5%。
安装
尚未发布到 npm,直接从 GitHub 装。
dsh plugin --profile desktop add github:Dnsthandsome/dsh-qq-media
或者本地打包:
git clone https://github.com/Dnsthandsome/dsh-qq-media.git
cd dsh-qq-media
pnpm pack --pack-destination dist-pkgs
dsh plugin --profile desktop add dist-pkgs/dsh-qq-media-0.2.2.tgz
前置条件
1. 装了 dsh-qq-moony,并且它的 config.json 里配好了 baseUrl 和 token(本插件复用这份连接配置,不单独存凭据)
2. Python 环境装了 edge-tts(默认引擎要用):
pip install edge-tts
然后在 qq-media/config.json 里把 python 指向那个环境的解释器。
本插件不会自动装 Python,也不会自己找解释器 —— 路径必须给。Windows 上建议用独立 venv,避免污染全局。
3. (可选)想用 breeze 引擎,需要额外部署 Breeze TTS 2,并在配置里填 serverDir / modelDir / apiUrl。不配也能用,qq_media_check 会报「没在跑」。
配置
<DSH_HOME>/qq-media/config.json(每次调用都现读磁盘,改完立即生效,不用重启):
{
"engine": "edge",
"edgeVoice": "zh-CN-XiaoyiNeural",
"edgePitch": "+18Hz",
"edgeRate": "+3%",
"python": "D:\\edge-tts\\.venv\\Scripts\\python.exe",
"allowSapiFallback": false,
"breezeEngine": "breeze",
"apiUrl": "http://127.0.0.1:7861",
"instruction": "一个二十出头的女生,声音偏软偏轻,说话慢一点,语气亲近,像私下里聊天。", "cfgScale": 2, "serverDir": "D:\\breeze-tts\\src\\breezeblue-ai-breeze-tts-6eba901", "modelDir": "D:\\breeze-tts\\models\\Breeze-TTS-2", "autoStart": false }
连接配置从 <DSH_HOME>/qq-moony/config.json 读 baseUrl(默认 http://127.0.0.1:3000)和 token。
工具参数
qq_send_voice
to 必填,QQ 号;发群写 "group:群号" text 必填,要念的话(纯口语,别带 Markdown) voice 可选,音色 id pitch 可选,如 "+18Hz" rate 可选,如 "+3%" engine 可选,edge | breeze | sapi
qq_send_image to, source(本地路径或 http(s) 链接) qq_send_video to, path qq_send_file to, path, name(可选显示名) qq_media_check 无参数
to 的写法很宽松:1245661522、group:123456、群 123456 都认。
HTTP 接口
| 方法 | 路径 | 说明 |
| GET | /api/qq-media/ping | 版本探针:{version, engine, edgeVoice, pid} |
踩过的坑(写在代码里了)
- edge-tts 对 emoji 会整句哑掉 → 发之前先 清洗文本()
- edge-tts 偶尔 403/空音频 → 3 次重试,别一次失败就降级
- SAPI 太难看 → 默认不降级,宁可报错让它重说一遍
- 宿主不重载插件代码 → 改完要 dsh plugin remove 再 add,或者重启宿主;/api/qq-media/ping 的版本号就是用来验证这个的
- PowerShell Set-Content 会把中文 JSON 写坏(UTF-8 读成 GBK)→ 改配置请用编辑器或 node 脚本
配套
- dsh-qq-moony —— 机器人本体(OneBot / NapCat)
- dsh-qq-persona —— 人格切换(切换时按预设改写本插件的音色配置)
- dsh-qq-memory —— 记忆管理面板
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Dnsthandsome/dsh-qq-media
让 QQ 机器人发送语音、图片、视频和文件
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,170已汉化DeepSeek 客户端
71
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,041已汉化DSH
70.7
这是你的仓库?认领条目