前言¶
在 DSH 裏做「養成型」智能體,常見做法是填人設、改記憶、調數值。人格可以隨時反悔,拒絕多半是表演,記憶往往整段塞進上下文。若你希望 agent 更像「被經歷塑造成型」——不能直接在設置裏寫性格,只能追加歷史、用新事件推翻舊認知,並在真實渠道里用同一個自己說話——就需要一套以事件流爲骨、以渠道爲皮的設計。下面介紹社區插件 dsh-fish-river(維護者 bychance6600,SkillHub 分類:記憶)。它是 ssamurias/dsh-fish 與 Britneycode/dsh-fish-soul 的 MIT 整合版:保留「只會長的她」的內核,接上 QQ、B 站私信與可選抖音的出站能力。
這是什麼¶
一句話:養一條會自己長大的魚——沒有人格設置頁,人格只能通過事件流、派生狀態與四階段成長長出來;同一個她可以在 DSH 會話與三個真實渠道里說話,並記住在外面遇到的人。
工程側要點(均來自倉庫說明):零運行時依賴(dependencies 爲空對象)、Node >=22、DSH 兼容範圍 >=0.2.0-rc.1 <0.3.0-0、MIT 許可證、狀態與記憶落在本機 ~/.dsh-fish-river/(可整目錄備份搬走)。插件以當前 DSH profile 的進程權限運行;安裝前應自行閱讀源碼與許可證,並理解渠道開啓後會訪問對應平臺接口或本機瀏覽器。
核心功能¶
人格與成長:不能配,只能長¶
- 沒有人格配置菜單。默認從空白養起;僅保留一次性導入通道,可繼承已養過的大肥魚人設提示詞,不帶成長結果、不進配置項。
- 單一事件流
events.jsonl(只追加),state.json爲派生品,可重算。 - 四階段(信任 → 自主 → 主動 → 整合)及各自瓶頸;四階段走完後纔開始產生立場(清單有上限,寫進身份的條數也有限制)。
- 四條代碼級硬禁(README 稱黑名單):不撒嬌賣萌、沒有好感度數字、不能讀自己的數值與設定、不能調工具改自己;並強調私聊可見性、出站泄漏檢測等。
成長在合併版裏拆成兩層(README 核心改動):
| 層 | 含義 | 來源 |
|---|---|---|
| 立憲層 | 價值觀、對人的基本態度等 | 主人、自刷 B 站/看視頻/做夢;可被新事件推翻 |
| 社會層 | 場合感、分寸、梗與黑話等 | QQ 羣、抖音、B 站評論區陌生人;須過階段/立場/穩定度等閘門,且由她自己調用 social_open 開啓;只補充不推翻,權重上限 30%,永不進 beliefs |
三層記憶:只有一層是「她」¶
| 層 | 存儲 | 說明 |
|---|---|---|
| 成長 | events.jsonl |
只追加;刪改歷史不是設計路徑 |
| 關係 | people.json |
按人一條,印象長度有限制 |
| 流水 | journal.json |
每會話最近 30 句,滾動淘汰;不進事件流 |
召回側未採用 BM25+向量混合檢索(README 寫明爲保持零依賴與數據本地);使用關鍵詞、顯著性與時間衰減等機制。設置 → 記憶裏可「查一下」做只讀體檢,結果不進她的界面。
四個渠道,同一個她¶
所有渠道默認關閉;羣聊需白名單,陌生人須到第三階段才搭理;羣內需 @ 她(mentionOnly 默認開)纔會被叫醒。
| 渠道 | 接入方式 | 備註 |
|---|---|---|
| DSH 會話 | 宿主原生 | 默認開 |
| 設置頁填橋地址與令牌,一鍵起橋;本插件不帶 QQ 協議 | 依賴 SnowLuma / OneBot 11 橋 | |
| B 站私信 | 設置頁掃碼登錄(passport);cookie 寫入 owner.json 權限 0600 |
可刷站、抽幀看畫面 |
| 抖音 | 倉庫內子包 packages/dsh-fish-river-douyin,本機 Chromium CDP |
可選;未開渠道時不連網、不建目錄 |
替主人回消息(0.1.1 起):她不想說時,可在觀測臺以你的名義回一句;只發出去並記流水,不進她的記憶。
其它已覈實能力¶
- 自主刷 B 站(時段、次數、評論配額等可在設置中調節);登錄信息僅本機使用,日誌中對憑據打碼。
- 可導入 SillyTavern 角色卡/世界書作「你知道的事」,按關鍵詞命中進提示詞,不是人格設定。
- 整合版不自動升級(
UPDATES_ENABLED = false);更新需git pull後重啓或重新安裝(README 說明)。
安裝與啓用¶
它沒有獨立啓動器,隨 DSH profile 一起啓動。裝完需重啓 DSH,在設置 → 大肥魚查看;第一次建議先看「狀態」,再在「渠道」頁籤按需開啓——渠道全關時不創建渠道文件、也不連網。
從 GitHub 安裝(README 原文)¶
先關閉 DSH(運行中替換已加載包可能 EPERM),在 profile 下執行(將 <DSH>、<profile> 換成你的路徑與 profile 名;Windows 示例如下):
"<DSH>/resources/runtime/cli/bin/dsh.cmd" plugin --profile <profile> add "github:bychance6600/dsh-fish-river"
本地開發目錄可用 link:(README 原文):
"<DSH>/resources/runtime/cli/bin/dsh.cmd" plugin --profile <profile> add "link:<本目錄絕對路徑>"
面板裝(README 推薦):DSH → 設置 → 插件 → 從本地安裝 → 選擇插件目錄。
無論哪種方式,須保證 profile 的 package.json 裏 dependencies 與 dsh.profile.bundles 均包含 dsh-fish-river,且包名與 cordis.patch.yml 中一致。全新 profile 還需 @deepseek-ai/dsh-web-app 寫入 bundles,否則可能停在等待 sessionController, webServer。
Windows 可用倉庫根目錄 install.ps1 一鍵寫入 profile(見 README「一鍵安裝」小節)。
SkillHub 目錄頁給出的安裝提示爲:請安裝 DSH 插件 bychance6600/dsh-fish-river(詳見 目錄頁)。
卸載(README):設置 → 插件 → 卸載,或:
dsh plugin --profile remove dsh-fish-river
然後重啓;~/.dsh-fish-river/ 不會隨卸載刪除。
典型用法¶
- 從零養起:安裝並重啓 → 設置 → 大肥魚 → 在 DSH 會話里正常對話,讓事件寫入
events.jsonl,觀察四階段與瓶頸是否按 README 描述推進。 - 開 B 站:在設置頁掃碼登錄 → 配置刷站時段與配額 → 她看過的內容可能影響立憲層成長;備份
.json時含owner.json,勿外泄。 - 開 QQ / 羣聊:在「渠道」填橋地址與令牌,可一鍵起橋並「測一下通不通」(0.1.3 起);把羣號加入白名單,到第三階段後再期待她搭理陌生人;需要時用 @ 叫醒。
- 開社會層:滿足 README 中階段、立場條數與穩定度等條件後,由她自己
social_open;此前身份文檔不寫社會層內容。 - 她拒答時:用觀測臺以主人名義回一句,避免僞造「她說過」進事件流。
- 體檢記憶:設置 → 記憶 →「查一下」,查看對不上、快忘、快固定的條目(只讀,不進 agent 界面)。
刷 B 站若需 ffmpeg,可按 README 使用 tools/setup-ffmpeg.mjs 或 Windows install.ps1 的 -FfmpegZip 參數。
適用場景與注意¶
更適合:希望在 DSH 裏觀察「人格從事件長出來」、接受不能隨意改人設、並需要在 QQ / B 站私信 / 可選抖音用同一條記憶線對外說話的場景;也適合從上游大肥魚遷移到合併版、且接受「新起一局、不做老庫遷移」(README 明確未做老數據遷移)。
務必注意:
- 插件與 DSH 同進程權限;開渠道即可能代表你向第三方平臺發消息,白名單與 @ 規則是安全邊界的一部分。
- 私聊內容帶可見性;出站有泄漏檢測,但部署前仍應理解
AGENTS.md與渠道配置。 - 抖音依賴本機 Chromium 與 CDP,DOM 變化可能導致維護成本;推薦流等能力 README 標明尚未做成。
- 社區目錄 SkillHub 是獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝來源以你信任的 GitHub 倉庫與本地審查爲準。
結尾¶
dsh-fish-river 把「只會長的她」和「能在外面說話的她」接成同一個人:三層記憶裏只有成長層定義「她是誰」,流水與關係可重建;立憲層與社會層分開,避免羣聊刷屏改寫人格。若你要的是可配置角色卡式養成,這不是同一路線;若你要的是事件驅動、可拒絕、可觀測的成長 agent,值得從 DSH 會話養起,再按需打開渠道。
- 目錄頁:https://www.skillhub.cn/plugins/bychance6600/dsh-fish-river
- 源碼與完整說明:https://github.com/bychance6600/dsh-fish-river