Raising Fish · dsh-yangyu: Add a multi-role companion entry for DSH

前言

在 DSH 里做智能体产品时,一个常见需求是:让多个角色各自拥有人设和记忆,互不串台。通用做法是自己拼会话、自己管状态,或者用通用 persona 插件每轮把背景塞回上下文。前者要自己实现持久化,后者不区分角色,记忆容易混在一起。

dsh-yangyu(养鱼)就是针对这个场景的插件:在 DSH 侧栏加一个「养鱼」入口,创建多位陪伴角色,每个角色有独立的人设页、记忆库和聊天会话;还可以从「出游」页扫码连接微信和 QQ,让角色在手机上回复私聊。

插件由 YKY0521 维护,当前版本 0.2.0,遵循 MIT 许可。它以当前 DSH 进程的权限运行,会话、记忆和出游连接都建立在宿主已有的模型与登录状态之上,属于应用层的角色与记忆隔离,不是操作系统沙箱。

这是什么

一句话:养鱼是 DSH 插件,提供多角色陪伴、角色记忆管理和微信/QQ 私聊出游能力。

解决的问题有三个:

  • 角色隔离:一个角色的多段对话共享该角色的记忆,不同角色之间记忆不互通。
  • 免自建记忆:内存放文件不够,这里用本地关键词、固定资料和重要标记做召回排序,不依赖 embedding 服务。
  • 平台接入:微信和 QQ 的扫码连接、私聊回复、二维码刷新都在插件页面里完成,不需要额外写桥。

插件市场所在的 SkillHub 是独立的社区站点,与 DeepSeek 无官方从属关系,插件在那里的收录只是社区行为。

安装与启用

环境要求:Node.js 22.12.0 或以上;包声明 DSH >=0.2.1-rc.3,README 中本机加载与原生会话流程验证使用 DSH 0.2.1-rc.5,其他版本尚未逐一验证。

推荐安装打包好的 .tgz。将下面的示例路径替换为实际文件的绝对路径,在能运行 dsh 的终端执行:

dsh plugin --profile desktop add "C:\path\to\dsh-yangyu-0.2.0.tgz"

开发时也可以直接安装本地源码目录:

dsh plugin --profile desktop add "C:\path\to\dsh-yangyu"

源码目录安装通常使用链接,安装后必须保留该目录。安装完成后重启 DSH;修改客户端代码后也需要重启。安装到其他 profile 时,把命令里的 desktop 替换为对应名称。

安装包在 GitHub Release 的 v0.2.0 标签下。插件尚未发布到 npm,包名是否可用仍待确认。README 同时提到插件市场收录申请 #12324 已提交,等待审核。

核心功能

角色与人设

从侧栏「养鱼」进入角色列表,添加、编辑或删除角色。每个角色有五个页面:聊天、人设、记忆库、出游、设置。名字、表情头像、人设都可以管理,人设可以留空,之后再补。

人设来源有三种:直接粘贴、导入 .md / .markdown / .txt 文件、从已启用的 dsh-persona-dafeiyu 中选一份人设文本填入。后两个插件都不是必装依赖,养鱼不捆绑它们的源码、预设人设或私人记忆。

聊天与会话绑定

聊天直接创建 DSH 原生会话,绑定到角色,会话不会自动断开或改名。同一个角色的多段对话共享该角色的记忆,会话绑定在重启后保留。已绑定聊天的窗口会显示角色标记,点标记可以回到角色管理页。

聊天沿用 DSH 当前配置的模型和登录状态,养鱼不提供独立的模型账号或 API Key 配置。首版建议使用 DSH 标准 Agent 预设,完全覆盖系统提示的自定义预设可能会盖掉角色提示。

记忆

记忆分两类:「固定资料」和「相处记忆」,可以查看、搜索、新增、修改和删除,支持重要标记。

召回逻辑是:只从当前会话绑定角色的记忆中选,按本地关键词、固定资料和重要标记排序,把有限数量的结果放进当前回复的上下文。「允许聊天中记忆」开启时,模型可以调用 yangyu_remember 保存一条相处记忆,调用 yangyu_recall 检索当前角色的记忆。

需要注意:这是在当前聊天里提供记忆工具,不保证模型每轮都会自动提取或记住所有内容。首版没有另一个模型逐轮整理,也不额外调用 embedding 服务。是否记住一件事,要去记忆库查看、补充或纠正。正常聊天和工具结果进入上下文仍会使用所选模型的额度。

两个开关的行为不同:关闭「聊天时使用记忆」会保留已有数据,暂停聊天召回与模型写入;只关闭「允许聊天中记忆」会暂停模型写入,召回保留。手动管理记忆始终可用。

出游:微信与 QQ

出游页提供微信和 QQ 的二维码、刷新、扫码确认、过期与连接状态。确认连接后自动开启角色私聊,可以暂停、恢复或解除本地连接。微信要求数字验证码时,可在页面手动填写。

微信走腾讯官方 ClawBot / iLink 通道,只回复扫码微信用户与机器人的新文字私聊。QQ 走本机 NapCat 的扫码服务与 OneBot 连接,只回复原配置 ownerUid / allowedUids 允许名单内的新文字私聊。群聊和媒体消息暂不接入。

一个平台账号同时只能绑定一个养鱼角色,一套 NapCat 实例只能分配给一个角色。多 QQ 并行需要独立实例。当前页面默认发现已有本机 NapCat,不提供安装或新增实例向导。安全启动只运行已安装的 Boot 组件,不会调用会终止 QQ 的旧脚本,也不会关闭正在运行的 QQ。

出游为每个联系人建立角色绑定的独立 DSH 会话,但同一角色的长期记忆共享。模型只获得 yangyu_remember 和 yangyu_recall,私聊内容不会赋予电脑文件、终端或其他外部工具的权限。

备份与迁移

可以在角色页面导出或导入养鱼角色 JSON,包含人设、设置和记忆。导入时生成新的角色与记忆 ID,不接管原来的聊天。

数据保存在 DSH Home 下:

$DSH_HOME/storages/dsh-yangyu/state.json

未设置 DSH_HOME 时,通常位于用户目录的 .dsh/storages/dsh-yangyu/state.json。同一个 DSH Home 目前只支持一个 profile/宿主进程写入养鱼数据,不支持多进程并发写。平台授权、收取游标和出游会话映射另存到同目录的 travel-private.json,这个文件含授权秘密,不进入角色 JSON 导出,本版未提供独立密码加密。

删除角色会清除养鱼里的该角色、人设、记忆及会话绑定,并移除其本地出游连接,但保留 DSH 原始聊天。改名或修改人设不会清空原有记忆。

与现有插件共存

如果机器上同时有 dsh-persona-dafeiyu、dsh-dafeiyu-life 或旧的 dsh-qq-bridge,有几件事要注意:

  • 原 life 指定的主会话不能绑定养鱼角色,绑定后出现主会话冲突会阻止继续生成,角色管理页仍可使用。冲突期间原 life 通知可能已经进入该会话历史,即使改回主会话选择,也应为养鱼角色新建对话。
  • 旧 dsh-qq-bridge 和养鱼不能同时消费同一套 NapCat 连接。迁移时先备份旧桥配置,停用旧桥的 DSH 启用项与自动回复开关,再连接养鱼。发现旧桥仍启用时,养鱼会拒绝连接或暂停该 QQ 聊天。
  • 养鱼会过滤已知的大肥鱼提示及生活工具,普通会话保持原插件行为。原插件更新后需要复核过滤范围。

这些隔离是应用层的,用户主动要求使用宿主原生文件或终端工具时,仍然遵循宿主权限。

典型用法

下面按 README 的流程走一遍:接入第一位角色,验证记忆功能和出游连接。

  1. 打开侧栏「养鱼」,点添加伙伴,填写名字,例如「小鱼」。人设先留空,之后再补。
  2. 选择一个 DSH 工作区,然后在角色卡片或「聊天」页点开始聊天。插件创建原生会话、绑定角色并打开对话;没有工作区时先添加一个。
  3. 在「人设」页调整性格与背景,在「记忆库」页填写固定资料或相处经历。
  4. 返回「聊天」页继续已有对话,或为同一个角色开始新对话,观察召回是否按角色隔离。
  5. 在角色的「管理 → 出游」选择微信或 QQ,点连接后用本人手机扫码确认;二维码过期时点刷新,微信要求验证码时按手机提示手动填写并提交。

验证记忆隔离的做法:为两个角色各开一个会话,分别写入不同记忆,再在两个会话里提问,检查召回是否只来自各自角色。

已知限制与适用范围

当前尚未实现:生活动态、B站活动、自主情绪、群聊、媒体消息、酒馆 PNG 角色卡导入、AI 视频。角色 JSON 只支持养鱼自己的备份格式。

验证情况:0.1.0 验证了原生安装、侧栏入口、多角色与空人设、会话创建与持久绑定、重启恢复,并用 DSH 当前版本的 DeepSeek-V4.1-Flash 完成了真实模型记忆写入、同角色跨会话召回与跨角色隔离测试,其他模型和自定义预设未逐一覆盖。0.2.0 通过了 80 项自动测试,并在真实 DSH 中验证了出游页面、微信二维码显示与刷新;QQ 复用了已有 NapCat 登录会话完成一次真实私聊回复,全新 QQ 扫码流程、微信本人扫码及消息往返尚未验证。完整范围见仓库里的 VALIDATION.md。首次授权必须由账号本人操作手机。

适合的使用场景:

  • 需要在 DSH 里管理多个有独立记忆的陪伴角色。
  • 想让角色通过微信或 QQ 私聊回复特定联系人,且不希望私聊内容被赋予文件或终端权限。
  • 愿意接受首版的边界:记忆依赖本地关键词排序,不追求模型每轮自动记忆。

不适合的场景:需要群聊、多媒体消息、多个角色共用一个 QQ 实例、或依赖逐轮记忆整理的复杂长期记忆系统。

安装前建议先打开源码仓库核对实现,尤其是出游和记忆写入路径,确认与现有插件(life、persona、qq-bridge)的配置没有冲突。数据文件带授权秘密且无独立加密,备份和迁移要按 README 描述操作。

小结

养鱼把多角色陪伴拆成了可操作的三块:角色与人设管理、按角色隔离的记忆、微信/QQ 私聊出游。它不是独立的记忆数据库,而是建立在 DSH 原生会话之上的应用层约定,能力边界和验证范围在仓库文档里写得很具体。

目录页:https://www.skillhub.cn/plugins/YKY0521/dsh-yangyu
源码仓库:https://github.com/YKY0521/dsh-yangyu

羽毛球分组比赛记分
小程序二维码

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

Xiaoye