前言¶
在 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