A DeepSeek Harness plugin. Adds a comic button in the sidebar to search & download manga from JMComic (18comic), browse your local library, and read inside a window.
- Sidebar comic button (above the skills button)
- Small panel: search by ID or title and download; once a local folder is bound, shows the 2–3 most recent covers, click one to start reading
- Large modal: grid of every comic in the local folder, click in to see the chapter list
- Reader window: drag any edge/corner to resize, drag the top bar to move; size and position are remembered
- Reopening a comic jumps back to the chapter and page you last read
- Reader footer shows current page / total, with an input to jump to any page
- Hover a card to reveal a delete button (only albums inside the base folder; root and system directories are protected)
- "downloading …" banner while downloads run
- Settings → Plugins → Plugin Configuration → jmcomic card to change the default folder and Python path
- One-time hint on first run if the environment is incomplete, with a link to the upstream project
The plugin bundles jmcomic 2.7.3 source, commonX, the jmcomic-ai package and the reader frontend (in vendor/), so it works without installing the jmcomic PyPI package. Missing binary deps degrade automatically:
| Missing | Behavior |
|---|---|
| curl_cffi | falls back to requests |
| Pillow | no image decode; files download but can't be previewed |
| pycryptodome | prompts to install |
dsh plugin --profile web add github:lywusichen/dsh-jmcomicnpm install # esbuild
npm run build # generates lib/client.js and lib/server.cjs- Settings file:
~/.dsh/plugins/dsh-jmcomic/settings.json(Windows) - Downloads use the api client directly, directory rule
Bd/{Atitle}/第{Pindex}話, low concurrency (image 3 / photo 1)
The download engine, reader frontend and some helper scripts come from hect0x7's projects, vendored under vendor/:
- JMComic-Crawler-Python — download engine
- jm-view-server — reader frontend
- jmcomic-ai — helper scripts
Copyright belongs to their respective authors.


