@240xu/dsh-websearch

modeltested: passnpmMIT condition deviation

Unified web search provider for DeepSeek Harness (ctx.web): 11 backends — Exa + Parallel + DDG + SearXNG (keyless), DeepSeek + Anthropic + OpenAI + Brave + Tavily + Serper + Mojeek (key-gated via Settings credentials). Registers provider id "unified" for

📦 体积
1.16 MB · small
🔌 Network
undeclared
✅ Sandbox
pass
🏷️ Versions
23

Who this is for

  • developers using DSH for coding with Git workflows
下载量 / Downloads
0
依赖体积 / node_modules
1.16 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add @240xu/dsh-websearch

Sandbox test results

條件偏離 —— 本結果在 DSHIO/T 21 v0.9 條件下產生(內存 1g、CPU 1.5、T4 超時 60s,未記鏡像 digest)。偏離條款:5.1.3(内存 768MB)、5.1.3(CPU 1 核)、5.1.6(T4 超时 90s)、5.1.2(镜像 digest)。按 DSHIO/T 21 §8.2,該判定不得與標準條件結果比較,不得用作認證依據。
StageResult
T0 static check—
T1 install✓
T2 list✓
T3 mount✓
T4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

@240xu/dsh-websearch

![npm version](https://www.npmjs.com/package/@240xu/dsh-websearch)

![license](LICENSE)

Aggregated web search provider for DeepSeek Harness — one plugin id unified that fans out to eleven backends concurrently, merges + URL-dedups results, and stays usable even when some backends go down.

A pure-Cordis drop-in: registers ONE provider at ctx.web so the dsh-web selection rule never fires WEB_PROVIDER_AMBIGUOUS. Zero-config search out of the box (Exa + Parallel + DuckDuckGo + SearXNG are keyless); API-key backends (DeepSeek / Anthropic / OpenAI / Brave / Tavily / Serper / Mojeek) auto-activate once their key is supplied via the credentials service or env.


DSH(DeepSeek Harness)原生插件:向 ctx.web 注册唯一的聚合搜索 provider unified,内置十一后端并发 fan-out,合并 + URL 去重后返回——即使部分后端宕机仍可用。

纯 Cordis 直插:只注册一个 provider,所以 dsh-web 的选择规则永远不会触发 WEB_PROVIDER_AMBIGUOUS。零配置即可搜索——Exa + Parallel + DuckDuckGo + SearXNG 四者皆无 key、开箱即用;DeepSeek / Anthropic / OpenAI / Brave / Tavily / Serper / Mojeek 在提供 API key 后自动激活。

10 秒速查

dsh plugin --profile web add @240xu/dsh-websearch
# 重启 dsh web 后,在 设置 → Web Search 选择 unified
  • 不想逐个装:dsh plugin --profile web add @240xu/dsh-plugin-hub(会带入本插件)
  • 卸载:dsh plugin --profile web remove @240xu/dsh-websearch
  • 零 Key 可用:Exa / Parallel / DuckDuckGo / SearXNG;其余后端配 Key 后自动启用

Backends | 后端

id · key · endpoint · how it returns · notes

exa · none · https://mcp.exa.ai/mcp · streamable-http MCP, tool web_search_exa { query, numResults }, text blocks "Title:/URL:/Published:/Highlights:" · opencode 同源,无 key

parallel · none · https://search.parallel.ai/mcp · streamable-http MCP, tool web_search { objective, search_queries[], session_id?, model_name? } returns JSON-string { search_id, results: [{ url, title, publish_date, excerpts[] }] } · opencode 同源,无 key

ddg · none · https://html.duckduckgo.com/html/ · HTML scrape, decode uddg= redirect param for real URL + result__snippet · 兜底,零依赖

searxng · none/optional · https://searx.be/search (default) · REST JSON /search?q=, public instances unlimited · 元搜索,隐私友好

brave · BRAVE_API_KEY · https://api.search.brave.com/res/v1/web/search · REST JSON, independent index, 2000/mo free · 高质量,无 Google 偏见

tavily · TAVILY_API_KEY · https://api.tavily.com/search · REST JSON, AI-focused, answer + results[], deep search · AI 专用,含答案摘要

serper · SERPER_API_KEY · https://google.serper.dev/search · REST JSON, scrapes Google organic[], 2500/mo free · 极速,结构化

mojeek · MOJEEK_API_KEY · https://api.mojeek.com/v1/search · REST JSON, independent index, 1000/day free · 无追踪,英文为主

deepseek · DEEPSEEK_API_KEY · https://api.deepseek.com/anthropic/v1/messages · Anthropic Messages API + native web_search_20250305 server tool, model deepseek-v4-flash · 与 dav web-search-deepseek 同机制

anthropic · ANTHROPIC_API_KEY · https://api.anthropic.com/v1/messages · Anthropic Messages + web_search_20250305, model claude-sonnet-4-6 · Claude Code 同机制

openai · OPENAI_API_KEY · https://api.openai.com/v1/responses · Responses API native web_search tool, parse url_citation annotations · Codex 同机制

可用性说明:available() 只做本地配置检查(不联网探测可达性);密钥在每次搜索时按操作解析,缺失时该后端以明确错误码软失败(不阻塞其他后端)。全部缺 Key 时错误会指向设置页。

SearXNG 实例 | Public instances

SearXNG 默认指向 https://searx.be;公共实例可用性随网络环境波动,失败时错误信息会提示换源。

在设置面板修改 searxngBaseURL 即可切换,常见候选:

实例 · 备注

https://searx.be · 官方默认,部分地区不可达

https://searx.tiekoetter.com · 稳定性较好

https://priv.au · 隐私友好

自托管 · 最可靠,支持 API Key(searxngApiKeyEnv)

Install | 安装

方式一:作为 profile 依赖安装(推荐,规范做法)

cd ~/.dsh/profiles/web
# 在 package.json 的 dependencies 里加入:
#   "@240xu/dsh-websearch": "file:/path/to/@240xu/dsh-websearch"
pnpm install

插件自带 dsh.bundle 元数据(package.json 声明 "dsh": {"bundle": {"patch": "./cordis.patch.yml"}}),把它加入 profile package.json 的 dsh.profile.bundles 列表后即自动注册,无需在 cordis.patch.yml 手写条目。

只需在 ~/.dsh/profiles/web/cordis.patch.yml 里把内置 web_search 工具指到 unified provider:

- id: web
  name: '@deepseek-ai/dsh-web'
  config:
    searchProvider: unified
- id: web-search-deepseek
  name: '@deepseek-ai/dsh-web-search-deepseek'
  disabled: true

重启 dsh web 即生效。

Settings | 配置

v2.0.3 起,配置界面位于 Settings → 左侧栏「搜索 / Web Search」(顶级分区,与通用/模型/插件同级)。
每个 API Key 字段旁有 「获取 Key ↗」 直达对应平台控制台;保存即写入凭证库并立即生效。

插件向 DSH 设置面板注册 unified-search namespace(Settings → Unified Search),全部字段扁平化、开箱可编辑:

全局

字段 · 默认 · 说明

numResults · 8 · 每次搜索返回结果数(1-50)

concurrency · 6 · 并发后端数(1-10)

backendTimeoutMs · 30000 · 单后端超时毫秒

recency · any · 时间范围过滤:day / week / month / year(映射到各后端原生参数)

language · 空 · 搜索语言,如 en、zh-CN(SearXNG/Brave/Serper 支持)

safeSearch · true · 安全搜索开关(SearXNG/Brave 支持)

dedupStrategy · url · url 仅按链接去重;url+title 额外合并同标题的转载镜像

rerank · false · 按查询词相关性重排序(确定性;并列时保持后端优先级)

v2.1 结果策略:设置面板新增「结果策略」分区。时间/语言过滤按各后端能力自动映射——Brave freshness/country/search_lang、Tavily time_range、Serper tbs/hl/gl(Google 日期语法)、SearXNG time_range/language、DDG df;不支持的后端自动忽略对应维度。内部超时以真实原因失败(backend "<id>" timed out after Nms),不再被静默降级为取消;Mojeek 的 API Key 改走 Authorization 头,不再出现在 URL 中。

结果健康遥测(默认开):每次搜索的 content 尾部附一行 [websearch backends] exa ✓5ms/3 · ddg ✗30000ms,

模型可据此自诊断并建议用户调整设置;设置面板「结果策略」可关闭(resultTelemetry)。

11 个后端开关:enableExa / enableParallel / enableDdg / enableSearxng(默认开);enableBrave / enableTavily / enableSerper / enableMojeek / enableDeepseek / enableAnthropic / enableOpenai(默认关)

API Key 授权(credential-ref,填环境变量名,实际 key 存于 credentials 服务或环境变量):

字段 · 默认引用

braveApiKeyEnv · BRAVE_API_KEY

tavilyApiKeyEnv

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Embed the badge

Two badges, each using its own site's identity: left is the **standard** (published by DSHIO), right is the **testing organization** (deepseekbase, which ran the inspection). Each links to the standard text and the test report.

DSHIO/T 10deepseekbase

Markdown(推荐,两个一起)

[![DSHIO/T 10](https://deepseekbase.com/badge/std.svg)](https://dshio.org/10/) [![deepseekbase](https://deepseekbase.com/badge/240xu-dsh-websearch.svg)](https://deepseekbase.com/zh/plugins/240xu-dsh-websearch/)

Note: this is not a certification. DSHIO/T 32 is not in effect.

Versions

Published on npm::23,最后更新 2026-10-21

Links

GitHub · Homepage · npm

Frequently asked

How do I install @240xu/dsh-websearch?
Run dsh plugin --profile web add @240xu/dsh-websearch in DSH, or paste the package name into the DSH Desktop plugin page.
What if it fails to install?
Check your DSH version first (dsh --version), then look at the first error in the test-results section. If it still fails, open an issue on the repository.
How do I uninstall it?
Run dsh plugin --profile web remove @240xu/dsh-websearch.

Same category

Compare with peers

PluginDownloadsVerdictSize
dsh-connect-workbuddy70.6Kpass80.02 MB
dsh-codex-subscription30.5Kpass84.14 MB
dsh-thinking-levels26.8Kinstall_failed—
dsh-connect-trae19.9Kpass76.64 MB
@goodandready/dsh-subscriptions16.7Kpass15.29 MB
@opencode2dsh/dsh-plugin13.9Kpass81.52 MB
@mars-sea/dsh-commandcode-provider13.0Kpass22.46 MB
dsh-plugin-subscriptions11.7Kpass16.7 MB