๐Ÿ˜ˆ dsh-verification-meme

August 31, 2026 ยท View on GitHub

๐ŸŒ English | ไธญๆ–‡

A prank "security verification" plugin for DeepSeek Harness: it intercepts button clicks in the Harness web UI (including workspace/view switches) and only lets them through after a random "security verification". Ships with 7 verification types, a prank console, an admin bypass, runaway settings buttons, ban-on-failures, and more.

UI language: the plugin is bilingual โ€” it follows the language setting of the Harness GUI automatically (choose Chinese in Harness settings for the Chinese prank UI, English for the English one; unset falls back to the browser). You can also force a language in the console (๐ŸŒ UI language).

Client-only plugin: all logic runs in the browser. The 20 built-in photo-grid images and their answers are embedded into lib/client.js (base64) at build time, so nothing external is downloaded at install/runtime. Configuration persists in browser localStorage. The host half is a no-op entry point and publishes no services.

Screenshots

Screenshot 1Screenshot 2
Screenshot 1Screenshot 2
Screenshot 3Screenshot 4
Screenshot 3Screenshot 4

Repository layout

.
โ”œโ”€โ”€ package.json          # package name dsh-verification-meme (unscoped, avoids collisions with official @deepseek-ai/* runtime injections)
โ”œโ”€โ”€ cordis.patch.yml      # bundle patch: declares the mount row (applied automatically via dsh.bundle.patch)
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ index.js          # host half (no-op entry, so the composition row can mount)
โ”‚   โ”œโ”€โ”€ client.js         # client half (build artifact, embeds the photo data)
โ”‚   โ”œโ”€โ”€ client.template.js # client source template (with __PHOTOS_JSON__ placeholder)
โ”‚   โ”œโ”€โ”€ modal.css.txt     # modal styles (inlined at build time)
โ”‚   โ””โ”€โ”€ panel.css.txt     # console panel styles (inlined at build time)
โ”œโ”€โ”€ photo/                # build input: 20 photos, 400ร—400 (1.jpg ~ 20.jpg)
โ”œโ”€โ”€ test.txt              # build input: photo-grid answers (format documented in the file header)
โ”œโ”€โ”€ tools/build.ps1       # rebuild script
โ”œโ”€โ”€ preview/              # screenshots used in the README
โ”œโ”€โ”€ README.md             # English documentation (this file)
โ””โ”€โ”€ README.zh.md          # ไธญๆ–‡่ฏดๆ˜Ž

The other folders (api/, config-ui/, dsh-plugin/, harness/, userscript/) are backups from the early development process. The plugin does not depend on them โ€” feel free to delete them before publishing.

Install

# From a GitHub repo (the market downloads the whole repo tarball via codeload)
dsh plugin --profile web add github:<your-username>/dsh-verification-meme

# From a local directory
dsh plugin --profile web add link:C:/path/to/dsh-verification-meme

# From npm after publishing
dsh plugin --profile web add dsh-verification-meme

Restart DSH afterwards (or wait for the next boot), then open Settings โ†’ ๐Ÿ˜ˆ ๅฎ‰ๅ…จ้ชŒ่ฏ / Security. The plugin defaults to enabled: true, mode: chaos (intercepts everything) โ€” you may want to click ๐Ÿ‘‘ Bypass 15 min before changing settings.

Photos and answers (test.txt)

Nothing is downloaded at runtime โ€” everything is embedded in lib/client.js. photo/ and test.txt are only the build inputs:

  1. Replace photo/1.jpg ~ 20.jpg and edit test.txt (three lines per photo: ๏ผˆnumber๏ผ‰, the correct tile digits, the object to find; 0 = no correct tiles);
  2. Run pwsh tools\build.ps1 from the repo root to regenerate lib/client.js;
  3. Reinstall (or overwrite node_modules\dsh-verification-meme\lib\client.js in the web profile) and restart.

Configuration

SettingDefaultNotes
Master switchonTurns interception off entirely
Trigger modechaoschaos/every_click = intercept all; specific_actions = button list; new_topic_only = only new-topic actions
Verification typesall 7Confirmation / CAPTCHA / human check / landscape slider / puzzle slider / photo grid / animal grid
Admin bypassoffLets everything through for 5/15/30 minutes
Max retries3Exceeding it marks you as a robot
Runaway settings buttonsonThe master switch / trigger mode controls escape 3 times before behaving
Ban on failuresoffN failures = N-second ban
UI languagefollow Harnessauto / ไธญๆ–‡ / English

Publishing to GitHub / npm

  • GitHub: push this repo; users install with dsh plugin --profile web add github:owner/repo. The dsh.bundle.patch declaration in package.json automatically supplies the mount row on the next boot, so users never edit cordis.patch.yml by hand.
  • npm: npm publish โ€” the files field only ships lib/, cordis.patch.yml and README.md; the build inputs (photo/, test.txt) stay out of the npm package.