模型思考时飘出虚构广告弹窗逗你解闷
29.7/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add nfysx/dsh-ad-popups该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · ads
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 15 处,展示前 15 条)
- 读取本地文件index.js:101
const raw = JSON.parse(readFileSync(SETTINGS_FILE, 'utf8')) - 写入本地文件index.js:111
mkdirSync(dirname(SETTINGS_FILE), { recursive: true }) - 写入本地文件index.js:112
writeFileSync(SETTINGS_FILE, JSON.stringify({ ...readSettingsFile(), ...patch }, null, 2), 'utf8') - 读取本地文件index.js:155
return readFileSync(file, 'utf8') - 发起网络请求client.js:621
fetch(API_SETTINGS, { - 发起网络请求client.js:1496
fetch(API_SETTINGS, { cache: 'no-store' }) - 发起网络请求client.js:1550
fetch(API_SETTINGS, { - 发起网络请求client.js:1619
fetch(API_STATE, { cache: 'no-store', signal: controller ? controller.signal : undefined }) - 发起网络请求src/client/30-manager.js:102
fetch(API_SETTINGS, { - 发起网络请求src/client/41-panel-rest.js:40
fetch(API_SETTINGS, { cache: 'no-store' }) - 发起网络请求src/client/41-panel-rest.js:94
fetch(API_SETTINGS, { - 发起网络请求src/client/50-manager-rest.js:28
fetch(API_STATE, { cache: 'no-store', signal: controller ? controller.signal : undefined }) - 读取本地文件src/client/build.mjs:72
const text = readFileSync(join(root, rel), 'utf8') - 读取本地文件src/client/build.mjs:216
existing = readFileSync(OUT, 'utf8') - 写入本地文件src/client/build.mjs:225
writeFileSync(OUT, output, 'utf8')
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/dsh给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
dsh虚拟广告弹窗插件
README
由 DeepSeek 最新模型翻译生成dsh-ad-popups · 思考期虚拟广告弹窗
给 DeepSeek Harness 的娱乐插件:模型正在思考、回答还没出来时,主界面会飘出一堆一眼就是假的广告弹窗。
⚠️ 全部内容纯属虚构恶搞,不构成任何广告宣传。 插件不跳转任何外链、不收集任何数据、不带任何真实品牌或商品;每个弹窗都常驻「本广告纯属虚构 · 不构成任何宣传」的标注。
┌───────────────────────────┐ ┌───────────────────────────┐
│ ● DS广告联盟 · 弹窗 1 │ │ ● DS广告联盟 · 弹窗 2 │ │ │ │ │ │ ╭──────────╮ │ │ ╭──────────╮ │ │ │ 限时福利 │ │ │ │ 系统提示 │ │ │ ╰──────────╯ │ │ ╰──────────╯ │ │ 恭喜!您是第 1 位访客 │ │ 检测到您的电脑有 1 个 CPU │ │ 本页面只有您一个人看… │ │ 这可能严重影响……
展开完整文档(README 剩余 1 节)
dsh-ad-popups · 思考期虚拟广告弹窗
给 DeepSeek Harness 的娱乐插件:模型正在思考、回答还没出来时,主界面会飘出一堆一眼就是假的广告弹窗。
⚠️ 全部内容纯属虚构恶搞,不构成任何广告宣传。 插件不跳转任何外链、不收集任何数据、不带任何真实品牌或商品;每个弹窗都常驻「本广告纯属虚构 · 不构成任何宣传」的标注。
┌───────────────────────────┐ ┌───────────────────────────┐
│ ● DS广告联盟 · 弹窗 1 │ │ ● DS广告联盟 · 弹窗 2 │ │ │ │ │ │ ╭──────────╮ │ │ ╭──────────╮ │ │ │ 限时福利 │ │ │ │ 系统提示 │ │ │ ╰──────────╯ │ │ ╰──────────╯ │ │ 恭喜!您是第 1 位访客 │ │ 检测到您的电脑有 1 个 CPU │ │ 本页面只有您一个人看… │ │ 这可能严重影响……没什么影响 │ │ ▓▓ 第 1 位访客 · 还是 ▓▓ │ │ ▓▓ 1 个 CPU · 严重超标 ▓▓ │ │ ┌───────────────────────┐ │ │ ┌───────────────────────┐ │ │ │ 立即领取 │ │ │ │ 立即清理 │ │ │ └───────────────────────┘ │ │ └───────────────────────┘ │ │ 本广告纯属虚构 [关闭] │ │ 本广告纯属虚构 [关闭] │ └───────────────────────────┘ └───────────────────────────┘
安装
本插件是标准的 DSH 插件包(宿主半边 + 注入式浏览器半边)。
先装依赖
npm install # 只有 3 个包,主要是 @deepseek-ai/schemastery(声明 Config 用)
只装进 DSH profile 使用时,Dsh 运行时会解析到自带的 @deepseek-ai/schemastery,所以插件本身能跑;但要让自测和构建在本目录里跑通,必须先 npm install ——否则 import './index.js' 会因为找不到该包而失败(宿主相关用例会整体挂掉)。
改源码后重新构建
仓库里已经带了构建产物 client.js,直接安装即可;改过 src/ 之后:
npm run build # 由 src/client/.js 生成 client.js
npm run check:build # 只校验产物与源是否同步
npm test # 先校验产物,再跑全部 57 条用例
1) 命令行(web 等普通 profile)
dsh plugin --profile <profile> add link:<本目录绝对路径>
例:dsh plugin --profile web add link:D:\path\to\dsh-ad-popups
2) 桌面端(Electron,desktop profile)
desktop profile 由应用独占管理,命令行 dsh plugin 会被拒绝。走应用内的 设置 → 插件管理,以本地目录安装本目录;或者手工两步:
1. 把本目录放(或软链)到 <profile>/node_modules/dsh-ad-popups;
2. 在 <profile>/cordis.patch.yml 里加一行:
- insert:
- id: dsh-ad-popups
name: dsh-ad-popups
生效时机:宿主半边在安装时会热挂载;注入发生在 index.html 被响应的时候,所以装完后要完整刷新页面或重启应用。桌面端首次安装请重启一次(注入行是宿主启动时一次性收集的)。
确认装好了:
- GET http://127.0.0.1:<端口>/dsh-ad-popups/client.js → 200(404 = 没挂上);
- GET http://127.0.0.1:<端口>/dsh-ad-popups/settings → 200(插件自带的设置页面)。
/api/dsh-ad-popups/ 要带浏览器会话 cookie,用 curl 直接访问会得到 401 ——那是连接层的正常门槛,不是插件的问题。
使用
模型一开始思考,弹窗就自己飘出来了。想调整就点右下角「虚拟广告」徽标:
| 操作 | 结果 |
| 点徽标上的 设置 | 页面内弹出设置面板 |
| 点弹窗上的 关闭 | 挣扎 1–3 次后关掉这一个 |
| 0.6 秒内连按 3 次 Esc | 清空眼前所有弹窗 |
| 面板里 总开关 | 彻底停止投放;徽标按钮变成「开启」 |
| 面板里 − / + | 调「同时最多显示几个」,每次一格(1-8) |
| 面板里 保存 / Ctrl+S | 写回宿主,下一个弹窗就用新文案 |
设置面板里的文案是表单化编辑:每条广告一组输入框,带上移 / 下移 / 复制 / 删除与「+ 新增一条」;底部「高级:批量文本」可以整段粘贴或导出备份。
面板里的开关与上限都是自绘控件(开关是一颗滑块,上限是两个步进按钮 + 只读数字),不走原生 checkbox / number 输入框的默认行为 —— 这样不会因为宿主的全局样式或事件干预而出现「点了、敲了但没反应」。
文案格式(批量文本 / 设置文件里的存储格式)
以 # 开头是注释,空行忽略角标 | 标题 | 正文 | 跑马灯 | 按钮文字 | 配色
- 只有 标题 是必需的;只写一列也能用,其余字段缺省时自动补。
- 正文想留空写 -;全角竖线 | 也认(中文输入法很容易打出来)。
- 配色可选:hot / warn / blue / gold / tech / pink / purple / green。
- 最多 60 条。
想看现成的 16 条内置文案,直接打开设置面板,或看 ads.js 里的 DEFAULT_ADS。
配置
优先级:设置文件 > 插件 Config > 内置默认。
设置文件
$DSH_HOME/dsh-ad-popups.json # Windows 默认:C:\Users\<你>\.dsh\dsh-ad-popups.json
{
"enabled": true,
"maxPopups": 4,
"adText": "限时福利 | 恭喜!您是第 1 位访客 | … | 立即领取 | hot\n第二条 | …"
}
宿主每次请求都重新读这个文件,所以改完存盘约 0.6 秒生效,不用重启(手工编辑时注意 adText 里的换行必须写成转义的 \n,所以更推荐用设置面板改)。
插件 Config(profile patch 层)
- id: dsh-ad-popups
name: "dsh-ad-popups"
config:
enabled: true # false = 不投放广告(脚本仍注入,徽标留在原地供重新开启) maxPopups: 4 # 同时在屏的弹窗上限,1-8
HTTP 接口
curl -X POST http://127.0.0.1:<端口>/api/dsh-ad-popups/settings \
-H 'content-type: application/json' \
-d '{"enabled":true,"maxPopups":4}'
写接口只接受本机回环请求(Host 必须是回环地址;带 Origin 时必须与 Host 同源),请求体上限 512 KiB,超限回 413。
工作原理
┌────────────────────── 宿主半边 index.js ─────────────────────┐ 模型开始思考 ──▶ agent/assistant-stream(流式,长回答唯一高频信号) │
api-session/status(官方权威) · session/event(turn/start|end) │
agent/status(兜底) · session/disposed │
│ 维护「哪些会话还在跑」,空闲 8 秒落回空闲 │ ▼ │ GET /api/dsh-ad-popups/state → { thinking, sessions[], ads, … }│ GET /api/dsh-ad-popups/settings → 读设置与文案 │ POST /api/dsh-ad-popups/settings → 写 $DSH_HOME/dsh-ad-popups.json│ GET /dsh-ad-popups/settings → 独立设置页(自带 HTML) │ GET /dsh-ad-popups/client.js → 浏览器半边脚本 │ tapIndex + webserver/index-inject → 两条注入通道(浏览器 / 桌面) │ └─────────────────────────────────────────────────────────────┘ │ ┌──────────────────── 浏览器半边 client.js ───────────────────┐ 每 600ms 拉一次状态 + 素材 │ 发现新的一轮思考 → 错落投放 2-4 个虚构弹窗(避开输入区、互不重叠)│ 挣扎式关闭 · 3×Esc 清屏 · 右下角徽标(设置 / 开启) │ └─────────────────────────────────────────────────────────────┘
安全边界
| 项 | 结论 |
| 外链 / 跳转 | 无。素材与界面里没有 、没有 href、没有内联 onclick |
| 外发数据 | 无。浏览器半边只 fetch 同源状态/设置接口;响应里只有会话 id、耗时、配置、文案 |
| 写设置的门槛 | 只接受回环 Host,Origin 必须同源,请求体上限 512 KiB(超限 413) |
| 权限 | 不注册工具、不读用户文件、不执行子进程;只写 $DSH_HOME/dsh-ad-popups.json |
| 可关闭性 | 单窗关闭、3×Esc 清屏、总开关;总开关关闭后仍保留开启入口 |
自测与构建
npm run build # 生成 client.js(由 src/client/.js 拼接)
npm run check:build # 只检查 client.js 是否与源同步(CI 用)
npm test # = check:build && node --test --test-concurrency=1 "test/.test.mjs"
57 条用例,零依赖(只用 Node 内置的 node:test),分四层:
| 文件 | 覆盖 |
| test/ads.test.mjs | 文案解析:六列 / 单列 / 占位符 / 全角竖线 / 未知配色 / 注释与空行 / 条数上限 / 往返稳定 / 字段裁剪 |
| test/host.test.mjs | 四条路由的注册与注销、设置页内容、双通道注入(含幂等)、四路状态信号(含流式保活回归)、turn/end 回落、Config 的 Standard Schema 校验、设置文件优先级、回环/同源把关、413/400/405 |
| test/client.test.mjs | 最小 DOM 桩里真跑浏览器半边:投放、只留关闭键、自绘开关与上限步进器(含 1/8 边界)、表单增删、保存回写、失败退避、destroy 清理、关闭态徽标一键开启 |
| test/integration.test.mjs | 真 node:http + 真 fetch 跑通整条 HTTP 链路(改文案立刻生效、非法文案被拒、恢复默认) |
test/client.test.mjs 里的 DOM 桩实现了真实的事件传播(捕获 → 目标 → 冒泡 + stopPropagation),所以「监听器根本没被触发」这类 bug 会被测出来,而不是被绕过去。
文件
| 文件 | 作用 |
| index.js | 宿主半边:四路状态追踪 + HTTP API + 双通道 index 注入 |
| client.js | 构建产物:浏览器半边(弹窗、设置面板、右下角徽标) |
| src/client/ | 浏览器半边的源模块(format.js 与 ads.js 同源,会被内联进产物) |
| src/client/build.mjs | 构建脚本:拼接 + 生成头 + 一致性校验 |
| ads.js | 文案 ⇄ 素材的纯函数解析(宿主 import,自测直接用) |
| settings.html | 插件自带的独立设置页(浏览器里可直接开) |
| cordis.patch.yml | bundle 挂载声明 |
| test/ | 57 条自测(不参与运行时) |
| tools/asar-read.mjs | 开发用:零依赖读取 Electron app.asar |
许可
MIT。内置文案为原创恶搞文本,不含任何真实品牌、商品或服务。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
nfysx/dsh-ad-popups
模型思考时飘出虚构广告弹窗逗你解闷
相关插件 · 营销 / 广告
复古广告弹窗Nagi-ovo/dsh-ads
把 DSH 变成 2005 年门户网站|Parody ads, fake games, and popups for…
★ 679已汉化DSH
67.4
精酿竖版宣传片Finderchangchang/brewreel
精酿 BrewReel:让 DeepSeek 这类便宜模型也能做出好看的竖版宣传片。写一份产品简报,AI…
★ 166已汉化DSH
62.6
工作区分组树KannaKuron/dsh-better-workspace
给 DeepSeek Harness DSH 的侧边栏「工作区」列表装上一套两层文件夹系统——磁盘层按目录路径嵌套官方…
★ 31已汉化DSH
48.1
跨窗提醒Aisland-SJL/dsh-reminder
🔔 DeepSeek Harness 跨窗口完成与审批通知——弹窗提醒把你拉回 DSH,Codex/WorkBuddy 风格。
★ 18已汉化DSH
40.4
推理档位自动选择justhalfbit/dsh-plugin-jev-effort-selector
让 Jev System One 模型替你决定每条消息该用多深的推理。
★ 7已汉化DeepSeek 客户端
37.1
模型价格看板vitas/dsh-model-pricing
在选择模型之前比较 LLM API 价格——并在使用之后查看你实际支付了多少。 这是一个
★ 2已汉化DeepSeek 客户端
36.5
这是你的仓库?认领条目