dsh-roost:事件流驱动、不设人格配置的 DSH 养成插件

前言

在 DSH 里做「有记忆、会聊天」的 companion,常见做法是给角色卡、性格滑条或一长段系统提示,需要时再随手改设定或清空记忆。人格往往写在配置里,而不是从经历里长出来。dsh-roost(维护者 bychance6600,社区分类:趣味换装)走另一条路:不接任务、不当通用助手,也没有「你是一个温柔的…」这类入口;她是谁,只由本地一条只追加的事件流决定。数据落在 ~/.dsh-roost,主包零依赖;她只在 DSH 会话和 QQ 里说话,B 站、抖音用于看材料,不是聊天室。下文按定位、能力、安装、接 QQ 与日常观察顺序说明,事实以仓库 README 与 v0.1.0 说明为准。

这是什么

roost 在 README 里比作鸟落脚的栖木:你给她屋子、QQ、能看外面的浏览器,其余由事件推进。插件全名 dsh-roost,版本 0.1.0,许可证 MIT,仓库 github.com/bychance6600/dsh-roost。目录页:skillhub.cn/plugins/bychance6600/dsh-roost。

运行环境要求:Node ≥ 22,DSH 版本 >=0.2.0-rc.1 <0.3.0-0。0.1.0 为 README 所称的「重建版」,前身是 dsh-fish-river;与 river 相比入口收窄为 DSH 会话 + QQ,材料侧改为「报纸 + 自己搜」,并删掉 B 站/抖音私信、出门、导入、通知与自更新等能力。上游脉络与取舍见仓库内 docs/从哪来.md、docs/定过的取舍.md。

它不是角色扮演(无角色卡)、不是任务助手、不是有求必应的聊天机器人,也不是云服务。

核心机制:事件流与人格边界

下面介绍人格与记忆如何从设计里长出来,而不是从菜单里填出来。

唯一可信源与派生状态

  • events.jsonl 是唯一可信源;天、阶段、判断、疤、立场都从它派生。
  • 四个阶段、三道瓶颈:信任 → 自主 → 主动 → 整合。瓶颈需她自己走过——写过判断、拒绝过、改过口——不是打分涨阶段。
  • 判断与记忆:判断带日期与来路,会旧、会折;疤不折。约 90 天未再被提起的判断会退档、变模糊(降低召回,不是删行)。
  • 两层成长:宪法层(你)进判断;社会层在 social_open 之后按上限影响语气,开闸只有她自己能按。
  • 名字:从对话里认,无输入框;认不出则退回「她」。

她能说话与能看的地方

能力 说明
DSH 会话 主对话房间之一
QQ 经 OneBot 11 桥,本插件不做扫码登录
B 站 / 抖音 看首页、推荐、你递的链接等;不是私信聊天室
可选身体 独立项目 dsh-roost-pet:透明置顶小窗,五档状态与动作,不生成台词

设置里只有「她的一天」相关页签(生长环境:几点醒、醒几次、刷不刷 B 站等),没有性格滑条、好感度数字,也没有直接改她性格的配置。判据 README 中的表述:若某配置能让她对同一个人说出不一样的话,则属人格(禁);只改在哪、何时、多频繁,属环境(可配)。

安装与启用

先做环境核对,再在指定 DSH profile 里安装 bundle。

要求

  • Node ≥ 22
  • DSH >=0.2.0-rc.1 <0.3.0-0
  • 主包 dependencies: 0(零依赖)

手动安装(profile 目录)

DSH 的 profile 目录为 ~/.dsh/profiles/<名字>(Windows:C:\Users\<你>\.dsh\profiles\<名字>)。

在对应 profile 中执行:

# 从 GitHub
pnpm add github:bychance6600/dsh-roost

# 或装本机这份源码(开发时)
pnpm add link:D:/path/to/dsh-roost

把包名写入该 profile 的 package.json:

{
  "dsh": {
    "profile": {
      "bundles": ["dsh-roost"]
    }
  }
}

也可在仓库根目录用官方脚本(会查找 profile、pnpm add、写入 bundles,可选 -FfmpegZip):

powershell -ExecutionPolicy Bypass -File .\install.ps1
# 装本机源码:-LocalPath D:\path\to\dsh-roost
# 只看它打算做什么:-DryRun

若同一 profile 已挂 river(另一个「她」),脚本会停下并提示换 profile,避免两个实例抢同一条 QQ 桥。

装完之后

  1. 重启 DSH(运行中的包不会热替换)。
  2. 打开 设置 → 她;日志在 ~/.dsh-roost/logs/dsh-roost.log,见到以 0.1.0 · 开头的一行表示挂上。
  3. 首次启动会自动建屋并在会话仍空时叫醒一次;未醒可用状态卡右上角 「现在叫醒她」;她开过口后侧栏才会出现「跟她说话」(认出名字后为「跟 X 说话」)。

接 QQ(OneBot 11)

本插件不内置 QQ 协议,只做 OneBot 11 客户端:连桥、收发消息。桥为独立进程,负责登录并暴露 WebSocket。

  1. 启动桥:SnowLuma(首选)或 NapCat;记住正向 WebSocket 地址与令牌(SnowLuma 默认 ws://127.0.0.1:3001)。
  2. 设置 → 她 → 渠道 → QQ:填主人 QQ 号(可逗号分隔两个号)、桥地址、访问令牌(留空表示不校验)、可选桥程序路径。
  3. 点 「测一下」 确认连通。
  4. 群侧:总开关、默认仅 @ 时说话、允许开口的群(白名单);白名单外只记流水不进 heard。群里未点她的话只进内存背景(每群最近 20 条),重启即空。

面板未列出的内部默认包括:群冷却 120 秒、全局每分钟 30 条、每群每天 20 条、夜间 23:00–08:00 与工作日峰时仅接点名等。换桥应零改动,不使用桥的扩展动作。

典型用法:观察她怎么长

经过上面的步骤挂上插件后,日常以只读观察为主,生长环境在设置里调。

今天页(默认)

打开 设置 → 她 → 今天:

  1. 一行现状:第几天、阶段、今天醒几次、当前会话/渠道、最近一句时间。
  2. 今天的时间线:0 点至现在,默认可展开看全文与来源渠道。
  3. 今天变了什么:新学会 / 改了口 / 被推翻,各最多 3 条。
  4. 手边:工具数、身份文档预算、渠道连接、最近一次限流。

可切换到昨天、前天;无无限滚动、无假数据按钮。

她的一天(README 中的节律)

到点可能被叫醒(08:00–23:00 为允许叫醒时段,并非一直醒着)。她可能看 B 站首页、抖音推荐、你递的链接或群内未点她的背景话;想说话再说,否则安静收掉。答应的事进便条,想法进日记,改口留 revise。你不看着时事件仍追加。

上网与可选能力

  • 能不能上网 为材料总闸;关掉后 B 站、抖音与浏览工具停,醒来说话写日记照旧。
  • B 站:扫码或手填 cookie 后「测一下」。
  • 抖音:子包 packages/dsh-roost-douyin/,需真实 Edge/Chrome;未装子包时刷抖音静默跳过。
  • 看画面:仅她主动点开某条视频时抽帧,需 ffmpeg(可用 DSH_ROOST_FFMPEG 或 node tools/setup-ffmpeg.mjs 等 README 所述方式)。
  • 桌宠:独立仓库 dsh-roost-pet;主包仅 pet.enabled、pet.path、pet.pack。

工具面默认收窄,完整名单在 设置 → 她 → 插件;README 明确不建议放行通用 read/write/bash 等,以免她读到自己的配置与数值。

适用场景与注意

适合:想在 DSH 里养一个「只长大、不设人格菜单」的本地 companion;需要 DSH 会话 + QQ 双渠道、事件流可追溯;接受 B 站/抖音作只读材料而非聊天。

不适合:要任务助手、角色卡 RP、云端同步或 river 时代的私信/出门/导入等能力(本版已删)。

安全与权限:插件随当前 DSH 进程权限运行,可访问你配置的 QQ 桥、浏览器登录态与 ~/.dsh-roost 下数据。安装前请自行审阅 MIT 许可 源码。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,属「一切皆插件」生态中的第三方条目。

结尾

dsh-roost 把人格从配置菜单里拿掉,改成 events.jsonl 只追加、阶段与瓶颈由经历推导;说话限于 DSH 与 QQ,看世界走 B 站/抖音材料层。若要安装细节与 QQ 字段说明,以仓库 README 与 Releases v0.1.0 为准。

  • 目录页:https://www.skillhub.cn/plugins/bychance6600/dsh-roost
  • GitHub:https://github.com/bychance6600/dsh-roost
羽毛球分组比赛记分
小程序二维码

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

小夜