DeepSHPlugins
dsh-searxng 專案預覽
GITHUB / COMMUNITY PROJECT

dsh-searxng

工具與整合TypeScriptMIT

基於 SearXNG 的 web_search provider:透過自建例項的 JSON API 實現免費、免金鑰的元搜尋,附僅繫結迴環地址的 docker-compose 示例。

7 Starsrogerdigital 更新時間 2026-09-09
訪問 GitHub 倉庫
dsh-searxng 專案預覽

專案介紹

中文

基於 SearXNG 的 web_search provider:透過自建例項的 JSON API 實現免費、免金鑰的元搜尋,附僅繫結迴環地址的 docker-compose 示例。

English

SearXNG-backed web_search provider for the web seam: free, self-hosted, key-less metasearch through your own instance's JSON API, with a bundled loopback-only docker-compose example.

專案資訊與收錄訊號

快照 2026-09-11
作者 / 組織
rogerdigital
倉庫
rogerdigital/dsh-searxng
GitHub Stars
7
Forks
0
開發語言
TypeScript
許可證
MIT
最近推送
2026-09-09
Manifest
資料中檢測到宣告

公開倉庫不自動等於可商用;許可證與當前相容性以原專案文件為準。Manifest 和資料評分不構成安裝安全認證。

資料評分

73/ 100
維護活躍
99
文件與實用資訊
85
生態關注度
26
安裝便捷訊號
100
專案宣告訊號
100

近 2 天仍在更新;README 含完整安裝與使用說明;關注度尚低(7)。

評分來自已有資料快照的五維模型,僅作瀏覽參考,不是實際使用評測或安全檢測結論。

安裝與使用

所有專案資料與許可均以對應 GitHub 倉庫為準。

dsh plugin --profile web add dsh-searxng

複製命令不會自動執行。請先閱讀倉庫文件,確認環境要求與許可證。

專案截圖

倉庫 README

GitHub 原文

已儲存的倉庫文件快照;文件抓取時間未記錄,可能與上方目錄介紹處於不同版本。安裝前請核對當前倉庫說明。

儲存庫檔案保留原文,指令與授權文字不作自動改寫。

dsh-searxng

dsh-vet

A DeepSeek Harness (dsh) plugin that registers a SearXNG-backed search provider into the web capability seam (ctx.web), giving your agent web_search through a free, self-hosted, key-less metasearch instance — instead of the paid Exa/Perplexity APIs.

Quick start

Requirements: Node.js 20 or newer, dsh, Docker Engine or Docker Desktop, and Docker Compose v2.

The setup command installs and attaches dsh-searxng to the selected profile, so no separate plugin-install step is required.

npx dsh-searxng setup
dsh --profile web

setup creates a loopback-only, pinned SearXNG Docker deployment, waits for the JSON API, runs a real search through both SearXNG and the final DSH provider configuration, and only then activates the profile. Repeating the command reuses the same owned container, port, configuration, and secret.

Use another DSH profile or port when needed:

npx dsh-searxng setup --profile research --port 9080
dsh --profile research

Package installation and DSH plugin activation never start Docker. Docker is changed only by an explicit dsh-searxng setup or dsh-searxng remove --service command.

Existing SearXNG

An existing local, remote, authenticated, or independently managed SearXNG instance is a first-class path:

npx dsh-searxng setup --profile web --url https://search.example.com

The endpoint must be HTTP(S), contain no credentials, query, or fragment, and enable JSON search. Existing provider options such as authHeader, language, engines, and categories in the DSH profile are preserved and used by validation. External mode never invokes Docker.

Manual plugin installation

If you manage the DSH profile patch yourself and do not want the setup command to attach it, install only the plugin package:

dsh plugin add dsh-searxng

With a named profile, use dsh plugin --profile <name> add dsh-searxng.

Operations

# Fast health result; stops at the first failure.
npx dsh-searxng status --profile web

# Ordered environment, Docker, ownership, HTTP, JSON, search, profile, and provider checks.
npx dsh-searxng doctor --profile web

# Plan and execute ownership-safe repairs for the managed deployment.
npx dsh-searxng repair --profile web

# Move the managed deployment to a packaged version with verified rollback.
npx dsh-searxng update --profile web

# Detach the profile and remove the plugin package from that profile.
npx dsh-searxng remove --profile web

# Also stop and remove the owned service; keep its data and local state.
npx dsh-searxng remove --profile web --service

# Permanently delete the exact owned data volume and managed directory.
npx dsh-searxng remove --profile web --service --purge-data

Permanent deletion prompts on an interactive terminal. Automation must add --yes. --json is available on setup, status, doctor, repair, update, and remove. Destructive Docker operations run only after the container, network, and volume labels match this DSH home; same-name foreign resources are refused.

Recovery semantics

repair and update journal their progress under $DSH_HOME/dsh-searxng/journal.json between the first mutation and validated completion; setup and remove read that journal to refuse during or clean up after an interruption.

  • setup refuses to run while an interrupted operation is recorded and points at repair.
  • repair takes over when a journal exists: it recomputes the recovery decision from disk (clear

the journal, validate the target, or resume the rollback) before any ordinary repair, and also removes quarantined stale locks left by dead processes. doctor reports the interrupted operation's id, kind, phase, and age.

  • update is transactional: the current deployment stays authoritative until the target passes

readiness, real-search, and provider validation. Any failure after the first Docker mutation rolls back to the previous image and configuration and revalidates them; same-version updates are rejected with E_DEPLOYMENT_UNSUPPORTED.

  • remove --service clears the journal once the deployment is gone, so a subsequent setup is

not refused.

Provider configuration

The setup command manages the web-search-searxng row in $DSH_HOME/profiles/<name>/cordis.patch.yml. These optional values can be added to that row:

KeyDefaultMeaning
baseURLmanaged or --url endpointSearXNG base URL.
languagenoneSearXNG language, for example zh-CN or en-US.
enginesnoneComma-separated engine allowlist.
categoriesnoneComma-separated category filter.
authHeadernoneAuthorization header for a protected external instance.

If several DSH search providers are available, select this one with DSH_WEB_SEARCH_PROVIDER=searxng or the corresponding searchProvider DSH web configuration.

Troubleshooting

  • E_DOCKER_MISSING / E_DOCKER_OFFLINE: install or start Docker.
  • E_COMPOSE_UNSUPPORTED: enable Docker Compose v2.
  • E_JSON_DISABLED: add json to SearXNG search.formats.
  • E_AUTH_FAILED: check the external instance's authHeader configuration.
  • E_TLS_FAILED: the endpoint's TLS certificate failed validation; check the certificate chain

and retry.

  • E_RATE_LIMITED: adjust the instance limiter or upstream engine selection.
  • E_RESOURCE_FOREIGN: a same-name Docker resource does not carry this installation's ownership

labels; it is never modified automatically.

  • E_BUNDLE_DAMAGED: the generated configuration bundle is incomplete or mismatched; repair

rebuilds it from the packaged assets while preserving the existing secret.

  • E_DEPLOYMENT_UNSUPPORTED: the packaged deployment catalog cannot satisfy the request (unknown

or same version requested, or an entry incompatible with the current state); upgrade dsh-searxng or choose an available version.

  • E_PROFILE_CONCURRENT_MODIFICATION: the DSH profile changed during the operation; review it and

retry.

doctor --json returns the complete redacted check list and actionable error codes.

Runtime support

  • Node.js: 20 and newer.
  • CLI, tests, build, and packed artifact: verified on Linux, macOS, and Windows in CI.
  • Managed Docker journey (including repair and update rollback) and Docker adapter integration:

verified in opt-in Linux CI with Docker Engine and Compose v2. The release certification runner is also exercised there; CI provides no Docker Desktop and uses a stub dsh, so it is not a formal certification.

  • Certified Docker environments per release: only those with a complete passing report from

the release tarball in docs/release-certification.md — one each from macOS + Docker Desktop, Windows + Docker Desktop + WSL2, and Linux + Docker Engine + Compose v2.

  • Docker Desktop on macOS is certified for 0.3.0

(docs/certification/v0.3.0-darwin-arm64.json); Docker Desktop on Windows is compatible (same engine, same Compose v2 plugin) but uncertified until its report exists for a given release.

  • External SearXNG mode does not require Docker and works on any platform with Node.js 20+.
  • Podman and Podman Compose are not supported in the managed path.

Release prerequisites: before any deployment catalog entry beyond version 1 ships, setup must select deployments from the packaged catalog instead of the compiled-in default pin, so a new catalog entry is installable without an intermediate CLI upgrade (tracked follow-up from the lifecycle work).

dsh is in developer preview with breaking changes expected. Version 0.2.1 supports @deepseek-ai/dsh-web >=0.1.0-rc.6 <0.2.0 and @deepseek-ai/dsh-launch-environment >=0.0.1-rc.3 <0.2.0.

Development

pnpm install
pnpm verify

The repository Docker example is development-only. The packaged setup path is the supported quickstart because it pins the image, generates a private secret, labels every owned resource, and validates the final provider before activation. The opt-in Linux CI job runs both real Docker release checks:

DSH_SEARXNG_E2E=1 pnpm test:e2e
DSH_SEARXNG_DOCKER_INTEGRATION=1 pnpm test -- test/cli/docker.integration.test.ts

Platform certification of a packed tarball runs on each release host:

pnpm pack --pack-destination ./node_modules/.cache/pack
pnpm certify:platform -- --tarball ./node_modules/.cache/pack/dsh-searxng-<version>.tgz

License

MIT

使用前核對

安裝步驟、相容版本與授權範圍以原專案當前文件為準。Stars 和評分是快照中的導航訊號。

安裝與排錯 · 專案問題反饋

同類專案