Open-source project
Nagi-ovo/dsh-ads avatar
Nagi-ovo/dsh-ads

dsh-ads: A Parody Ad Plugin That Turns the DSH Web UI into a 2005 Portal

把 DSH 变成 2005 年门户网站|Parody ads, fake games, and popups for the DSH Web UI

638 stars5 forksTypeScriptBSD-3-Clause

At a glance

What is it?
dsh-ads is a TypeScript plugin for the DSH (DeepSeek Harness) web UI that injects a complete set of fictional ads into the sidebar, conversation view, inference interruptions, and corner overlays. It ships two distinct aesthetic sets: a Chinese early-internet portal mode with rotating banner ads and a slot wheel, and an English scam-ad parody mode. Every ad slot can be individually disabled in settings.
Who is it for?
dsh-ads is for DSH users who want to add humor to their inference sessions and do not mind a brief inference display delay while the fake ad runs. It has no effect on model output and does not modify files on the host.
Can I use it commercially?
Yes. BSD-3-Clause is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What dsh-ads Does and Why It Exists

dsh-ads is a parody plugin for the DSH web interface. DSH is the DeepSeek Harness, an open-source framework for running DeepSeek AI models. dsh-ads has no effect on model behavior: the inference continues in the background while a fake ad plays, and the model's response and tool calls appear after the ad ends. The plugin states explicitly in the README that its ads are fictional and unaffiliated with DeepSeek or any real company.

The README describes its purpose as humor: turning DeepSeek Harness into a 2005-era Chinese internet portal, complete with the aesthetic of browser games, lottery promises, and pop-up warnings that defined early commercial websites. The plugin targets DSH users who want to add a comedic layer to their workflow without affecting the underlying model or inference pipeline.

The README's description of the slot wheel mechanic captures the tone: the plugin offers a chance to win V4 Pro access, but the README acknowledges that hope is genuinely slim. It is a parody of browser game advertising, not a real lottery. All brands, characters, domain names, prices, and promises shown in the ads are fictional, as the disclaimer notes.

Two Aesthetic Modes Tied to DSH Language Settings

The plugin ties its content to DSH's language setting. Switching DSH's Settings to Chinese activates the Chinese portal mode: ads for browser games, animated 贪玩蓝鲸 banners that rotate every 20 seconds, a jackpot wheel for winning V4 Pro access, and financial-theme imagery. Switching to English activates the English scam-ad parody mode: fake antivirus warnings, bizarre product ads, and actual gameplay animations.

The README emphasizes that the switch is immediate and requires no page refresh. Both modes share the same placement logic: the sidebar, mid-conversation interruptions, inference-time pauses, and a corner overlay. The README notes that the inference timing displayed during fake ad pauses is measured from real inference data, while the national rankings shown are fictional.

Every ad slot can be disabled independently in Settings under 'Ads (unofficial)'. The settings persist across restarts.

Installing dsh-ads

The recommended installation targets the `web` profile in DSH:

sh
dsh plugin --profile web add @nagi-ovo/dsh-ads

If the DSH web UI is running, restart it and refresh the page after installation. To install directly from the GitHub repository instead of npm:

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

Verify the plugin is active by running:

sh
dsh --profile web --dump-config

The build artifacts are committed to the repository, so no separate build step is required. For modifying the source, clone the repository and install from the local path:

sh
dsh plugin --profile web add .

The plugin is also available through the community plugin-registry in Settings under Plugins. Compatibility is declared for DSH versions 0.1.1-rc.2 through 0.1.7-rc.2.

The Free Ad Slot for the Plugin Community

One feature of dsh-ads is a community cross-promotion mechanism built into the ad rotation. Any public GitHub repository with the `dsh-plugin` topic that has been updated within the past two weeks is eligible for a free ad slot in the rotation. Clicking one of these community ads opens the real repository page. The README states that a repository remains discoverable even after moving to a different account or organization.

This creates an organic discovery system for the DSH plugin ecosystem. As more plugin authors tag their repositories with `dsh-plugin`, they automatically appear in the dsh-ads rotation for anyone running the plugin. There is no registration step; the only requirement is the GitHub topic tag and a recent update.

Plugin authors who want to customize their entry with specific copy or imagery instead of relying on automatic discovery can submit materials through `contrib/README.md`. The contrib path requires a pull request, so customized entries go through review before appearing in the rotation.

The README also notes that impression records are stored only in the local browser and are not transmitted anywhere. This applies to both the community plugin slots and all other ad interactions.

The same author's dsh-visualize plugin is mentioned in the README as the only non-parody ad in the entire file: it enables the model to draw interactive UI directly in the conversation. The README calls this out explicitly as a self-aware joke about in-universe advertising.

Technical Implementation and Privacy

dsh-ads is a TypeScript plugin using the DSH plugin system. The `package.json` shows it uses `@deepseek-ai/cordis` for the plugin framework, `@deepseek-ai/dsh-client-locale` for the language detection that drives mode switching, React 18, and `@deepseek-ai/schemastery` for settings management. The plugin's client code is injected into the DSH web platform via the `client` entry in the `dsh` block of `package.json`, targeting the `web` platform.

The build system uses tsdown for compilation, vitest for testing, and pnpm for package management. The `cordis.patch.yml` file applies a patch to the DSH Cordis configuration, which is how the plugin hooks into the inference display pipeline to show ads during inference without blocking model execution. The pnpm workspace setup and `tsconfig.client.json` handle the separation between server-side and client-side TypeScript compilation targets.

The README's disclaimer states the plugin does not scan, read, or modify files on the machine. The one network call it makes is a GitHub Stars check triggered only when the user actively clicks a verify button; it uses the local `gh` binary or token if available, and falls back to the anonymous GitHub API otherwise. The result is stored locally in the browser.

Contributors who want to submit custom ad copy or images for their plugins can follow the instructions in `contrib/README.md` and open a pull request. The contrib system provides the mechanism for plugin authors to add their own plugin to the community ad rotation with custom text or imagery rather than relying solely on automatic discovery from the `dsh-plugin` GitHub topic.

Limitations: DSH Version Dependency and Parody Scope

dsh-ads is compatible only with DSH versions 0.1.1-rc.2 through 0.1.7-rc.2. Users on a newer DSH release will need to check whether the plugin has been updated for their version before installing. The declared compatibility range in `package.json` is the authoritative source; the community plugin-registry entry would also reflect the compatible range.

The plugin's effect is entirely presentational. It does not change model selection, prompt construction, inference parameters, or any functional behavior of DSH. If the goal is to modify how DSH routes requests, injects context, or manages memory, this plugin is the wrong tool. It operates exclusively at the display layer, intercepting inference status updates to show fake ads and then releasing the display to show the actual model response.

A comparable plugin from the same author, dsh-visualize, extends DSH with model-generated interactive UI in the conversation. The README calls out dsh-visualize as the only earnest, non-parody recommendation in the entire README file. It lets the model produce rendered, interactive interface components inside the chat window, which is a functional capability rather than a cosmetic one. Both are distributed under BSD-3-Clause, which allows redistribution as long as the original copyright and license notices are preserved.

The last push was on 2026-09-25, indicating active development close to the time of this writing. Version 0.1.1 is the current package version as shown in `package.json`.

Editorial conclusion

dsh-ads is for DSH users who want to add humor to their inference sessions and do not mind a brief inference display delay while the fake ad runs. It has no effect on model output and does not modify files on the host. The plugin requires DSH 0.1.1-rc.2 to 0.1.7-rc.2; check your DSH version before installing with `dsh plugin --profile web add @nagi-ovo/dsh-ads`. Anyone who runs a plugin with the `dsh-plugin` topic on GitHub will have their repository appear in the rotating free ad slots automatically.

Frequently asked questions

What does DSH stand for in dsh-ads?

DSH stands for DeepSeek Harness, an open-source framework for running and interacting with DeepSeek AI models. dsh-ads is a plugin for the DSH web UI that injects parody ads into the interface as a humorous add-on.

Does dsh-ads interfere with model inference?

No. The README states the model continues processing in the background while a fake ad plays. The response and any tool calls appear after the ad ends. The plugin has no effect on model selection, prompt construction, or inference parameters.

How do I disable specific ad slots in dsh-ads?

Each ad placement can be turned off independently in DSH Settings under 'Ads (unofficial)'. The settings persist across restarts, so disabling a slot survives closing and reopening the DSH web UI.

Official sources

  1. Issues
  2. License: BSD-3-Clause
  3. Nagi-ovo/dsh-ads on GitHub
  4. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/nagi-ovo-dsh-ads.svg)](https://hysenlabs.com/projects/nagi-ovo-dsh-ads)