DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Moyu Reader — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
M

dsh-moyu-reader

Moyu Reader

DSH web plugin: reads local .txt novels in the right sidebar, with encoding detection, chapter splitting, search, reading progress, bookmarks, and a boss key that hides it instantly. 摸鱼小说阅读器。

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:XIAOZHAOXSXH/dsh-moyu-reader#c4997266a5b48bea14885896147e1cfb5af05943
READMECompatibilityVersions

Compatibility and provenance

Moyu Reader is published as dsh-moyu-reader and currently resolves to version 1.0.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/28/2026

Versions

1.0.0stable
9/28/2026
Latest
1.0.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/28/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

README

dsh-moyu-reader

Read local .txt novels in the DSH web UI's right sidebar — with a boss key.

中文说明

Features

  • A reader in the right sidebar. It opens as a tab beside the conversation rather than as a modal, so a glance never costs you your place.
  • One-key hide (boss key). Defaults to Ctrl+</kbd> (<kbd>⌘</kbd>+<kbd> on macOS). Configure it to collapse only the reader, or the whole right sidebar with it.
  • Three launchers. A button in the left sidebar footer, one in the session header, and a floating ball in the bottom-right corner. Each can be turned off independently.
  • Shelf. Browse local directories, with text files filtered out of the noise and recently opened books remembered.
  • Automatic chapter splitting. Recognizes 第一章, 第 1 章, Chapter 1, and similar headings; falls back to fixed-size chunks when a file has none.
  • Chinese encoding detection. UTF-8, UTF-8 with BOM, UTF-16 LE/BE, GB18030/GBK, and Big5 — including the hard case of a GBK file that is 99% ASCII and therefore looks like valid UTF-8.
  • Search, bookmarks, reading progress. Full-text search with snippets; reopening a book returns you to where you stopped.
  • Adjustable typography. Font size, line height, family (serif / sans / kai), theme (follow DSH / sepia / dark / light), first-line indent, justification.
  • Wired into DSH settings. Every option lives in the plugin's card under Settings → Plugins, takes effect immediately, and persists to settings.yaml.

Install

dsh plugin --profile web add dsh-moyu-reader

Then restart the profile. The package declares its own bundle patch, so the plugin row is mounted for you — do not also add a manual insert row to the profile's cordis.patch.yml, or it will mount twice.

Usage

Open the reader from any of the three launchers, or pick the 小说阅读器 tab in the right sidebar. Press the boss key to hide it.

Settings

KeyDefaultMeaning
enabledtrueMaster switch. Off hides every launcher, tab and the boss key.
hotkey`mod+``Boss key. mod is Ctrl on Windows/Linux and ⌘ on macOS.
hotkeyHidesSidebartrueAlso collapse the whole right sidebar, not just the reader.
launcherFootertrueShow the launcher in the left sidebar footer.
launcherHeadertrueShow the launcher in the session header.
floatingBallfalseShow the floating ball in the bottom-right corner.
defaultDir(working directory)Directory the shelf opens in.
themeautoauto / sepia / dark / light.
fontSize17Reader font size in px (12–30).
lineHeight1.95Line height (1.3–2.8).
familyserifserif / sans / kai.
indenttrueIndent the first line of each paragraph.
justifytrueJustify body text.
maxBookBytes100663296Largest file the host will read, in bytes.
fallbackChunkChars6000Chunk size used when a file has no chapter headings.

Turning the plugin off does not delete your saved reading state.

How it works

Two halves, as a DSH plugin requires:

  • Host (lib/index.js) reads files through the fs service and serves a small JSON bridge over webServer at POST /dsh-moyu-reader/api. The route is exact-match, rejects a mismatched Origin, and caps request bodies at 1 MiB. It holds the book cache and the process-local reading state.
  • Client (client/client.js) is a browser module — a plain lazy-CJS factory registered on window.__ModuleLoader__, no bundler involved. It renders into six slots and binds the dsh-moyu-reader settings namespace so the settings card and the reader's own settings tab write through the same scope.

Both halves talk only through the bridge route; nothing else crosses.

Known limitations

  • Reading state (recent books, progress, bookmarks) is process-local. It survives closing the reader but not restarting DSH. Only configuration is persisted. Moving it to the storage domain is the obvious follow-up.
  • The reader is read-only: it will not write to your files.
  • Chapter detection is heuristic. Unusual heading styles may fall back to fixed-size chunks.

Development

npm install
npm run build     # emit client/client.js from src/client.js
npm test          # 45 host checks + 67 client checks
npm run watch     # rebuild the client bundle on change

src/client.js is the source of truth for the client half; client/client.js is generated and should not be edited by hand. The test suites mount the real shipped code — the host suite drives the bridge route against a stand-in fs service, and the client suite renders the bundle with React, drives its controls, and fires the boss key at a fake document.

License

MIT