前言¶
在 DSH 裏接 OneBot(例如 NapCat)做 QQ 私聊時,常見做法是「主人發一句、機器人回一句」。對話一旦停頓,往往就停在最後一條回覆上,除非主人再次開口。若希望機器人在雙方已經聊熱之後,還能順着剛纔的話題自然接一兩句、而不是乾等下一條指令,就需要在 Harness 裏單獨處理「續話節奏、冷卻和發送時機」。下面介紹社區插件 dsh-proactive-chat(展示名「更像人的聊天」),維護者爲 shuaig22,在 SkillHub 分類爲模型推理;它以主動續話爲核心,並支持本機人格文件熱更新。
這是什麼¶
dsh-proactive-chat 是 DeepSeek Harness 的插件 bundle(當前 package 版本 0.4.0,MIT 許可證)。主人發來消息時插件會先正常回復;在對話變密或進入「熱聊」後,會按可配置的間隔主動生成併發送短續話,而不是隻在被動回合裏說話。插件不內置人格,需在本機準備 UTF-8 的 .md 或 .txt 人格文件並在設置裏填寫絕對路徑;未配置有效人格時不會調用模型或發送續話。
- 目錄頁:https://www.skillhub.cn/plugins/shuaig22/dsh-proactive-chat
- 源碼與說明:https://github.com/shuaig22/dsh-proactive-chat
SkillHub 爲社區插件目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,安裝前請自行查看源碼與許可證。
主動續話怎麼工作¶
README 裏把流程寫得很具體,可按下面理解:
- 主人發來消息,插件先接住並自然回覆。
- 連續聊天進入熱聊後,從上一條實際發送成功的消息起,默認約 10 秒後準備主動續話;普通聊天節奏默認約 2 分鐘。
- 第一次主動續話若無人回應,熱聊下第二次等待會延長到約 20–30 秒;連續兩次沒回應後進入冷卻,停止追發。
- 6 小時沒有互動後停止自動續話,等下一次聊天再開始。
- 夜間在普通狀態下免打擾;已進入熱聊時仍允許自然續話。
每次主動續話只發一兩句短話,優先接住最近聊到的具體內容;不會寫標題、列條目或客服腔收尾。若同一 OneBot 通道上已有身份插件負責普通回覆,本插件會保留入站上下文並安排主動續話;若身份插件自己的主動陪聊也已開啓,則讓出全部發送權。
OneBot 離線時每 30 秒檢查一次,不調用模型;連接恢復後仍受免打擾、未回應次數和預算限制。發送失敗時不增加已發送條數,30 秒後重新檢查是否適合續話。
模擬打字與消息打斷¶
普通回覆和主動續話都會在發送前按最終文本長度計算等待:默認每個非空白 Unicode 字符 120 毫秒,約 ±15% 隨機浮動,最短 0.8 秒,最長 12 秒。額外等待爲 max(0, 目標時長 - 模型生成耗時);模型生成已超過目標時長則不再額外等待。另有「收到消息後的延遲」,默認 300 毫秒,在生成前獨立生效。
等待期間若收到新的主人消息,會取消未發送的舊回覆,用最新上下文重新回覆;重複投遞的同一消息不會打斷。關閉插件、停止運行或切換主人後,舊回覆不會發送;消息一旦交給 OneBot 發送則無法撤回。配置每 2 秒同步一次,觀察到開關或主人變更後舊發送任務永久失效。
可在設置裏關閉「模擬打字等待」,改爲生成完成後直接發送。
可調參數與人格文件¶
在 DSH 設置左側導航 「更像人的聊天」 中可調整,分組包括:連接、續話節奏、限額與冷卻、免打擾、模型、人格文件。README 列出的項包括:
- 熱聊續話間隔(默認 10 秒)、普通續話間隔(默認 2 分鐘)
- 模擬打字等待開關、每字打字時間、打字等待上限
- 多少分鐘內連續聊天算熱聊
- 連續幾次沒回應後冷卻
- 夜間免打擾時間
- 每日消息數和 Token 限額
- 聊天模型、單次輸出長度和人格文件
人格文件示例路徑格式:
C:\Users\you\Documents\persona.md
插件在每次回覆和主動續話前檢查文件;修改後下一條消息即用新內容,無需重啓 DSH。默認最多讀取 3000 字,可在「人格讀取上限」調整。若文件曾成功讀取、之後被移動或刪除,會沿用最後一次成功內容並在日誌提示。
設置頁必填項包括:
ownerId:主人 QQonebotUrl:NapCat WebSocket,例如ws://127.0.0.1:3002onebotToken:NapCat 鑑權 TokenpersonaFile:本機人格文件絕對路徑
Token 留空時保存不會覆蓋原值。
安裝與啓用¶
插件要求 Node.js >= 22.19.0 或 >= 24.0.0,dsh >= 0.2.0。官方 README 給出的安裝方式爲本地路徑添加(請將路徑換成本機上的插件目錄,勿直接使用佔位路徑):
dsh plugin --profile desktop add file:C:\path\to\dsh-proactive-chat
安裝後確認 profile 的 dsh.profile.bundles 包含 dsh-proactive-chat,重啓 DSH。保存設置後直接應用。
運行態數據:$DSH_HOME/storages/dsh-proactive-chat/state.json(狀態只保存 Owner QQ 的哈希標籤,不保存原始號碼);Token 只保存在本機 DSH 配置。模型已消耗的 Token 會計入每日預算,即使回覆被新消息取消或 OneBot 發送失敗。
開發與自測¶
若你在本地改插件代碼,README 提供:
npm install
npm test
測試腳本爲 node --test test/*.test.mjs。
適用場景與注意¶
適合:已通過 NapCat 等 OneBot 實現 QQ 私聊、希望機器人在熱聊中偶爾主動接話、並想用獨立人格文件控制語氣與關係的 DSH 用戶。
務必注意:插件以當前 DSH 進程權限運行,會連接 OneBot、讀取本機人格路徑並調用配置的聊天模型;安裝前請閱讀 倉庫源碼 與 MIT 許可證,自行評估 Token、每日限額與主人 QQ 綁定是否符合你的安全預期。
結尾¶
dsh-proactive-chat 把「熱聊間隔、冷卻、夜間免打擾、打字等待」和「人格文件熱更新」收進一個 DSH 插件裏,核心仍是主動續話——讓對話在停頓後仍可能自然往下走,而不是永遠停在最後一輪被動回覆。