DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Web Searxng Search — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
W

dsh-web-searxng-search

Web Searxng Search

用于 DeepSeek Harness(ctx.web)的自托管 SearXNG 网页搜索提供商。无需 API 密钥,也无需供应商账户。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:kkgace/dsh-web-searxng-search#82cd8bd2ea355c0065298d32f3acc8e8fa8129cf
README兼容性版本

兼容性与来源证明

Web Searxng Search 以 dsh-web-searxng-search 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/17

版本

0.1.0stable
2026/9/17

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/17
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

Browser Skill Dsh Plugin@wxg-prc-cpg/browser-skill-dsh-plugin向模型提供 BrowserSkill 浏览器自动化(browser_* 工具)的 DeepSeek Harness 工具插件Free Searchdsh-free-searchDeepSeek Harness 的免费网页搜索:13 个引擎(Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl 无需密钥;Parallel/Perplexity/SerpBase/DeepSeek 需要密钥),支持时间筛选、平台搜索和 web_fetch,并提供网页设置界面。Find Plugindsh-find-plugin在代理中查找 DeepSeek Harness 插件——实时搜索 GitHub 上的 dsh-plugin 主题,并按星标数排序。Anysearch Dsh@anysearch/anysearch-dsh适用于 DeepSeek Harness 的 AnySearch 网络搜索和获取提供程序及高级工具

README

dsh-web-searxng-search

Self-hosted SearXNG web search provider for DeepSeek Harness.

English | 中文

Points the web_search tool at a SearXNG instance you operate. No API key, no vendor account, no per-query attribution.

Motivation

DeepSeek Harness ships a web search provider backed by the DeepSeek API, so every search is billed and attributed to an API key. This plugin registers a second provider on the same ctx.web seam and switches the seam to it. Search then runs against infrastructure you control and requires no vendor credential.

Features

  • Drop-in WebSearchProvider on the ctx.web seam — the built-in web_search tool keeps working.
  • No runtime dependencies of its own; the official @deepseek-ai/* packages are peer dependencies served by the host.
  • Configurable timeout, language, safe-search level, categories and engine allow-list.
  • Results deduplicated by URL — meta-search engines return the same page more than once.
  • Distinguishes "the instance returned HTML" (JSON format not enabled) from "no results", with an actionable error message.
  • Registration is an effect (ctx.effect), so unload and HMR roll back cleanly.
  • 14 offline unit tests — no network required.

Requirements

ComponentVersion / note
DeepSeek Harness@deepseek-ai/dsh-web 0.1.x
Node.js>= 22.19
SearXNGJSON format enabled (see below)

Enable the SearXNG JSON API

The plugin reads the SearXNG search API. JSON output is disabled by default; without it the instance answers 200 with an HTML page, which the plugin reports as a configuration error rather than as "no results".

# settings.yml
search:
  formats:
    - html
    - json

Verify the endpoint before installing:

curl -fsS 'http://localhost:8888/search?q=test&format=json' | head -c 120

Installation

# from npm
dsh plugin --profile web add dsh-web-searxng-search

# from GitHub
dsh plugin --profile web add github:kkgace/dsh-web-searxng-search

# from a local checkout
dsh plugin --profile web add /path/to/dsh-web-searxng-search

Then restart the web app:

dsh web

Once listed, the plugin can also be installed from Settings → Plugin Market.

Configuration

The bundle ships a working default of http://localhost:8888. Point it at your own instance with a profile overlay — patch the existing row, never insert a new one:

# ~/.dsh/profiles/web/cordis.patch.yml
- id: web-search-searxng
  config:
    baseURL: 'https://searxng.example.com'

Alternatively, set SEARXNG_BASE_URL in the environment dsh runs in.

OptionTypeDefaultDescription
baseURLstringhttp://localhost:8888Root URL of the instance, without a trailing /search.
timeoutMsnumber15000Per-request timeout, 1000–120000 ms.
languagestring—UI language forwarded to the instance, e.g. en-US.
safeSearch0 | 1 | 20Off · moderate · strict.
categoriesstring—Comma-separated SearXNG categories, e.g. general,it.
enginesstring—Comma-separated engine names to narrow the search.
apiKeystring—Bearer token, only if the instance requires one.

How it works

  1. Everything in Harness is a Cordis plugin, and capabilities are exposed as seams. Web search is the ctx.web seam.
  2. The plugin implements the WebSearchProvider contract — id, available(): boolean (local and cheap, never touches the network) and search(req, signal?) — and registers itself with ctx.web.registerSearchProvider(...) inside ctx.effect(...).
  3. Registration alone is not enough: cordis.patch.yml switches web.searchProvider to searxng. Without that step the seam stays on the built-in provider.
  4. Failures are raised as WebError(message, code, { cause }) so the host routes them instead of silently falling back to another provider.

Development

npm test        # node --test tests/*.test.mjs

The tests mock globalThis.fetch and never touch the network. The official @deepseek-ai/* packages are peer dependencies provided by the host; to run the tests outside a Harness profile, make them resolvable from node_modules.

Troubleshooting

SymptomCause / fix
web_search still uses another providerweb.searchProvider does not point at searxng, or dsh web was not restarted.
duplicate loader entry id: web-search-searxng at bootThe profile overlay inserts a row the bundle already inserts. Use the - id: … + config: patch form instead.
"No results" while the instance returns dataJSON format is not enabled on the instance.
WEB_PROVIDER_CONFIGURED_UNAVAILABLEavailable() returned false — baseURL is not an absolute http(s) URL.
WEB_PROVIDER_TIMEOUTThe instance did not respond within timeoutMs.

License

MIT