前言¶
在 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 会话 | 主对话房间之一 |
| 经 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 桥。
装完之后¶
- 重启 DSH(运行中的包不会热替换)。
- 打开 设置 → 她;日志在
~/.dsh-roost/logs/dsh-roost.log,见到以0.1.0 ·开头的一行表示挂上。 - 首次启动会自动建屋并在会话仍空时叫醒一次;未醒可用状态卡右上角 「现在叫醒她」;她开过口后侧栏才会出现「跟她说话」(认出名字后为「跟 X 说话」)。
接 QQ(OneBot 11)¶
本插件不内置 QQ 协议,只做 OneBot 11 客户端:连桥、收发消息。桥为独立进程,负责登录并暴露 WebSocket。
- 启动桥:SnowLuma(首选)或 NapCat;记住正向 WebSocket 地址与令牌(SnowLuma 默认
ws://127.0.0.1:3001)。 - 设置 → 她 → 渠道 → QQ:填主人 QQ 号(可逗号分隔两个号)、桥地址、访问令牌(留空表示不校验)、可选桥程序路径。
- 点 「测一下」 确认连通。
- 群侧:总开关、默认仅 @ 时说话、允许开口的群(白名单);白名单外只记流水不进
heard。群里未点她的话只进内存背景(每群最近 20 条),重启即空。
面板未列出的内部默认包括:群冷却 120 秒、全局每分钟 30 条、每群每天 20 条、夜间 23:00–08:00 与工作日峰时仅接点名等。换桥应零改动,不使用桥的扩展动作。
典型用法:观察她怎么长¶
经过上面的步骤挂上插件后,日常以只读观察为主,生长环境在设置里调。
今天页(默认)¶
打开 设置 → 她 → 今天:
- 一行现状:第几天、阶段、今天醒几次、当前会话/渠道、最近一句时间。
- 今天的时间线:0 点至现在,默认可展开看全文与来源渠道。
- 今天变了什么:新学会 / 改了口 / 被推翻,各最多 3 条。
- 手边:工具数、身份文档预算、渠道连接、最近一次限流。
可切换到昨天、前天;无无限滚动、无假数据按钮。
她的一天(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