dsh-proactive-chat:用主动续话让 QQ 私聊更像连续对话

前言

在 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 人格文件并在设置里填写绝对路径;未配置有效人格时不会调用模型或发送续话。

SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,安装前请自行查看源码与许可证。

主动续话怎么工作

README 里把流程写得很具体,可按下面理解:

  1. 主人发来消息,插件先接住并自然回复。
  2. 连续聊天进入热聊后,从上一条实际发送成功的消息起,默认约 10 秒后准备主动续话;普通聊天节奏默认约 2 分钟。
  3. 第一次主动续话若无人回应,热聊下第二次等待会延长到约 20–30 秒;连续两次没回应后进入冷却,停止追发。
  4. 6 小时没有互动后停止自动续话,等下一次聊天再开始。
  5. 夜间在普通状态下免打扰;已进入热聊时仍允许自然续话。

每次主动续话只发一两句短话,优先接住最近聊到的具体内容;不会写标题、列条目或客服腔收尾。若同一 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:主人 QQ
  • onebotUrl:NapCat WebSocket,例如 ws://127.0.0.1:3002
  • onebotToken:NapCat 鉴权 Token
  • personaFile:本机人格文件绝对路径

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 插件里,核心仍是主动续话——让对话在停顿后仍可能自然往下走,而不是永远停在最后一轮被动回复。

羽毛球分组比赛记分
小程序二维码

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

小夜