dsh-proactive-chat
Manifest valid★ 2更像人的聊天:主动续话是核心,在热聊中顺着话题继续往下接。
更像人的聊天
主动续话是核心。 它不是等你每句都先发才回,而是在聊天已经热起来后,顺着刚才的话题主动接下一句,让对话继续往下走。
主人发来消息时,它会先自然回复。如果两个人正在连续聊天,大约 10 秒后开始准备主动续话;普通聊天状态约 2 分钟。发送前根据文字长度模拟打字等待,模型生成耗时会抵扣等待。没人回应时,下一次等待会延长,不会一直追着刷屏。
主动续话怎么发生
- 主人发来消息,插件先接住这句话。
- 对话变密、连续聊起来后进入热聊状态,从上一条实际发送成功开始,约 10 秒后准备主动续话。
- 普通状态使用较慢的约 2 分钟续话节奏。
- 第一次主动续话没回应时,热聊下第二次等待延长到约 20-30 秒;连续两次没回应后进入冷却,停止追发。
- 6 小时没有互动后停止自动续话,等下一次聊天重新开始。
- 夜间普通状态保持免打扰;已经进入热聊时允许继续自然续话。
每次只发一两句短话,优先接住最近聊到的具体内容。不会写标题、列条目、总结成文,也不会用客服腔结束对话。
按长度模拟打字
普通回复和主动续话都按最终发送文本的长度计算等待。默认每个非空白 Unicode 字符 120 毫秒,加入约 ±15% 的随机浮动,最短 0.8 秒,最长 12 秒。关闭「模拟打字等待」可恢复生成完成后直接发送。
| 字数 | 基础目标时长(随机浮动前) |
|---|---|
| 5 | 0.8 秒 |
| 10 | 1.2 秒 |
| 30 | 3.6 秒 |
| 50 | 6 秒 |
| 100 | 12 秒 |
额外等待为 max(0, 目标时长 - 模型生成耗时)。例如 50 字的目标时长约 6 秒,模型生成用了 2 秒,就再等约 4 秒;模型已经用了 8 秒,则不额外等待。12 秒是模拟打字的目标上限,模型请求本身仍受「模型请求超时」限制。「收到消息后的延迟」是生成前的独立短暂停顿,默认 300 毫秒。
等待期间收到新的主人消息,会取消旧的未发送回复,保留对话内容,并使用最新上下文回复。重复投递的同一消息不会打断。关闭插件、停止运行或切换主人后,旧回复不会发送。消息一旦已交给 OneBot 发送,无法撤回。
配置每 2 秒同步一次;观察到开关或主人变更后,旧发送任务永久失效,重新开启也不会恢复旧输出。发送前会再次检查当前限额和主动续话的免打扰、冷却条件。
可调参数
在 DSH 设置的左侧导航「更像人的聊天」里可以直接调整:
- 热聊续话间隔,默认 10 秒
- 普通续话间隔,默认 2 分钟
- 模拟打字等待开关、每字打字时间和打字等待上限
- 多少分钟内连续聊天算热聊
- 连续几次没回应后冷却
- 夜间免打扰时间
- 每日消息数和 Token 限额
- 聊天模型、单次输出长度和人格文件
人格文件
插件不内置人格。请先准备一个 UTF-8 编码的 .md 或 .txt 文件,然后在设置页的「人格文件」分组里填写它的本机绝对路径,例如:
C:\Users\you\Documents\persona.md
人格文件可以写角色身份、称呼、说话习惯、关系边界和需要长期保持的表达方式。不要在这里重复“一次一两句、不要 Markdown”之类的技术规则,插件会在内部固定处理发送格式。
插件会在每次回复和主动续话前检查文件状态。文件修改后,下一条消息直接使用新内容,不需要重启 DSH。默认最多读取 3000 字,可以在「人格读取上限」里调整。
如果还没有选择人格文件,插件不会调用模型或发送续话;如果文件曾成功读取、之后只是暂时被移动或删除,插件会沿用最后一次成功读取的内容,并在日志里提示。
安装
dsh plugin --profile desktop add file:C:\path\to\dsh-proactive-chat
安装后确认 profile 的 dsh.profile.bundles 包含 dsh-proactive-chat,重启 DSH。
插件设置页需要填写:
ownerId:主人 QQonebotUrl:NapCat 的 WebSocket 地址,例如ws://127.0.0.1:3002onebotToken:NapCat 鉴权 TokenpersonaFile:本机人格文件的绝对路径
设置页按“连接、续话节奏、限额与冷却、免打扰、模型、人格文件”分组。保存后直接应用;Token 留空时保持原值,不会被页面覆盖。
测试
npm install
npm test
数据
- 状态:
$DSH_HOME/storages/dsh-proactive-chat/state.json - 状态只保存 Owner QQ 的哈希标签,不保存原始号码
- Token 只保存在本机 DSH 配置
- 模型生成已经消耗的 Token 会计入每日预算,即使回复被新消息取消或 OneBot 发送失败
连接与共存
OneBot 离线时每 30 秒检查一次,不调用模型;连接恢复后继续受免打扰、未回应次数和预算限制。发送失败时不增加已发送条数,30 秒后重新检查是否适合续话。
同一 OneBot 通道已有身份插件负责普通回复时,本插件会保留入站上下文并安排主动续话;如果身份插件自己的主动陪聊也已开启,则让出全部发送权。
License
MIT
Comments
Loading…
From the same category
by awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
★ 21.9k
CC0-1.0
Python
Nov 1, 2026
by 0xsline
DeepSeek Harness (DSH) ecosystem: curated plugins, tools, and infrastructure from dsh-external/hub and the public dsh-plugin topic.
★ 1.3k
CC0-1.0
Python
Oct 16, 2026
by Yuuyuko-uu
DSH 鱼的记忆:给会话一份会淡忘的长期记忆,每条都带时间
★ 451
MIT
JavaScript
Nov 1, 2026
dsh plugin --profile web add dsh-fish-memoryby SAOS-3624
Scene-aware storyboard for DeepSeek Harness: 9-16 numbered cells with timestamps + transcript + an audio envelope, packed into ONE image (384 tokens). Two tools: video_storyboard and video_zoom.
★ 354
↓ 4.4k/wk
MIT
JavaScript
Nov 1, 2026
dsh plugin --profile web add dsh-video-storyboardby uumit-ai
Open dsh web from your phone or another computer through a UUMit account, without running your own server or installing another program: a built-in tunnel client connects to UUMit's hosted tunnel, and
★ 305
↓ 303/wk
MIT
JavaScript
Oct 21, 2026
dsh plugin --profile web add @uumit-ai/dsh-uumit-remoteby xiajiajun516
DeepSeek Harness (DSH) backup & restore plugin — export, import, migrate and sync your complete DSH configuration, plugins, MCP servers, skills and workspace. One-click migration to another machine.
★ 287
↓ 8.4k/wk
MIT
TypeScript
Nov 1, 2026
dsh plugin --profile web add dsh-config-manager