dsh-fish-river: The "Big Fat Fish" Where Personalities Can Only Grow from the Event Stream

前言

在 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 设置页填桥地址与令牌,一键起桥;本插件不带 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/ 不会随卸载删除。

典型用法

  1. 从零养起:安装并重启 → 设置 → 大肥鱼 → 在 DSH 会话里正常对话,让事件写入 events.jsonl,观察四阶段与瓶颈是否按 README 描述推进。
  2. 开 B 站:在设置页扫码登录 → 配置刷站时段与配额 → 她看过的内容可能影响立宪层成长;备份 .json 时含 owner.json,勿外泄。
  3. 开 QQ / 群聊:在「渠道」填桥地址与令牌,可一键起桥并「测一下通不通」(0.1.3 起);把群号加入白名单,到第三阶段后再期待她搭理陌生人;需要时用 @ 叫醒。
  4. 开社会层:满足 README 中阶段、立场条数与稳定度等条件后,由她自己 social_open;此前身份文档不写社会层内容。
  5. 她拒答时:用观测台以主人名义回一句,避免伪造「她说过」进事件流。
  6. 体检记忆:设置 → 记忆 →「查一下」,查看对不上、快忘、快固定的条目(只读,不进 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye