dsh-plugin-qqsend:在 DSH 裏向 QQ 羣或好友發一條消息

前言

在 DeepSeek Harness(DSH)裏做自動化時,常見需求是「讓智能體把結果推到 QQ」。只讀聊天記錄可以用 dsh-plugin-qqchat;一旦要在羣裏或私聊裏主動發一條文本、表情、文件,就需要單獨的「寫」能力,並且默認不能誤觸真發。下面介紹社區插件 dsh-plugin-qqsend:經 OneBot/NapCat 發消息與文件,內置 dry-run 與多重安全閘門,與 qqchat 拆成兩個 bundle,可分別啓停。

這是什麼

dsh-plugin-qqsend(當前倉庫版本 v1.2.0)由維護者 jcy0chenyuan0 發佈,分類爲聯網工具。簡介:通過 OneBot/NapCat 發送 QQ 消息與文件,帶 dry-run 與安全閘門。

與只讀的 dsh-plugin-qqchat 完全獨立。README 說明拆包原因:qqchat 的可信承諾是「絕對不發消息」;讀寫若在同一插件裏,該承諾無法成立。

代碼裏寫死的紅線包括:一次調用只發一條、不批量羣發;不自動回覆、不訂閱消息;不做頻率規避;不注入 QQ 進程、不改安裝包、不重實現 QQ 協議。

核心功能

發送與附件

工具 作用
qq_send 向指定羣或好友發一條消息;支持系統表情、貼圖、連發、引用
qq_send_file 上傳一個本地文件或 URL 到羣/好友
qq_schedule 定時任務:add / list / remove / run(到點發送需外部調度調用 run)
qq_stickers 查詢可用表情包(會話最近或收藏)

qq_send 常用參數:faces(小黃臉編號或名字)、stickers(貼圖 URL 或 "latest")、messages(連發數組,默認間隔 900ms)、quote(引用 message_id)。

文件上傳邊界:單次只傳一個文件;上傳前校驗存在且爲普通文件;超過 100MB 會提醒但不阻止;審計只記文件名與大小,不記本機完整路徑。

診斷、目標與登錄

工具 作用
qq_send_doctor 通道是否可用、當前登錄 QQ 號、總開關/白名單/限速/審計、目標索引
qq_send_targets 按羣號/羣名/好友號/好友名搜索目標
qq_login_qrcode 在 GUI 返回登錄二維碼(Markdown 圖片)
qq_send_history 查看發送審計記錄

媒體下載

qq_download_media 將收到的圖片/文件/視頻/語音增量下載到系統「下載」目錄(可 dry_run、輪詢、指定類型與目錄)。游標在 ~/.qqsend/media-cursor.json。

三道鎖:何時纔會真發

真實發送需同時滿足:

  1. config.json 中 safety.allowSend = true(默認 false);
  2. 調用參數 confirm = true(缺省爲 dry-run,不發 HTTP);
  3. 目標在 safety.allowlist 內(若配置了白名單)。

另有 maxPerMinute、maxPerTargetPerHour 限速,以及審計日誌 ~/.qqsend/sent.log(不存完整正文)。

OneBot 通道僅接受 127.0.0.1 / localhost;配置 token 時請求帶 Authorization: Bearer。README 明確提示:機器人框架登錄 QQ 與騰訊用戶協議存在衝突,存在封號風險,建議用小號作發送端。

安裝與啓用

首次安裝需在本插件目錄執行安裝腳本,再在 DSH 裏以本地路徑安裝 bundle。

Windows:

powershell -ExecutionPolicy Bypass -File .\install.ps1

macOS / Linux:

node install.mjs

腳本會按當前目錄生成 cordis.patch.yml(已 .gitignore)。隨後在 DSH:設置 → 插件 → 安裝 → 本地路徑,填寫本目錄絕對路徑;或按 README 使用 plugin_manager install_bundle file:<本目錄的絕對路徑>。

配置步驟:

  1. 複製 config.example.json 爲 config.json 並按需修改;
  2. 重啓 DSH(改代碼不熱生效)。

關鍵配置示例:

{
  "transport": "onebot",
  "safety": { "allowSend": false, "maxPerMinute": 5, "maxPerTargetPerHour": 20, "allowlist": [] },
  "onebot": { "baseUrl": "http://127.0.0.1:3000", "token": "" },
  "qqchat": { "decryptedDir": null }
}

真實發送需要本機 NapCat(或 LLOneBot)提供 OneBot 11 HTTP;NapCat 不從 winget 自動裝,需在 config.json 的 napcat.dir 或環境變量 NAPCAT_HOME 指向安裝目錄。安裝腳本可默認靜默補 Python、QQ NT 等;僅檢查時 Windows 可加 -CheckOnly。關閉自動安裝可在 patch 的 config 設 autoInstall: false,或 DSH_BOOTSTRAP=0。

運行環境說明:Windows 10/11(x64)爲當前主要適配;Python 3.11+(優先 DSH 自帶運行時);macOS / Linux 的 OneBot HTTP 理論可用,本地路徑與下載目錄邏輯尚未完整移植。

典型用法

默認調用只做 dry-run,回顯意圖而不發請求:

qq_send(to="<羣名或羣號>", text="hello,你好世界")

真發需 confirm=true 且 allowSend=true:

qq_send(to="<羣號或好友號>", text="hello,你好世界", confirm=true)
qq_send(to="<羣號或好友號>", text="看這個", faces=["13"])
qq_send(to="<羣號或好友號>", stickers=["https://.../a.gif"], confirm=true)
qq_send(to="<羣號或好友號>", messages=["在嗎","問你個事","那個文件還在不"])
qq_send(to="<羣號或好友號>", text="收到", quote="123456789")

文件與定時:

qq_send_file(to="<羣號或好友號>", file=r"<文件絕對路徑>")
qq_send_file(to="<羣號或好友號>", file=r"<文件絕對路徑>", name="實驗報告.pdf", confirm=true)
qq_schedule(action="add", to="<羣號或好友號>", text="記得喝水", every=60)
qq_schedule(action="run", confirm=true)

插件自身不帶常駐進程;無人值守定時發送需在外部計劃任務中定期執行:

python -m qqsend schedule run --confirm

體檢與媒體:

qq_send_doctor()
qq_download_media()
qq_download_media(dry_run=true)

適用場景與注意

適合:已在 DSH 裏編排任務,需要可控、單次、可審計地向一個 QQ 羣或好友推送文本、表情、單個文件,且願意自備 NapCat/OneBot 並承擔協議與賬號風險。

不適合:羣發、自動回覆機器人、繞過限速或風控——這些在設計上被排除。

插件以當前 DSH 進程權限運行;安裝前應閱讀倉庫源碼與 MIT 許可證,覈對 safety 默認值與白名單。倉庫 README 記錄本地假 OneBot 下 9/9 端到端測試通過;真實 NapCat 發送驗收仍標記爲待完成項。

DSH 社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;星標與分類信息以目錄頁爲準。

鏈接

  • 目錄頁:https://www.skillhub.cn/plugins/jcy0chenyuan0/dsh-plugin-qqsend
  • 倉庫:https://github.com/jcy0chenyuan0/dsh-plugin-qqsend
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜