Checks whether a similar dsh plugin already exists before you build one, searching the awesome-dsh-plugin registry and the dsh-plugin GitHub topic and returning ranked matches with evidence.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:jiang4wqy/dsh-dejaview
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
English | 中文
A DeepSeek Harness plugin that
registers one model-facing tool, check_plugin_novelty. Before the agent
builds a dsh plugin, the tool asks the question behind
DejaView — "has someone already made
this?" — narrowed to the dsh ecosystem.
Given a plugin idea, it searches three public sources — the
awesome-dsh-plugin
registry, the dsh-plugin GitHub topic,
and npm packages tagged dsh-plugin — ranks existing plugins by IDF-weighted
lexical similarity (rare, distinctive terms count for more than ecosystem-common
ones), and returns each candidate with the evidence behind its score plus
DejaView's six-dimension verdict guidance. The plugin retrieves and scores; the harness's own model
reads the evidence and delivers the ruling — so it needs no extra API key and
no LLM provider of its own.
Relationship to DejaView
DejaView · 项目照妖镜 — live demo ↗
DejaView is a web app that answers "is this project already built?" with an
evidence-first pipeline and three report personas — 镀金·华尔街 / 毒舌·马戏团 /
彩虹·夸夸群 — under one rule: the bite can be subjective, the facts cannot;
roast the project, never the developer. dsh-dejaview ports that one question,
and the six-dimension + three-persona framing, into a dsh tool scoped to the
plugin ecosystem. The retrieval and scoring are reimplemented here in
TypeScript; the verdict framing is handed to the model as guidance.
The tool
check_plugin_novelty — provide at least one of:
| Argument | Type | Meaning |
|---|---|---|
idea |
string |
One-line description of the plugin you want to build. |
name |
string |
Proposed plugin name, if you have one. |
keywords |
string[] |
Salient capability keywords. |
It returns a JSON value with: the normalized query, a verdict_hint
(likely-exists | adjacent | looks-novel | inconclusive),
best_similarity, a confidence in the retrieval coverage, source counts, a
ranked candidates array (each with name, url, source, category,
similarity, bucket, and the signals that produced the score),
uncovered_terms (idea terms the closest match does not cover — a starting
point for differentiation), any degradations, the six-dimension
verdict_guidance, and a disclaimer.
The registry is read from the awesome-dsh-plugin README in a single request (full-recall over every listed plugin), with a git-tree scan as a fallback; the response is cached in-process for a few minutes so repeated checks in one session do not refetch.
Example (live registry result for "replace the turn-status label with rotating phrases"):
verdict_hint = likely-exists best_similarity = 1.0
100% [near-duplicate/registry] 01Virex/dsh-status-rotator — Replaces the "Deep diving..." turn-status label ...
47% [adjacent/registry] alingalingling/ui-status-label — Customize the "deep diving" thinking status label ...
When the harness systemPrompt service is present, the plugin also contributes
one short guidance line (tool:check_plugin_novelty) so the agent knows to run
this check before building a plugin. It is added through an optional inject, so a
headless profile without that service still loads.
Scope and honesty
- Evidence covers only the awesome-dsh-plugin registry and the
dsh-pluginGitHub topic at query time. A miss means "not found within this search", not proof of novelty. - If retrieval degrades (rate limit, network), the tool returns what it has, a
degradationsnote, and lowers confidence rather than failing the call. - Network access is limited to GitHub's public REST API and the raw file host. It sends no credentials and reads no local files.
Requirements
The DeepSeek Harness (engines.dsh >= 0.1.0-rc.6) supplies
@deepseek-ai/dsh-tools and @deepseek-ai/cordis at load time. They are
intentionally not listed as installable dependencies: their standalone npm
graph is not cleanly installable, so this package builds against local type
shims (src/dsh-shims.d.ts) and marks those specifiers external. The prebuilt
lib/ is committed so a direct Git install loads without a build step.
Install into a profile
git clone https://github.com/jiang4wqy/dsh-dejaview.git
cd dsh-dejaview
pnpm install # dev tools only; harness packages are provided at runtime
pnpm run check # typecheck + tests + build
dsh plugin --profile dejaview add .
dsh --profile dejaview --dump-config | grep dsh-dejaview
dsh --profile dejaview
Remove it with:
dsh plugin --profile dejaview remove dsh-dejaview
Development
src/index.ts # plugin entry: registers check_plugin_novelty on ctx.tools
src/fingerprint.ts # idea → normalized token/phrase fingerprint
src/sources.ts # fetch candidates: awesome-dsh registry + dsh-plugin topic
src/score.ts # explainable lexical similarity + bucketing
src/rubric.ts # DejaView six-dimension + three-tone verdict guidance
src/novelty.ts # orchestration (pure apart from injected fetchers)
src/dsh-shims.d.ts # local type shims for the harness-provided packages
tests/ # node:test unit tests (run on native TS, no extra runtime)
scripts/smoke.ts # manual live check against public GitHub
pnpm run typecheck—tsc --noEmitpnpm run test—node --test tests/*.test.tspnpm run build—tsdown→lib/node scripts/smoke.ts— live end-to-end check
Discoverability
Add the dsh-plugin topic to the repo
(metadata, not a file):
gh api --method PUT repos/jiang4wqy/dsh-dejaview/topics \
-H 'Accept: application/vnd.github+json' \
-f 'names[]=dsh-plugin'
License
MIT © jiang4wqy
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-plugin-manager★ 8296
Plugin manager tab in DSH Settings → Plugins: install from npm or git with progress, enable/disable switches effective at next startup, conflict reconciliation with undo, and one-click hand-off to a fix session.
dsh-market/dsh-market★ 5354
Browse, search and install community plugins from inside DeepSeek Harness settings, with category filters, one-click updates, enable/disable, theme switching and configuration backup.
kingOfSoySauce/dsh-skin-market★ 181
Native skin marketplace and lifecycle manager that discovers community skins, displays previews and compatibility status, and provides verified one-click or manual installation paths.
bradeGithub/DSH-Plugins-Marketplace★ 169
GitHub-topic-driven plugin & skill marketplace: a Settings page that browses the auto-collected registry (the whole dsh-plugin topic plus the skills index, CI-refreshed every 2 hours) with one-click install, type detection, install-script and host-shadow-dependency safety confirmations, env-key management, and the STANDARD.md recognition spec.
awesome-dsh-plugin/dsh-find-plugin★ 166
Find plugins without leaving the agent: search this curated registry by keyword or category, with ready-to-run install commands.
Sanqi-normal/dsh-webui-market-plugin★ 104
In-harness plugin market for the dsh web GUI: browse the awesome-dsh-plugin.com catalog and install/uninstall plugins into a profile from Settings → Plugins → Plugin Market.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.