dsh-selfwake:到点主动开口的 DSH 工作流插件

前言

在 DSH(DeepSeek Harness)里跑智能体时,对话往往停在「用户发一句、模型回一句」。若希望助手在合适时机自己开口——而不是固定 cron 推同一句文案——需要在宿主进程里做定时检查、安静判断、投递会话或降级通知,还要避免把池子里的句子原样复读出去。社区维护者 S3K926 发布的 dsh-selfwake 就是面向这一需求的 DSH 插件:每隔一段时间检查「五道闸」,全部通过后再开口,优先投进当前活跃会话,投不进则发系统通知并写日志。插件在 GitHub 开源(MIT),SkillHub 分类为工作流。

这是什么

dsh-selfwake 是 DSH 插件,核心能力是到点主动开口。维护者为 S3K926,当前 package.json 版本为 0.1.1,要求 Node.js ≥ 22、DSH ≥ 0.1.7-rc.2。

默认自 2026-09-30 起使用生成模式(generateText: true):到点后不把开口池里的句子直接发出,而是向会话注入一段「状态 + 约束」,由模型当场生成一两句话。若设为 generateText: false,则退回从池子抽一条原文发送的老行为。

五道闸与加权间隔

插件按 tickSeconds(默认 60)周期性检查。只有下面五道闸全部通过才会触发开口;任一不通过只记日志说明原因。

闸 配置键 默认 判据
间隔 intervalMinutes ± jitterMinutes,并可按未回话加权 20 ± 8 距上次开口 ≥ 本次摇出的间隔(可复现随机)
安静 minIdleMinutes 20 使用者安静达到设定分钟数(依据最后一条真实 user/message 事件时间,而非会话文件 mtime)
未回上限 maxUnanswered 3 连续没回话次数低于上限(2026-10-21 起默认由 7 调整为 3)
静默时段 quietStartHour / quietEndHour 0 / 7 当前不在静默时段内
每日上限 dailyMax 12 当日开口次数未达上限(0 表示不限)

沉默越久,开口节奏会放慢。加权公式为:

加权间隔 = intervalMinutes × (1 + 连续没被回的次数 × backoffPerUnanswered)(封顶 6 倍)

backoffPerUnanswered 默认为 0.5;设为 0 则退回固定间隔。

生成模式与「一个回合」

生成模式下,注入文本会带上当前时间、上次开口间隔、用户沉默情况、上次主动说的方向是否被接等信息,并附带五条硬约束(例如不许编造未见事件、不提自唤醒/插件、不要连环追问等)。开口池文件(poolFile)在生成模式下主要提供角度参考,随机挑一条塞进注入文本,而不是照抄发出。

自 2026-09-30 起,一次开口可以拆成一个回合:2~4 条独立短注入,每条各生成一句,段间间隔 3~15 秒随机;回合结束后冷却时间 ×2。实现上采用分条注入,不依赖从会话回读 assistant 全文再切段(README 中记录了回读不全的实测问题)。

投递顺序是:优先直接投进当前活跃会话;若窗口未开、无法投递,则在 notify: true 时走 notifyScript 发系统通知,并始终写一行日志。

开口池与前端

poolFile 指向纯文本文件,一行一条,# 开头为注释;缺失或读失败时使用内置默认池。抽条时会尽量避开上一次抽到的内容。

插件包含 client.js(dsh.client.platform: web),用于按文本前缀识别自唤醒注入的展示方式;README 提醒改宿主侧前缀时需与 MARKERS 保持一致。

安装与启用

将插件目录放入 DSH 插件源目录后执行(路径换成你本机实际位置):

dsh plugin --profile web add /path/to/dsh-selfwake

修改配置后需要重启 DSH 才会重新装载。

配置要点

除上文五道闸相关键外,常用项包括:

键 默认 说明
enabled true 总开关
generateText true 生成模式开关
replyWindowMinutes 10 开口后多久内有用户动静算「接了」
notify true 投不进会话时是否通知
notifyScript '' 通知脚本路径;调用约定见 README(示例为 PowerShell,其他平台需自写等价脚本)
stateDir $DSH_HOME/selfwake 或 ~/.dsh/selfwake 状态与日志
sessionsRoot 如 $DSH_HOME/sessions 查找最近活跃会话
device 【PC】 日志与通知中的设备标注

家目录解析顺序为 $DSH_HOME → ~/.dsh,便于便携或多实例部署。

自检与限制

本地可运行:

node index.js --selftest

README 如实列出的限制包括:电脑需开机且 DSH 进程在跑;活跃窗口关闭时无法投进会话,只能通知;插件以当前 DSH 进程权限运行,安装前宜自行审阅源码与 MIT 许可证。

设计参考了社区内 proactive-nudge、ProjectKaren、revive-companion 等实现与 yuralume 的复盘文章(README 中仅说明设计借鉴,未声称代码拷贝)。

链接

DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。若你需要在 Harness 里让助手在合适沉默窗口内主动说话、又希望内容由模型当场生成而非固定文案复读,可按上述步骤安装 dsh-selfwake 并按五道闸与 generateText 调参。

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

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

Xiaoye