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
An in-harness plugin store for the DeepSeek Harness (dsh) Web GUI (dsh web),
surfaced as a compact 插件市场 / Plugin Store tab under Settings → Plugins.
It delivers a curated catalog plus live GitHub discovery, and lets you structurally
verify and install a community plugin into the web profile without leaving the GUI.
topic:dsh-plugin discovery (top 30, no forks).package.json declares name, version and dsh.bundle.patch. Catalog/snapshot
inclusion is not verification — every entry loads verified: null and must pass live
re-verification. On refresh, only the bounded topic:dsh-plugin batch is verified; curated
entries are verified at install time.stargazers_count; for curated entries that ship null, the Host backs them up from the
Shields badge (GET /api/dsh-plugin-store?method=stars&repos=...) and the client merges the
real count into the first 120 visible cards in batches of 40. There is no local star ledger, no
fabricated zero, and no client-side "star" toggle.dsh.bundle
immediately before the real profile is touched. If it fails, the profile is left untouched.dsh web restart.GET ?method=bootstrap. Body size is capped at 8 KB.From a terminal, point DSH at this package and add it to the web profile:
# from a git checkout of this repo
dsh plugin --profile web add github:anjaymi/dsh-plugin-store
or directly by the GitHub spec after pushing this repository:
dsh plugin --profile web add github:anjaymi/dsh-plugin-store
Then restart the Web GUI:
dsh web
The 插件市场 / Plugin Store tab appears under Settings → Plugins.
dshforwardsaddto pnpm in the profile directory and mounts the bundle automatically when the package declaresdsh.bundle.patch. If pnpm asks to build a git source, add the printed key underallowBuildsinprofiles/web/pnpm-workspace.yamland re-run.
| Control | Effect |
|---|---|
| Search | filters by repo or description |
| 全部 / 精选 / 新发现 / 结构已验证 / 已安装 | filter tabs (All / Curated / Newly discovered / Structurally verified / Installed) |
| 分类 (category) | filter by category |
| ☆ (star count) | real GitHub star count — curated entries with null are back-filled from the Shields badge in batches of 40 (never a fabricated 0) |
| GitHub | open the repository |
| 校验并安装 / 安装 | verify-and-install (unverified) or install (verified); the Host performs the final gate |
| task panel | live status/output of the running/pending install op; kill or dismiss |
dsh.bundle. The button is not disabled: the Host is the authority.GITHUB_TOKEN (optional, recommended): set in the environment before launching dsh web to
raise the GitHub search rate limit and avoid 403s during 刷新目录 (Refresh).web profile ($DSH_HOME/profiles/web).catalog.json under your DSH home); a failed
refresh keeps the previous catalog rather than dropping it.127.0.0.1); --host 0.0.0.0 is
blocked by DSH unless DSH_PKG_ALLOW_LAN=1 is explicitly set.Origin host to equal the request Host.GET ?method=bootstrap issues a random token; every mutating POST must send
it in the x-dsh-plugin-store-token header. Reads (list/stars) are safe without it.owner/repo (optionally owner/repo#subpath) git specs are
accepted — never a binary or local path. The store refuses its own package.name/version/
dsh.bundle before touching the profile. Nothing is ever written to the profile unless that gate
passes.@deepseek-ai/dsh-atomic-write
(writeFileAtomic / withFileLock). The real profile package.json is not written by the
store — it is reconciled by the official dsh plugin CLI which forwards to pnpm in the profile
directory. The store never rewrites your cordis.yml or profile manifest directly.$DSH_HOME is resolved via @deepseek-ai/dsh-home-paths
(resolveDshHome); the CLI is located from the launcher entry (process.argv[1] +
process.execArgv) or the deployment's own bin, never from the client.npm install
npm test # node:test — see tests/*.test.mjs
npm run pack:check # npm pack --dry-run
lib/host.js # ESM Host: /api/dsh-plugin-store route, catalog, verify, install queue
lib/client.js # browser bundle: window.__ModuleLoader__.load({id, factory(require)})
data/registry.snapshot.json # bundled curated + discovery snapshot (offline-first)
tests/*.test.mjs # node:test suite
cordis.patch.yml # bundle patch mounting the store
PRODUCT.md # product register, users, personality, anti-goals, WCAG AA
DESIGN.md # actual DSH tokens + the 18/14/12/11 type scale, 36/32, 8px, 138, no shadow
The client is a hand-written window.__ModuleLoader__.load CommonJS factory (no bundler is
required); the Host composes it at /plugins/dsh-plugin-store/client.js. Its styling uses only
DSH CSS tokens and inline SVG icons — see DESIGN.md.
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。