lywusichen
dsh-jmcomic
DeepSeek Harness 插件:JMComic 搜索下载、本地漫画库、窗内阅读器,内置源码离线可用。
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-jmcomic
A DeepSeek Harness plugin: a comic trigger in the sidebar footer that adds search & download, an importable local library, and an in-modal manga reader for JMComic (18comic).
Features
- Sidebar button: "comic" trigger in the sidebar footer (above the skills button).
- Small panel: search box (album ID / title) + "Import local folder" button; once a folder is bound, shows 2–3 recent covers + a "More" button.
- Large modal: centered blurred-background grid of every comic in the local folder; click any comic to list chapters, then read inside the modal (reuses the jm-view-server reader: scroll / single / double page, thumbnail overview, rotate, hotkeys).
- Settings: Settings → Plugins → Plugin Configuration → jmcomic card to change the default folder and Python path; the large modal also has a "Change folder" button.
- First-run hint: when a complete jmcomic environment is not detected, a one-time dialog recommends installing it (with the GitHub link).
- Draggable: both the small panel and the large modal can be dragged around.
- Delete: hover a library card to reveal a delete button (guarded: only albums under the base dir, never the root or system directories).
- Download banner: while downloads run, "downloading …" is shown at the top of both the small panel and the large modal.
Screenshots



Offline-first
The plugin bundles:
vendor/python/jmcomic— JMComic-Crawler-Python 2.7.3 sourcevendor/python/common— commonX pure-Python sourcevendor/python/jmcomic_ai— jmcomic-ai package (for bundled helper scripts)vendor/scripts/*.py— download / search / convert scriptsvendor/viewer/static— jm-view-server reader frontend
It therefore works even without the jmcomic PyPI package installed. Missing binary deps degrade automatically:
| Missing | Fallback |
|---|---|
| curl_cffi | postman uses requests |
| Pillow | image decode disabled (files download but cannot be previewed) |
| pycryptodome | prompts for install |
Install
dsh plugin --profile web add github:lywusichen/dsh-jmcomic
Build
npm install # devDependency: esbuild
npm run build # -> lib/client.js + lib/server.cjs (committed)
Self-check
node selfcheck.cjs # verifies all /jmcomic/* routes against a stub ctx
Configuration
- Settings file:
~/.dsh/plugins/dsh-jmcomic/settings.json(Windows) - Download strategy (battle-tested):
client.impl: apidirect connection,Bd/{Atitle}/第{Pindex}話directory rule, low concurrency (image 3 / photo 1).
Disclaimer
This plugin's download engine, reader frontend, and helper scripts are built with reference to (and in some parts adapted from) the open-source projects of hect0x7:
- JMComic-Crawler-Python — vendored download core (
vendor/python/jmcomic, commonX) - jm-view-server — vendored reader frontend (
vendor/viewer/static) - jmcomic-ai — vendored helper scripts & service layer (
vendor/python/jmcomic_ai,vendor/scripts)
All rights of the original projects belong to their respective authors. This plugin is an independent integration that vendors those sources for offline operation under their original licenses.
Credits
- JMComic-Crawler-Python — download engine
- jm-view-server — reader frontend
- jmcomic-ai — helper scripts