deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:nitrazepam01/dsh-web-search-tavily
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A Tavily-backed search provider bundle for DeepSeek Harness (dsh). It registers a Tavily backend for the ctx.web web-search seam and ships a hot-switchable backend selector (Tavily / DeepSeek search).
POST /search and normalizes results to { url, title, snippet, publishedAt }. Tavily returns content excerpts, so the model can quote snippets directly.search-switch) sits behind the web row and resolves the active backend from the web-search settings section on every search. Saving the section takes effect immediately: no restart, no loader-row reload.WebError taxonomy (WEB_PROVIDER_ERROR / WEB_PROVIDER_CREDENTIAL_MISSING / WEB_ABORTED).apiKey → credentials service → launch environment.web-search-tavily — apiKey / apiKeyEnv / baseURL / maxResultsweb-search — backend selection (tavily | deepseek-official)# From git (recommended — plain JS, no build step, no allowBuilds required)
dsh plugin --profile web add github:nitrazepam01/dsh-web-search-tavily
# From npm
dsh plugin --profile web add dsh-web-search-tavily
# From a local checkout
dsh plugin --profile web add ./dsh-web-search-tavily
Restart dsh web after installing (bundle layers are frozen at boot). To uninstall: dsh plugin --profile web remove dsh-web-search-tavily.
Store your Tavily key in $DSH_HOME/.credentials.yaml:
TAVILY_API_KEY: tvly-your-key
The web row's searchProvider is set to search-switch (the delegating provider) by this bundle. The active backend lives in the web-search section of $DSH_HOME/settings.yaml and hot-reloads on save:
web-search:
backend: tavily # tavily | deepseek-official
tavily — this plugin's Tavily provider (results carry content excerpts)deepseek-official — delegates to the shipped web-search-deepseek provider (DeepSeek Anthropic-compatible Messages endpoint; no excerpts)web-search-tavily section)| Field | Default | Description |
|---|---|---|
apiKey |
none | Literal key (secret, stored via the credentials domain) |
apiKeyEnv |
TAVILY_API_KEY |
Credential reference name |
baseURL |
https://api.tavily.com |
Tavily REST endpoint |
maxResults |
5 |
Max results per search |
web_search tool → ctx.web (searchProvider: search-switch)
→ switcher delegates by web-search.backend:
tavily → this plugin's provider → POST https://api.tavily.com/search
deepseek-official → shipped provider → Anthropic Messages + web_search_20250305
Why a delegating provider instead of editing the web row directly? Changing the web row's config restarts the dsh-web plugin and disposes every registered provider (Cordis Fiber.update → restart semantics). The switcher keeps the selection in the settings layer only, sidestepping that hazard entirely.
# Install a local checkout into a profile
dsh plugin --profile web add ./dsh-web-search-tavily
# Inspect the composed config without booting
dsh --profile web --dump-config
dsh web
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。