dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
中文 | English
dsh-plugin-butler is a graphical plugin manager for DeepSeek Harness (DSH). It lives in the Web settings page and lets you manage every plugin in a profile — organize, toggle, group, update, install, uninstall — without touching the terminal.
Zero build, zero runtime dependencies — it uses only Node builtins plus services the deployment already provides.
catalog.json)Every plugin shows a Chinese display name + a one-line description + a category, backed by a built-in catalog of 130+ official modules. External plugins and modules missing from the catalog fall back to their short name.
~/.dsh/plugin-manager/catalog.json and shown as a 自定 (custom) badge.Each row has a switch that surgically edits the profile's cordis.patch.yml by adding/removing a disabled: true block — then lets DSH's HMR observer hot-apply it, so there is no restart.
Safety guards:
!!js expression are left untouched (you must edit the config file yourself).Plugins are split into two sections, both collapsible:
@deepseek-ai/* and cordis:* modules, further grouped by category.dsh plugin add, shown with author/repo info where available.groups.json)Organize external plugins into named groups (create / rename / delete / move). Assignments persist to ~/.dsh/plugin-manager/groups.json and filter the external list with one click.
latest and badges rows with current → latest.pnpm add <name>@latest and, on failure, automatically rolls back to the previously installed version.Search GitHub for plugins tagged dsh-plugin, ranked by stars, with pagination ("load more").
dsh plugin add github:owner/repo equivalent) — auto-joins the bundle layer when the package declares dsh.bundle.Uninstall any external plugin with two-click confirmation. It first removes the package from dsh.profile.bundles, then runs pnpm remove, and rolls back the bundle layer if uninstall fails.
Every row has a 依赖 (deps) badge that expands to show:
service ← provider).A full-screen left-to-right mind-map: core plugins (most depended-on) sit in the leftmost column, and dependents fan out to the right by dependency depth.
Plugins that failed to load are highlighted red with their error message, plus a ⚠ N 个插件加载失败 banner and a "show only failed" filter.
The detail modal renders the plugin's README as formatted Markdown — headings, code blocks, inline code, bold/italic, links, images, lists, quotes, and horizontal rules.
dsh plugin --profile web add dsh-plugin-butler
Then restart the web profile and open Settings → Plugins → 插件管理 (Plugin manager).
Targets the
webprofile by default. To manage another profile, setDSH_PLUGIN_MANAGER_PROFILEbefore the Host half loads.
lib/index.js) — apply(ctx) registers same-origin HTTP routes under /plugin-manager/* via the webServer service:
list · setEnabled · setOverride · removeOverride · createGroup · renameGroup · deleteGroup · assign · checkUpdates · update · market · detail · detailRepo · install · uninstall.
It reads/writes the patch layer, the bundle layer (dsh.profile.bundles), and state files (catalog.json, groups.json) directly, and resolves dependency edges from the live Cordis fiber._store.lib/client.js) — a hand-written window.__ModuleLoader__.load bundle (no bundler) that registers the settings.plugins.tab "插件管理" and talks to the Host via same-origin fetch.npm install and no build step.lib/index.js Host plugin (/plugin-manager/* routes + patch I/O + catalog/groups + updates)
lib/client.js Browser bundle (ModuleLoader format, settings tab + dependency graph)
lib/patch.js Pure helpers (patch editing, GitHub URL parsing) — unit-tested
cordis.patch.yml Bundle patch layer (inserts the host entry)
test/patch.test.js node:test unit tests
fetch and AbortSignal.timeout).web profile with the webServer service available (standard in DSH web deployments).api.github.com must be reachable (a network error is shown otherwise).npm run check # node --check on all bundles
npm test # node:test unit tests for lib/patch.js
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。