Back to home

ACEMaravilla

dsh-plugin-market

Model-facing plugin marketplace for DeepSeek Harness: discover, vet, report, and install community plugins (plugin_search / plugin_vet / plugin_report / plugin_install)

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

Introduction

dsh-plugin-market

English | 中文

Model-facing plugin marketplace for DeepSeek Harness: plugin_search, plugin_vet, plugin_report, and plugin_install — the discover → vet → report → install flow for community plugins.

  • plugin_search — finds candidates on the official platforms (GitHub dsh-plugin topic, npm registry, awesome-list READMEs), ranks them by term-based relevance (0-100), and enriches the top 2-3 with README-derived functional summaries and install hints.
  • plugin_vet — static security-risk assessment per candidate: install-time remote code, obfuscation, arbitrary code execution, credential reads, exfiltration, unsafe filesystem access, and supply-chain signals. Returns risk level (low/medium/high/unknown), safety score (0-100), and the findings.
  • plugin_report — deterministic comparison report (function, install flow, relevance score, security) plus a user-questions-based choice when a provider is registered.
  • plugin_install — runs dsh plugin --profile <name> add <spec> through the shell seam after strict specifier validation, and returns the activation row for the profile composition.

All network access goes through the ctx.web capability seam; installation uses the optional shell seam and the interactive choice uses the optional user-questions seam. Both degrade gracefully when absent.

Install

dsh plugin --profile <your-profile> add @ace-xu/dsh-plugin-market

Then add the activation row to the profile's composition (the profile's cordis.yml / patch layer):

- id: plugin-market
  name: '@ace-xu/dsh-plugin-market'
  config:
    maxCandidates: 3

Verify with dsh --profile <your-profile> --dump-config.

Usage (as an agent)

Say to your agent: "I want a plugin that ". The marketplace flow then runs plugin_searchplugin_vetplugin_report (which asks you to choose) → plugin_install.

Configuration

KeyDefaultMeaning
search / vet / report / installtrueRegister the corresponding tool.
maxCandidates3Cap on candidates returned by one plugin_search.
searchTimeoutMs / vetTimeoutMs60000Cooperative tool-call budget per tool.
installTimeoutMs300000Budget for one dsh plugin add run.
perRequestTimeoutMs15000Per-request deadline for marketplace API fetches.
maxVetFiles / maxVetFileBytes40 / 100000Bounds on the per-candidate source scan.
maxVetCandidates5Cap on candidates per plugin_vet call.
defaultProfile"web"Profile name used by install commands when none is given.
installOutputMaxBytes100000Cap on captured installer output.

Security assessment design

The vetting is a bounded static heuristic, not a security guarantee — every report and prompt section states that. Scan rules (in severity order): install-time remote code (critical), obfuscation (critical), code execution primitives (high), credential reads (high), exfiltration destinations (high), unsafe filesystem access (medium), environment reads (medium), and supply-chain signals (medium/info). The safety score starts at 100 and deducts severity-weighted penalties; any critical finding forces high risk, and failed gathering returns an honest unknown.

Known Limitations and Deferred Work

  • Static vetting detects patterns, not intent; a clean report does not prove safety, and rules can produce false positives.
  • GitHub API access is unauthenticated and rate-limited; busy deployments should expect platformErrors degradation.
  • The npm vetting path scans registry metadata and unpkg file listings instead of unpacking the published tarball.
  • Relevance scoring is term-based; popularity is a ranking tiebreaker only.
  • plugin_install installs the package but never edits profile composition files — activation is deliberately manual.

Discoverability

This package is published under the dsh-plugin GitHub topic, the official discovery channel for DeepSeek Harness community plugins. This package is published under the @ace-xu npm scope. If you publish a fork under another scope (@you/dsh-plugin-market), keep the topic so other agents can find it through plugin_search.

Development

The canonical implementation lives in the DeepSeek Harness monorepo under packages/plugin-market/plugin-market (see the feature/plugin-market PR branch). Run node scripts/sync-from-monorepo.mjs <path-to-monorepo> to pull the latest sources into this standalone repo; the only divergences are this README, the standalone package.json/tsconfig.json, and test imports rewritten from package names to ../src paths.

pnpm install
pnpm run typecheck
pnpm test