dsh-dejaview
其他 活跃维护

dsh-dejaview

jiang4wqy/dsh-dejaview

开发插件前可先通过该工具检索awesome-dsh-plugin官方插件库与GitHub的对应平台插件话题板块,快速确认有无同类已发布插件,避免重复造轮子。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
145 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:jiang4wqy/dsh-dejaview
git clone https://github.com/jiang4wqy/dsh-dejaview.git
git clone git@github.com:jiang4wqy/dsh-dejaview.git
README.md main

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 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-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 typecheck — tsc --noEmit
  • pnpm run test — node --test tests/*.test.ts
  • pnpm 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