01Virex/dsh-foxy-jumpscare

插件Plugin 原生Native ⭐ 2 MIT cat_label.dshcat_label.dsh

DeepSeek 插件:每秒有千分之一的概率,FNAF 2 中的 Foxy(凋零 Foxy)会突然吓你一跳——全屏惊吓加上标志性尖叫。

项目介绍Project Overview

这是一个 dsh Web 界面的整蛊插件:每秒以 1/1000 概率触发《玩具熊 2》Foxy 全屏跳杀,同步播放尖叫,约 1.8 秒后自动消失,可点击关闭。概率、间隔、音量、素材地址均可通过 localStorage 实时配置,素材本地预加载。适合想在使用 dsh 时加入随机惊吓效果的场景。注意素材音效版权归 Scott Cawthon/Steel Wool,属非官方同人;音频需首次点击或按键后才能解锁播放。

A prank plugin for the dsh web UI: every second it has a 1/1000 chance to trigger a full-screen Foxy jumpscare from Five Nights at Freddy's 2, with the signature scream, auto-dismissing after about 1.8 seconds or on click. Probability, interval, duration, volume, and asset URLs are configurable live via localStorage, with assets preloaded locally. Use it to add random scares while using dsh. Caveat: assets/audio are copyrighted by Scott Cawthon/Steel Wool (unofficial fan work), and audio unlocks only after the first click or keypress.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add github:01Virex/dsh-foxy-jumpscare

01Virex/dsh-foxy-jumpscare 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-foxy-jumpscare

把《玩具熊的五夜后宫 2》(Five Nights at Freddy's 2)的 Foxy(霍斯 / Withered Foxy) 请进 DeepSeek Harness(dsh)Web 界面:每秒钟有 1/1000 的几率,屏幕突然被全屏 jumpscare 占据, 伴随那声标志性的尖叫,吓你一跳后自动消失。

素材与音效均来自 Five Nights at Freddy's Wiki, 版权归 Scott Cawthon / Steel Wool Studios 所有。本项目是非官方同人玩具插件,详见 NOTICE.md

特性

  • 每秒 1/1000 几率:每 intervalMs(默认 1000ms)掷一次骰子,命中概率 probability(默认 0.001);
  • 全屏 jumpscare:全屏黑底 + Foxy 大头,附带一个「前扑」缩放动画,durationMs(默认 1800ms)后自动消失;
  • 尖叫音效:随 jumpscare 同步播放,音量可调;首次点击/按键会自动「解锁」音频以绕过浏览器自动播放限制;画面收起时音效立即停止;
  • 零延迟:图片与音效启动时预加载,命中瞬间即出,不联网、不转圈;
  • 开箱即用:node half 自动注册 HTTP 路由 serve 素材与 config.json,无需手动部署;
  • 可配置:概率、间隔、时长、音量、开关、素材地址都能改;localStorage 覆盖实时生效(每秒检测,无需刷新),也能一键关闭;
  • 点击关闭:jumpscare 期间点一下屏幕即可提前关掉。

安装

方式 A:dsh plugin 自动安装(推荐)

本包声明了 dsh.bundle.patch,dsh plugin add 会自动把它的 patch 层并入 dsh.profile.bundles:

dsh plugin --profile web add github:01Virex/dsh-foxy-jumpscare

重启 dsh web,浏览器 Ctrl+F5 硬刷新 即可生效。

方式 B:手动安装

  1. 把本项目放到 web profile 的 node_modules 下(默认 C:\Users\<你>\.dsh\profiles\web\node_modules\dsh-foxy-jumpscare\);

  2. 在 web profile 的 cordis.patch.yml 里插入:

    - insert:
        - id: foxy-jumpscare
          name: dsh-foxy-jumpscare
    
  3. (可选)node gen-config.cjs 生成本地 config.json;

  4. 重启 dsh web,浏览器 Ctrl+F5 硬刷新。

配置

配置优先级从高到低:

  1. localStorage 完整配置:dsh-foxy-jumpscare.config(粘贴 JSON,实时生效,无需刷新);
  2. config.json(项目根,本地个性化,被 .gitignore 忽略;缺省时 node half 自动回退到 config.example.json;修改后需刷新页面重新加载);
  3. 内置默认值(见 lib/client.js 顶部 DEFAULT_CONFIG)。

配置文件格式(config.example.json):

{
  "enabled": true,
  "probability": 0.001,
  "intervalMs": 1000,
  "durationMs": 1800,
  "volume": 1.0,
  "debug": false,
  "imageUrl": "/plugins/dsh-foxy-jumpscare/assets/foxy-jumpscare.webp",
  "soundUrl": "/plugins/dsh-foxy-jumpscare/assets/foxy-scream.ogg"
}
默认 说明
enabled true 总开关;false 彻底关掉(应急用)
probability 0.001 每次 tick 触发概率(0.001 = 1/1000)
intervalMs 1000 tick 间隔(毫秒)
durationMs 1800 jumpscare 持续时长(毫秒)
volume 1.0 音量 0~1
debug false 控制台诊断日志
imageUrl 见上 jumpscare 图片地址
soundUrl 见上 尖叫音效地址

应急关闭:不想再被吓时,在浏览器控制台执行(1 秒内立即生效,无需刷新):

localStorage.setItem("dsh-foxy-jumpscare.config", JSON.stringify({ enabled: false }));
// 恢复默认:localStorage.removeItem("dsh-foxy-jumpscare.config")

快速触发 / 测试

不想等 1/1000 的概率,想立刻看效果?浏览器控制台(F12)执行:

window.dshFoxyJumpscare.trigger()  // 立刻跳杀一次
window.dshFoxyJumpscare.hide()     // 立刻收起
window.dshFoxyJumpscare.config     // 查看当前生效配置(只读)

也可以把概率临时拉到 1(每 tick 必中)——控制台执行 localStorage.setItem("dsh-foxy-jumpscare.config", JSON.stringify({ probability: 1 })), 1 秒内就会连跳;改回/删除该键即可恢复默认(都实时生效,无需刷新)。

数学上,默认参数(每秒掷一次、命中率 1/1000)服从几何分布,期望首次触发时间 ≈ 1000 秒 ≈ 16 分 40 秒; 其中位数约 11 分 30 秒(50% 概率在此之前触发)。详见「原理」。

项目结构

dsh-foxy-jumpscare/
├── lib/
│   ├── index.js            # node half:serve 素材与 config.json
│   └── client.js           # browser half:jumpscare 定时器 + 全屏 overlay
├── assets/
│   ├── foxy-jumpscare.webp # Withered Foxy jumpscare 画面(893×609,透明背景)
│   └── foxy-scream.ogg     # Foxy jumpscare 尖叫
├── config.example.json     # 完整配置模板(入库)
├── config.json             # 本地个性化配置(被 .gitignore 忽略)
├── gen-config.cjs          # 初始化 config.json 的脚本
├── cordis.patch.yml        # bundle patch(由 dsh.bundle.patch 自动应用)
├── package.json
├── NOTICE.md               # 素材版权归属说明
├── LICENSE                 # MIT
└── README.md

卸载

  • 方式 A 安装:dsh plugin --profile web remove dsh-foxy-jumpscare;
  • 方式 B 安装:从 cordis.patch.yml 删掉 foxy-jumpscare 那一行,并删除 node_modules 下的包目录。

之后重启 dsh web 即可。

原理

这是 dsh 的「双面(bundle + client)」插件:同一包名既是一个 bundle(通过 dsh.bundle.patch 在配置树里插入一行),又是一个 dsh.client 浏览器插件(web 运行时扫描 dsh.client 元数据、serve /plugins/dsh-foxy-jumpscare/client.js 并注入 window.__DSH_BOOT__)。 node 半部只负责把素材/配置送出本地 HTTP,惊吓逻辑全在浏览器半部。

触发时机(数学期望)

intervalMs(默认 1000ms)独立掷一次骰子,命中率 probability(默认 0.001)。这是几何分布:

  • 期望首次触发时间 = intervalMs / probability = 1000 / 0.001 · 1000ms = 1000 秒 ≈ 16 分 40 秒;
  • 中位数 ≈ 693 秒 ≈ 11 分 30 秒(即 50% 的概率在此前已触发);
  • 1000 秒内至少触发一次的概率 ≈ 63.2%,1 小时内 ≈ 97.3%,1 分钟内 ≈ 5.8%;
  • 无记忆性:无论已经安静了多久,接下来每一秒的触发概率仍是 1/1000,剩余期望等待时间仍是 1000 秒——"期望"是长期平均,不保证任何具体时刻。

贡献

欢迎提 Issue / PR,或直接在 config.example.json 里调整默认参数。改动后记得跑一次 node scripts/package-release.cjs 检查发布文件是否齐全。

License

代码:MIT。素材版权归原权利方所有,见 NOTICE.md

上一个 Prev otto-dsh 下一个 Next deepseek-usage-info-check