Reference search for DeepSeek Harness: refkit_search looks up image, video, audio and text references across 24 open sources and tags each result with its normalized license and a use verdict for the intended use; refkit_rights re-checks one license against another use. Source keys and search tuning live on a settings page. 11 of the 24 sources need API keys; the use verdict is returned only when an intended use is passed. Runs on DSH ^0.1.7-rc.2 || ^0.2.1-rc.2 (tested on 0.1.7-rc.2 and 0.2.1-rc.2).
Install
# from npm (prebuilt)
dsh plugin --profile web add @refkit/dsh-plugin
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:refkitjs/dsh-plugin
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 | 中文
DeepSeek Harness plugin for refkit: license-normalized creative reference search as native agent tools, with a web card that shows the license and the use-verdict on every result.
refkit_search— one call fans out to up to 24 sources (Openverse images and audio, Met, Art Institute of Chicago, Wikimedia Commons, Rijksmuseum, Smithsonian, Internet Archive, Project Gutenberg, PoetryDB, Poly Haven textures and HDRIs, ambientCG, Europeana, Unsplash, Pexels, Pixabay, Flickr, Freesound, Jamendo, Brave, nailbook), merges and reranks the results, and returns each with its source id, license id, canonical link, the length of audio and video clips where the source reports it, and — when you pass anintent— a use-verdict and a ready credit line.refkit_rights— re-check one license for a different intent without searching again.- Web card — thumbnail grid; source and license chips on every tile; video posters with a play mark, album art on audio, and an
m:sslength badge on both; green / blue / red / amber badges for allowed / credit required / not allowed / needs review; one-click credit copy.
Thirteen of the 24 sources work with no key at all (Openverse images and audio, Met, Art Institute of Chicago, Wikimedia Commons, Rijksmuseum, Internet Archive, Project Gutenberg, PoetryDB, Poly Haven textures and HDRIs, ambientCG, nailbook). Add free keys for the rest under Plugins (sidebar) → refkit → Components → refkit.
Install
dsh plugin --profile web add @refkit/dsh-plugin
# or straight from GitHub (prebuilt bundles are committed):
dsh plugin --profile web add github:refkitjs/dsh-plugin
Restart the dsh web host once so the profile picks up the bundle. Tested against @deepseek-ai/dsh 0.1.7-rc.2 and 0.2.1-rc.2. Requires dsh 0.1.x from 0.1.7-rc.2 on, or 0.2.x from 0.2.1-rc.2 on (^0.1.7-rc.2 || ^0.2.1-rc.2); dsh refuses to load it on older releases and on the 0.2.0 pre-releases. dsh is in developer preview and its plugin API changes between release candidates.
Upgraded dsh to 0.2.1 with refkit 0.2.0 or 0.3.0 installed? dsh 0.2.1 refuses both, so remove the plugin and add it again: dsh plugin --profile web remove @refkit/dsh-plugin, then dsh plugin --profile web add @refkit/dsh-plugin.
Configuration
Keys and tuning are set on Plugins (sidebar) → refkit → Components → refkit (namespace refkit); changes apply on the next call, no restart needed. Keys are secret fields: never shown on the settings page (only a Set / Not set marker), never logged, never returned to the model, and stored in the profile's cordis.patch.yml (file mode 0600, plaintext). Each key left empty falls back to the environment variables in the table below (REFKIT_* first) — the same names @refkit/mcp reads, so one .env serves both. An invalid hand-edited cordis.patch.yml stops the plugin at startup until it's fixed.
| Field | Env (first wins) | Enables |
|---|---|---|
unsplashAccessKey |
REFKIT_UNSPLASH_KEY, UNSPLASH_KEY |
unsplash |
pexelsApiKey |
REFKIT_PEXELS_KEY, PEXELS_KEY |
pexels, pexels-video |
pixabayKey |
REFKIT_PIXABAY_KEY, PIXABAY_KEY |
pixabay, pixabay-video |
flickrApiKey |
REFKIT_FLICKR_KEY, FLICKR_KEY |
flickr |
smithsonianApiKey |
REFKIT_SMITHSONIAN_KEY, SI_KEY |
smithsonian |
braveToken |
REFKIT_BRAVE_KEY, BRAVE_TOKEN |
brave |
freesoundToken |
REFKIT_FREESOUND_KEY, FREESOUND_TOKEN |
freesound |
jamendoClientId |
REFKIT_JAMENDO_CLIENT_ID, JAMENDO_CLIENT_ID |
jamendo |
europeanaApiKey |
REFKIT_EUROPEANA_KEY, EUROPEANA_KEY |
europeana |
openverseToken |
REFKIT_OPENVERSE_TOKEN |
higher Openverse rate limits (optional) |
| Field | Default | Meaning |
|---|---|---|
sources |
[] |
Source ids to enable; empty = every source whose key is present |
limit |
12 |
Default results per call (1–30); also caps per-item detail fetches for met, rijksmuseum, polyhaven, polyhaven-hdri |
poolFactor |
2 |
Rank-fusion pool multiplier (1–4) |
deadlineMs |
15000 |
Whole-search deadline |
timeoutMs |
10000 |
Per-source timeout |
rerank |
true |
Lexical reranker over title, description, tags and excerpt (CJK aware) |
sourceConfidence |
true |
Down-weight sources whose batch never mentions the query |
userAgent |
refkit-dsh-plugin/<version> |
Sent with source requests |
Tools
refkit_search
| Argument | Type | Meaning |
|---|---|---|
query |
string | What to search for |
modalities |
image video audio text |
Default ["image"] |
intent |
internal-moodboard commercial-product ai-generation-input redistribution |
Annotate every result with a use-verdict and credit line |
gateFor |
same | Return only results whose license allows the intent |
sources |
string[] | Restrict to source ids (polyhaven-hdri for HDRIs, openverse-audio for audio, …) |
limit |
1–30 | Default from configuration |
cursor |
string | Continuation from a previous nextCursor |
controls |
object | orientation, color, language, sort, safety, license, media, creator, text, page |
minRelevance |
0–1 | Drop results the reranker scored below this |
explain |
boolean | Include per-source diagnostics under meta |
Each result names its source id and carries its license, canonical link, thumbnail (a video's poster, a track's album art) and, for audio and video when the source reports it, durationSec; width/height are the original's size, or the preview's when the source does not report it.
Example prompts: “find me reference photos of brutalist libraries I can use in a commercial pitch deck”, “给我找几张可以商用的赛博朋克街景参考图”, “a public-domain poem about the sea for a poster”, “an outdoor HDRI for lighting a product render”, “a short rain sound effect for a game trailer”.
refkit_rights
license, intent, canonicalUrl (required); licenseVersion, author, title, editorialOnly, jurisdiction, userJurisdiction, facts (optional). Returns decision, reasons, confidence, attribution, disclaimer.
Development
pnpm install
pnpm test # vitest, in-process, no network
pnpm build # lib/index.js (host) + lib/client.js (browser) + lib/types
node scripts/check-client-bundle.mjs
REFKIT_LIVE=1 node scripts/smoke-host.mjs "forest path" # one real Openverse search
dsh plugin --profile web add file:$PWD # install the local build
lib/ is committed so github: installs need no build step; CI fails if it is stale.
Not legal advice
Verdicts are a conservative heuristic over source-declared license facts. They tell you what the source says you may do; they are not rights clearance.
License
Apache-2.0
Links
More in this category
Tencent/WeKnora#dsh-weknora★ 35014
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 5944
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
T-Auto/dsh-ops★ 3709
Provides bash, PowerShell 7, and high-performance Rust tools for DSH on Windows to reduce token usage.
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1141
Tencent CloudBase backend for DeepSeek Harness — scaffold and deploy full-stack apps from chat, render query results as table cards with paging, sorting and CSV export, preview a deployment on its domain, and call the CloudBase MCP toolset (`mcp__cloudbase__*`) with device-code login.
sixtysevenlf/dsh-blender-plugin★ 1019
Lets a DSH agent drive a local Blender over a direct TCP channel with 16 tools: viewport frames, custom-angle renders, Python execution, headless and job offload, transaction rollback, and a planning layer of 186 ops across 28 families.
anysearch-team/anysearch-dsh★ 634
AnySearch-powered real-time web and vertical search provider for DeepSeek Harness.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.