Back to home@jiang4wqy

dsh-dejaview

A DeepSeek Harness tool that checks whether a similar dsh plugin already exists before you build one, by searching the awesome-dsh-plugin registry and the dsh-plugin GitHub topic.

Stars
0
Language
TypeScript
Created
Aug 18, 2026
Updated
Aug 18, 2026

Introduction

dsh-dejaview

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 the awesome-dsh-plugin registry and the dsh-plugin GitHub topic, ranks existing plugins by lexical similarity to the idea, 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 is a web app that answers "is this project already built?" with an evidence-first pipeline and three report tones (镀金 / 毒舌 / 彩虹). dsh-dejaview ports that one question, and the six-dimension + three-tone 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:

ArgumentTypeMeaning
ideastringOne-line description of the plugin you want to build.
namestringProposed plugin name, if you have one.
keywordsstring[]Salient capability keywords.

It returns a JSON value with: the normalized query, a verdict_hint (likely-exists | adjacent | looks-novel | inconclusive), best_similarity, source counts, a ranked candidates array (each with name, url, source, similarity, bucket, and the signals that produced the score), any degradations, the six-dimension verdict_guidance, and a disclaimer.

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-plugin GitHub 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 degradations note, 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 typechecktsc --noEmit
  • pnpm run testnode --test tests/*.test.ts
  • pnpm run buildtsdownlib/
  • 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