Back to directory

dsh-story-party

Maintenance: Active

miaonuo-lingran/dsh-story-party

A multiplayer DSH story-party plugin with AI hosting, shared storylines, Galgame, turtle soup, and murder-mystery modes, plus story packs, subagents, and maps.

View on GitHub
$ dsh plugin add dsh-story-party

Install

dsh has no central install command — add this plugin’s entry (documented in its README) to your profile or patch config, then restart.

How installs work

1

stars

0

forks

JavaScript

Language

MIT

License

2026-10-21

Created

2026-10-23

Last push

README

dsh-story-party

作者:B站:喵诺澪染 · 代码许可:MIT · 内置立绘:CC BY-NC-SA 4.0(非商业) · 开源免费,禁止倒卖

如果你是付费购买的,请立即申请退款并举报卖家——本项目从未授权任何人售卖。

联机 Galgame:房间 API + 房间独立 LLM 会话 + 广播 + 可直接打开的网页房间。 阶段 1(服务端)与阶段 2(房间页)已完成;阶段 3(与 galgame 舞台结合)未开始。 v0.2.0 起支持:剧本杀(角色本 + 私聊 + 阶段机)、海龟汤私有汤底、主代理自动点名子代理、舞台场景同步与选项投票、AI 画我猜(单人)。

房间服务(本插件自己的端口,默认 7302)
   ├─ 房间生命周期:建房 / 凭邀请令牌加入 / 职位 / 踢人 / 关闭
   ├─ 共享消息流:用户与 AI 的消息同一条 seq,SSE 广播 + ?since= 增量拉取
   ├─ 私聊:剧本杀里玩家 ↔ GM 的私密消息,第三方与 SSE 都收不到
   ├─ 发言调度:玩家/GM 发言防抖合并成一轮,AI 自己判断接不接话(<silent>)
   ├─ 角色本:每个角色一份 secret,只下发给扮演者与 GM
   ├─ 阶段机:阅读 → 自我介绍 → 搜证 → 讨论 → 投票 → 复盘
   ├─ 房间页:/room/<房号>?t=<邀请令牌>,浏览器直接进
   └─ 房间独立上下文:每个房间一份 system + 消息历史,sessionId = galgame-room:<房号>

截图

剧本杀角色本(玩家只能看到自己那份):

剧本杀角色本

GM 视角:能看全部角色本、指派角色:

GM 角色本

私聊只发给 GM,第三方看不到:

私聊

海龟汤汤底只有 GM 能打开:

汤底

个人本:章节条 + AI 建议选项,输入框仍然可用:

个人本房间

制作页的个人本设置:章节目标、关键选项、结局条件:

个人本制作

舞台:背景、立绘、字幕;两个浏览器不刷新同步:

舞台 GM

舞台玩家

内置「鲸鱼娘」:头像和舞台立绘都来自包内非商业素材(CC BY-NC-SA 4.0):

内置鲸鱼娘

个人资料页:统一换头像和昵称:

个人资料

AI 画我猜(单人):AI 用几何图形画,你来猜:

AI 画我猜

安装

方式一:GitHub(推荐,不用注册 npm)

DSH 桌面版:设置 → 插件 → 添加插件,填仓库地址:

https://github.com/miaonuo-lingran/dsh-story-party

或到仓库 Releases 下载 dsh-story-party-*.tgz,在「添加插件」里选本地文件安装。

方式二:npm(可选,发布后可用)

dsh plugin --profile desktop add dsh-story-party

方式三:本地目录(开发用)

path/to/dsh-story-party

署名与许可

  • 作者:B站:喵诺澪染
  • 代码许可:MIT —— 可以自由使用、修改、分发,但必须保留本署名
  • 内置立绘许可:CC BY-NC-SA 4.0 —— assets/characters/deepseek/portraits/neutral.webp 是第三方衍生素材,不是 MIT;仅限非商业使用,必须保留完整署名链,衍生同许可。 详见 NOTICE 与 LICENSE-ARTWORK。
  • 署名链:上善(鲸鱼娘形象)→ zipzip / ZipZipPipe(女仆二创)→ Small-tailqwq(maid-atelier 皮肤立绘)→ @lanxing/dsh-galgame(本插件直接取用) → 本插件。
  • 内置角色「鲸鱼娘」使用的就是这张立绘;如果不想要非商业素材,可以删除 assets/characters/ 并移除 src/room-server.js 里的 BUILTIN_CARDS,代码仍可正常使用。
  • 本项目开源且免费,从未授权任何人售卖;付费购买请申请退款并举报卖家
  • 署名出现在这些地方:
    • package.json 的 author、LICENSE、README
    • 三个网页的 <meta name="author"> 与页脚 / 房间水印
    • 所有 HTTP 响应头 X-Plugin-Author、/api/health 的 author
    • 剧情包 pack.json 的 generator / brand 字段

目录

src/room-server.js   房间核心(零 DSH 依赖,standalone 与插件共用同一份)
src/draw.js          AI 画我猜游戏核心(出题 / 判分 / 兜底题库)
src/zip.js           零依赖 zip 读取(stored / deflate,带上限与路径校验)
src/index.js         Host 插件:接 ctx.llm + resolveDshHome + cosplay 角色库
src/standalone.js    不启动 DSH 的直跑入口(mock 模型,用于 curl 自检)
public/room.html     房间页(阶段 2)
public/room.css      房间页样式(开房页 / 房间页 / 制作页 / 画我猜共用)
public/room.js       房间页逻辑(SSE + fetch)
public/host.html     开房页(创建 / 加入 + 人设卡 + 剧情包)
public/host.js       开房页逻辑
public/make.html     剧情包制作页
public/make.js       制作页逻辑 + 浏览器端零依赖 zip 打包
public/profile.html  个人资料页(头像 / 昵称)
public/profile.js    个人资料页逻辑(本机 localStorage)
public/draw.html     AI 画我猜页面(单人)
public/draw.js       画我猜页面逻辑(SVG 渲染 + 猜词)
client/client.js     DSH 浏览器半侧:「联机模式」标签页(iframe 嵌房间页)
assets/icon.svg      插件图标(插件管理里显示)
assets/characters/   内置「鲸鱼娘」立绘(CC BY-NC-SA 4.0,非 MIT;见 NOTICE)
LICENSE              代码 MIT 许可
LICENSE-ARTWORK      内置立绘的 CC BY-NC-SA 4.0 许可全文
NOTICE               立绘署名链与使用限制
scripts/acceptance.ps1   一键验收脚本
scripts/smoke-events.mjs 无浏览器的页面契约冒烟测试
scripts/card-test.mjs    cosplay 人设卡集成测试
scripts/pack-test.mjs    剧情包导入 / 建房 / zip-slip 测试
scripts/mystery-test.mjs 剧本杀:角色本 / 私聊 / 阶段机 / 真相不泄露
scripts/solo-test.mjs    个人本:solo 字段 / 主角 / 章节 / 选项剥离
scripts/save-test.mjs    个人本:存档 / 读档 / 回退 / 长期记忆
scripts/scene-test.mjs   舞台:素材路由 / scene 同步 / AI <scene> / 选项投票
scripts/draw-test.mjs    AI 画我猜:出题 / 猜词 / 计分 / 兜底题库
scripts/soup-test.mjs    海龟汤私有汤底:导入 / GM 接口 / 揭晓提示词
scripts/check-els.mjs    前端 els 引用检查
scripts/install-dsh.ps1 装进 profile 的脚本(复制式,备份 package.json)
cordis.patch.yml     插件挂载声明 + 默认配置

直接验收(不重启 DSH)

mock 模型只在「提问 / 叫旁白 / GM 推进」时接话,其余输出 <silent>,用来验证选择性发言。

cd dsh-story-party
$env:GALGAME_ROOM_PORT = '7302'
node src/standalone.js

另开一个窗口跑完整体验:

Invoke-Expression (Get-Content -Raw -Encoding UTF8 'dsh-story-party\scripts\acceptance.ps1')

也可以用 powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\acceptance.ps1。 脚本会把 curl.exe 的响应先写到文件、再按 UTF-8 读回来解析——Windows PowerShell 5.1 在中文系统上默认用 GBK 解码子进程输出,直接 curl | ConvertFrom-Json 会把中文 JSON 拆成乱码并报 ':' or '}' expected。

脚本会依次演示:建房 → 玩家加入 → 观众加入 → 带问句的发言(AI 接话)→ 观众发言(不进上下文) → 闲聊(AI 沉默)→ 拉历史 → GM 推进(强制开口)→ 增量拉取 → 成员列表 → SSE 实时广播。

房间页(阶段 2)

房主先开房:浏览器打开 http://<本机局域网 IP>:7302/。首屏是三个选项:

  • 创建房间:填房间名和昵称(GM),点创建时会先弹联网方式提示(可勾「不再提示」);页内「开放端口」一节可以改本机端口, 点「开放」后服务切到新端口、页面自动跟过去;下面是朋友可用的局域网地址;
  • 加入房间:把房主发来的邀请链接粘进去,直接进对方的房间(跨机器也行);
  • 自我游玩:单人房间,只有你和 AI;可选 cosplay 卡或剧情包(面板里也能直接导入 .zip),不展示邀请链接和参与者,别人 join 会被拒(403)。

建房后会自动以 GM 身份进入房间页;把「复制邀请链接」得到的地址发给朋友即可。

http://<这台电脑的局域网 IP>:7302/room/<房号>?t=<邀请令牌>

Read the full README on GitHub →

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.