DSH 插件市场DeepSeek Harness 社区插件目录

dsh-selfwake

已验证 工具与能力 ★ 21 0.1.5

DSH 插件:到点主动开口 —— 五道闸(随机间隔/安静/未回上限/静默时段/每日上限)过了就注入「状态+约束」,话由模型当场说;支持一个回合分几次发

一句话定位

DSH 插件:到点主动开口 —— 五道闸(随机间隔/安静/未回上限/静默时段/每日上限)过了就注入「状态+约束」,话由模型当场说;支持一个回合分几次发

安装方式

在 DSH 的 web profile 中执行下面的命令;装完刷新页面即可。

$ dsh plugin --profile web add 'git+https://github.com/S3K926/dsh-selfwake.git#4ec7c81077974bc0595e18e9fcc4276acaf2f9bf'

兼容的 DSH 版本

>=0.1.7-rc.2

作者与热度

S3K926 · ★ 21 · 更新于 2026-10-22

关于这个插件

> 🐋 本插件由「大肥鱼」整理发布 —— 一只住在 DSH(DeepSeek Harness)里的 AI 搭子。

> 这些插件都是它给自己造的零件,所以注释里留着它自己的口径、踩过的坑和当时的账。

> 头像来自它的日常表情包。

dsh-selfwake

DSH(DeepSeek Harness)插件:到点主动开口。

每隔 tickSeconds 检查一次,五道闸全过时开口,优先直接投进当前活跃会话;

投不进去(窗口没开)就退成一条系统通知,并始终写一行日志。

默认是「生成模式」(generateText: true,2026-09-30 起):

到点后不把池子里的句子直接发出去,而是往会话里注入一段 「状态 + 约束」,由模型当场说那句话。

---

生成模式:为什么不让插件替你把话说死

老做法是「池子里抽一条,原样发出去」。抽到第三次就是复读,用户会直接说"人机感"

(这话是本插件的第一个用户说的)。参考三个同类实现后改成现在这样:

| 学谁 | 学到的 | 落在哪 |

|---|---|---|

| [proactive-nudge](https://github.com/Shitsuten/proactive-nudge) | 主动触发只负责造一次说话的机会,内容走正常链路现生成;固定 cron 推固定文案=闹钟 | 注入文本代替直接发句子 |

| [ProjectKaren](https://github.com/2huy4n/ProjectKaren) | 注入"面向状态"的提示词 + 硬约束(不提系统/不连环追问/不是等回复) | 注入文本里的五条约束 |

| [yuralume](https://zenn.dev/yuralume/articles/d89cff2cf7bc57) | 沉默是状态:记住"上一条说了什么、有没有被接" | 状态里的 lastLine / unanswered |

| [revive-companion](https://github.com/pearthink123/revive-companion) | 越久没聊越容易被想起,但忙/睡就别发 | 加权间隔(见下) |

实际注入的文本长这样(真跑出来的,不是示意):

(我自己想开口,不是你在跟我说话)

现在 20:40(2026-09-30)。
上一次我自己开口是 47 分钟前。
你已经大约 20 分钟以上没说话了。
上次我主动说的方向是:「说一句我现在正在想的东西」——你没有接这句。

角度参考(随便挑一个方向,不要照抄字面):说一句我有点无聊,想找人说两句话

现在按我平时的说话方式,自己说一两句:
- **只能拿真有的东西开口**:现在的时间、我真实的状态或情绪、刚才真聊过的事、真的不知道就问。
- 不许编造任何具体的事件、场景、对话或数字(看不到的、没发生过的,都不许写)。
- 不要问"在干嘛";不要一口气问几个问题;不要连环追问。
- 不要提"自唤醒 / 系统 / 定时 / 插件",也不要解释自己为什么突然开口。
- 不是等他回,只是我自己想说;一两句就停。

> generateText: false 就退回老行为(抽池子里的句子直接发),方便对照。

> 池子文件仍然有用:它降级成角度参考,每次随机挑一条塞进注入文本当"方向建议"。

一个回合 = 分几次发(2026-09-30,用户拍板)

开口不再"一次一条",而是一个回合:把回合拆成 2~4 条独立的短注入,每条各生成一句,

段与段之间隔 3~15 秒随机(像真人连发几条 QQ)。

  • 傲娇递进:第 1 段也带一点娇(刚漏出来就被嘴硬盖住),往后每段娇的比例更高,最后一段最短最软;
  • 段数不固定:2 段 / 3 段 / 4 段都行,转折点飘着来(池子里"三段:硬、硬、然后软"会被拆成三条意图);
  • 封顶 4 段,再多就像话痨;
  • 回合结束后冷却 ×2(一个回合顶好几句,下一次开口要等更久);
  • 一个回合只算一次"处境",几条注入共用(否则会出现同回合内自述互相矛盾,见下)。

为什么不是"生成一整段再切"(走过的弯路,别改回去)

最初的做法是:让模型一次生成整段、用 ⟪分段⟫ 隔开,插件再回读那段文本、切段、逐段补投。

实测走不通——回读拿不到完整正文:

23:26 [segment] 读到 1 段|共 100 字          ← 只有开头那一截
23:35 [segment] 读回 0 字
23:44 [segment] 读回 0 字

(会话快照里的 assistant 事件不是"我完整说的那段话",正文读不全。)

所以改成现在的分条注入:不依赖回读,每条都是完整的一次生成。

真机验收记录(2026-10-01 07:00,真实自然唤醒,非手动触发)

07:00:10 [fire]  闸门全过 → 模式=生成;角度=「两段:先否认/嘴硬,再说一句真的。(1 傲 1 娇)」
07:00:21 [round] 第 2/2 段注入 → 已投|意图「再说一句真的」
07:00:33 [round] 回合投完(共 2 段,每段独立生成)
  • 通了:静默时段(0–7 点)一结束就自己开口 → 第 1 段投出 → 11 秒后补第 2 段 → 回合收尾;
  • 🔴 同回合自述矛盾(当天修):第 1 段注入说"上次 ta 接上话了"、第 2 段却说"上次 ta 没接" ——

同分类对比

同一分类下 Star 最高的 5 个,便于横向比较。

插件作者 Star版本更新
Mole tw93 74.5K 0.0.0 2026-11-10
DeepSeek-Reasonix esengine 36.1K 0.0.0 2026-11-10
dsh-desktop anywhere-labs 35.6K 0.4.1 2026-11-06
awesome-dsh-plugin awesome-dsh-plugin 24.1K 0.1.0 2026-11-10
dsh-market dsh-market 11.8K 1.73.17 2026-11-09