chendefine/dsh-web-search-aggregation ↗★ 0
dsh-web-search-aggregation
Aggregated web-search provider for DeepSeek Harness: one prioritized queue over AnySearch / TinyFish / Tavily, multiple API keys per entry, ordered fallback per request.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:chendefine/dsh-web-search-aggregation说明文档
阅读完整 README ↗Configuration
The settings card (设置 → 插件 → 插件配置 → Aggregated web search) edits the web-search-aggregation settings section live:
| Field | Default | Description |
|---|---|---|
providers | anysearch → tavily → tinyfish | The prioritized queue. Each entry: provider kind (each kind at most once), enabled toggle (a disabled entry stays configured but is skipped), and an optional endpoint base URL overriding the adapter's default. |
attemptTimeoutMs | 15000 | Per-attempt deadline in ms (1000–60000). One attempt is cut off after this long and the queue moves to the next key or entry. |
API keys are managed on each entry as masked tags: add one key at a time (+ or Enter), reorder by dragging tags off/on — tag order is the order a save writes and the runtime reads. Stored keys are never read back; a save replaces the whole pool, and closing every tag before saving clears the credential. Each provider's keys live in one fixed credential:
| Credential | Provider | Required | Value format |
|---|---|---|---|
ANYSEARCH_API_KEY | AnySearch | no — anonymous access works | one key bare, or several joined by , |
TAVILY_API_KEY | Tavily | yes, for the entry to serve | same pool format |
TINYFISH_API_KEY | TinyFish | yes, for the entry to serve | same pool format |
Combining with other provider plugins
A bundle patch replaces the web seam row's whole config, so the layer applied last determines the final searchProvider / fetchProvider pair. This plugin's patch states only searchProvider: aggregated — it owns the search selection and nothing else. Two consequences:
-
With
dsh-web-fetch-playwrightinstalled before this plugin (or without it entirely), nothing needs adjusting: an unconfiguredfetchProviderresolves to the single registered fetch provider automatically. -
If another plugin's layer is applied after this one and resets
searchProvider, pin the combined selection in your profile's ownprofiles/web/cordis.patch.yml— the user layer wins over every bundle layer:- id: web config: searchProvider: aggregated fetchProvider: playwright