dsh-ads

519Star4Fork13Issue0Watching

给 DeepSeek Harness 套上一整套 2005 年风格的虚构广告:侧栏横幅、对话内插件推荐、推理中途的财神转盘、假杀毒告警、假游戏海报和跑分弹窗,全部能在设置里逐项关掉。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
BSD-3-Clause
分支
main
deepseek-harnessdsh-plugintrollingweb-ui

安装

$ dsh plugin --profile web add github:Nagi-ovo/dsh-ads

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 Nagi-ovo/dsh-ads:先查看仓库 https://github.com/Nagi-ovo/dsh-ads.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

dsh-ads 给 DeepSeek Harness 套上一整套虚构广告,模仿 2005 年中文门户和英文页游弹窗的样子,默认七种广告位全部开启,每个开关都能在 DSH 的"广告(非官方)"设置页里单独关掉,适合想玩玩梗或体验一下"AI 工具也内嵌广告位"是什么感觉的用户。

核心能力

  • 在对话两侧栏插入横幅/竖版广告,中文是页游/财神鲸风格,英文是假杀毒/搞笑横幅
  • 在对话正文里每隔几轮插入一条"插件推荐",点击会跳到该插件的真实 GitHub 仓库
  • 推理中途随机弹出"财神鲸"转盘,假装要抽 V4 Pro,模型实际仍在后台运行
  • 右下角定时滑出图片弹窗,左下角放可拖动、可折叠的"贪玩蓝鲸"假游戏海报
  • 启动时弹一个"跑分中心"小窗,加载耗时是浏览器实测,全国排名是编的
  • 假杀毒告警(ShieldToast)能验证当前 GitHub 账号是否 star 过本插件仓库

技术实现

  • 语言: TypeScript(浏览器侧 React 18 + TSX,节点侧纯 TS),ESM 模块
  • 关键依赖: @deepseek-ai/cordis ^4.0.1、@deepseek-ai/dsh-client-locale ^0.1.0-rc.6、@deepseek-ai/schemastery ^3.18.1、react ^18.2.0(均为 peerDependencies)
  • 架构模式: 节点端通过 cordis bundle patch 注入,声明 inject=['webServer'] 用于注册两条 HTTP 路由(/dsh-ads/registry.json、/dsh-ads/star-check.json);浏览器端通过 dsh client slot 注册三个挂载点——conversation.input.dock(浮层)、conversation.chat.turnTail(对话内插入)、settings.section(独立设置页)
  • 入口文件: 节点端 src/index.ts(导出 apply/config/inject);浏览器端 src/client/index.tsx(导出 apply/inject);构建产物分别为 lib/index.js 和 lib/client.js

适用场景

想让 DSH 看起来像 2005 年的中文门户或者英文页游站点的人,或者想在团队内部演示"AI 工具被广告位塞满是什么体验"的人。广告里夹带的真实 GitHub 仓库推荐,适合作为给自己的 DSH 插件做免费曝光的方式(只要在仓库打上 dsh-plugin topic 且两周内有 push 即可);不适合追求清爽工作环境的日常使用者。

前置依赖与兼容性

依赖最低版本说明
DSH(cordis)^4.0.1节点端 bundle 注入宿主所需
DSH 客户端运行时^0.1.0-rc.6ds bndle.client.inject 声明依赖该版本
DSH 客户端 locale^0.1.0-rc.6语言感知广告位所必需
DSH schemastery^3.18.1节点端运行时
React^18.2.0浏览器端 UI 依赖
Node建议 ≥22源码使用 Node 22+ ESM 语法与 built-in fetch,package.json 未硬性声明 engines
平台跨平台仅依赖浏览器与 Node 内置 API,无需任何原生模块
原生模块仅使用 node:http / node:child_process 内置模块,无需 node-gyp 编译

安装方式

dsh plugin --profile web add github:Nagi-ovo/dsh-ads

配置项

节点端通过 Config 暴露(写到 DSH profile 配置里),浏览器端通过"广告(非官方)"设置页持久化开关。说明列写人话,不写底层 API 路径。

配置类型说明默认值
freshDaysnumber(天)一个 GitHub 仓库最近多少天内 push 过才会被轮播;设为 0 或负数则展示 topic 下全部公开仓库14
cacheMinutesnumber(分钟)插件多久向 GitHub 重新拉一次插件列表;本机缓存命中期间复用上次结果30
侧栏横幅(gutter)开关关掉后,对话左右两列的横幅/竖版广告不再出现
对话内插件推荐(feed)开关关掉后,每隔几轮插在正文之间的"插件推荐"不再出现;这是唯一带真实仓库链接的广告
推理激励广告(reward)开关关掉后,推理中途不再弹"V4 Pro 抽奖"转盘
右下角弹窗(popup)开关关掉后,定时滑出的图片弹窗不再出现
跑分中心(speed)开关关掉后,启动时不再报告"0.29 秒启动+全国排名"小窗
安全中心(scare)开关关掉后,假杀毒告警与"验证修复"按钮不再出现
贪玩蓝鲸(poster)开关关掉后,左下角可拖动的假游戏海报不再出现
提示音(muted)开关关掉后,弹窗和海报出现时的 Web Audio 合成"叮"声不再播放
立刻关闭所有广告(刷新后恢复)一次性按钮不写入存储,只在本次会话内隐藏一切广告位-

常见问题

Q: 安装后必须重启 DSH 才能看到广告吗?

A: 是的。README 明确说"如果 dsh web 正在运行,重启后刷新页面";装完不重启,设置面板里看不到"广告(非官方)"入口,广告层也不会挂载。

Q: 安装之后这些广告能不能逐个关掉?

A: 能。装好后会在 DSH 设置面板多出一个"广告(非官方)"标签页,里面每种广告位都有独立开关,包括侧栏横幅、对话推荐、推理转盘、右下弹窗、跑分中心、假杀毒、贪玩蓝鲸海报和提示音,选择会写进本机浏览器存储,下次启动依然生效。

Q: 想立刻全部关掉、不改上面那些开关怎么办?

A: 设置页底部有一个"立刻关闭所有广告(刷新后恢复)"按钮,它只在本次会话生效,不会被持久化,刷新页面后按上面的开关恢复——这是插件有意为之,避免一次误点把长期设置清空。

Q: 对话里那种能点进真实仓库的"插件推荐"是怎么挑出来的?

A: 节点端通过宿主注册的 HTTP 路由发现:优先用本机的 gh CLI,再用 GITHUB_TOKEN/GH_TOKEN,最后落到匿名 GitHub API;在 GitHub 上搜索 topic=dsh-plugin is:public archived:false 的仓库,过滤掉 archived/disabled/fork 和自己,然后按最近两周内有 push 的标准筛一遍。结果按"本机每个 slug 看到次数最少优先"分配,所以每个插件会先被轮过一遍才会重复。

Q: 推理中途那个"V4 Pro 转盘"是真的卡住模型了吗?

A: 没有。模型一直在后台继续生成,只是把当前助手那一行的可视高度冻结、把后面所有未完成的行藏起来,转盘结束后一次性放出来。源码里它只是修改 maxHeight/overflow,并把 data-chat-flow-kind=assistant-step 之外的行 hide 掉,不会真的中断 session。

Q: 我装了以后,这个插件会往我机器上读文件或写文件吗?

A: 不会。README 的免责声明和代码里都没有任何文件扫描或读写:节点端只调 gh CLI/匿名 API 查仓库;浏览器端的所有偏好(哪些广告位开着、海报拖到哪里)都只写到 localStorage 的 dsh-ads:* 键下,关闭浏览器数据就清空。

Q: 这个插件能卸载干净吗?

A: 能。关掉所有开关只是让它什么都不显示,插件本身还在,设置页面会明说这一点。要彻底移除,按普通 DSH 插件卸载流程移除即可,localStorage 里的键如果想立刻清掉,可以在浏览器开发者工具里手动删 dsh-ads: 开头的项。

上手难度

入门 — 默认装好就有一整套广告位在跑;设置面板里 7 个开关都是"开/关"二元按钮,只有想自己插件被曝光时才需要碰 GitHub topic 或 contrib/*.json。

已知问题与限制

  • 节点端依赖宿主提供 webServer 能力,无 web server 的宿主(TUI、ACP、headless)节点侧功能会静默降级,浏览器侧也不会有广告层
  • 浏览器侧广告层只在中英文两种语言下有完整素材;其他语言(locale !== 'en' 的情况)会回退到中文素材
  • 当 GitHub 实时发现失败(无 gh CLI、无 token、被限流、离线)时,使用上次 pnpm catalog 构建的本地快照(CATALOG_SNAPSHOT),新出现的仓库要等下次快照刷新才看得到
  • 对话内插件推荐(INLINE_EVERY_N_TURNS = 2)只看 seq 奇偶判断"这轮是否带广告",所以前两轮不出现广告(seq > 0 且 seq % 2 === 0)
  • 离线/失败时节点端缓存与浏览器端 ledger 都只存在内存,刷新页面后会从头开始轮播

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/Nagi-ovo/dsh-ads)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录