dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
为 DeepSeek Harness 提供 9router 网页搜索与抓取。启用插件包后自动接管原生 web_search/web_fetch,停用后恢复其余配置层的提供方选择。
Web search & fetch for DeepSeek Harness, powered by 9router. Wires the native
web_searchandweb_fetchtools into 9router's/v1/searchand/v1/web/fetchendpoints — no server-side search tool required.
🇺🇸 English · 🇨🇳 简体中文
web_search through 9router's /v1/search, returning deduplicated WebSource results (title, snippet, published date).web_fetch through 9router's /v1/web/fetch, returning clean text/markdown bodies.NINE_ROUTER_API_KEY by default).DSH's default web_search uses the web-search-deepseek provider, which requires the upstream service to implement Anthropic's web_search_20250305 server-side search tool and return web_search_tool_result blocks.
9router is an OpenAI-compatible gateway: it passes that tool definition to the model as a regular function instead of executing searches server-side — so it cannot provide native search by itself.
web-search-deepseek (default) | 9router (this plugin) | |
|---|---|---|
| Requires | Anthropic web_search_20250305 server-side tool | Any 9router-compatible gateway |
| Works with 9router | ❌ | ✅ |
| Search endpoint | model-provided | POST /v1/search |
| Fetch endpoint | model-provided | POST /v1/web/fetch |
This plugin calls 9router's own endpoints directly and maps their responses to the WebSource and WebFetchBody types expected by the DSH web seam.
web_search / web_fetch (native DSH tools)
│
▼
ctx.web seam
│ provider = "9router"
▼
dsh-web-search-9router
├── search → POST {baseURL}/search → WebSource[]
└── fetch → POST {baseURL}/web/fetch → WebFetchBody
│
▼
9router gateway (9router)
Errors surface as machine-routable WebError codes (WEB_PROVIDER_ERROR, WEB_PROVIDER_CREDENTIAL_MISSING, WEB_ABORTED), and non-2xx fetch responses come back as results — never silent throws.
Requirements: DSH >=0.2.0-rc.2 and Node.js 20 or later.
1. Install the plugin
npx @deepseek-ai/dsh plugin --profile web add github:rebron1900/dsh-web-search-9router
2. Enable the plugin bundle
Installing and enabling the bundle automatically selects 9router for both search and fetch. Disable the whole bundle in Plugins to restore the providers selected by the remaining configuration layers (normally deepseek-official and http).
If you previously selected providers explicitly in your profile, home configuration, or launch overrides, those higher-priority choices still win. Remove the old id: web provider config override to let bundle enablement control selection.
3. Configure the plugin
Restart DSH and refresh the browser. Open Plugins, select dsh-web-search-9router, and configure it directly on the bundle detail page. Entering an API key stores it in DSH credentials under the selected credential reference; the key is never written to plugin settings.
🔒 Reproducible installs — append a release tag to pin an exact version:
npx @deepseek-ai/dsh plugin --profile web add github:rebron1900/dsh-web-search-9router#v0.2.4
| Key | Type | Default | Description |
|---|---|---|---|
baseURL | string | 9router default endpoint | Base URL of your 9router-compatible API (NINE_ROUTER_BASE_URL env also honored) |
searchModel | string | search-combo | Model name for the search endpoint |
fetchModel | string | fetch-combo | Model name for the fetch endpoint |
searchType | string | web | search_type sent to the search endpoint |
maxResults | number | 8 | Max sources per search |
timeoutMs | number | 30000 | Per-request timeout |
| API key | credential | — | Write-only field stored by the DSH credentials service, not in plugin settings |
apiKeyEnv | credential-ref | NINE_ROUTER_API_KEY | Credential reference used to store and resolve the API key |
pnpm install # install dependencies
pnpm test # run the test suite (node:test)
Repository layout
dsh-web-search-9router/
├── src/index.js # plugin entry: search + fetch providers
├── client.js # bundle detail settings form
├── cordis.patch.yml # bundle patch registering the plugin
├── test/ # node --test suite
└── package.json # ESM plugin manifest
v<version> GitHub Releases.