插件目录 / Knowledge / dsh-searxng
dsh-searxng
已验证 · 实测可装 rogerdigital
功能简介
Knowledge 类别的 DeepSeek Harness 插件。
可用 — 实测通过,早期项目
Knowledge 类别的 DeepSeek Harness 插件。 实测能干净安装、正常启动。早期项目,但功能可用。
「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。
README
dsh-searxng
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.
setuprefuses to run while an interrupted operation is recorded and points atrepair.repairtakes 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.doctorreports the interrupted
operation's id, kind, phase, and age.updateis 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 withE_DEPLOYMENT_UNSUPPORTED.remove --serviceclears the journal once the deployment is gone, so a subsequentsetupis
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:
| Key | Default | Meaning |
|---|---|---|
baseURL |
managed or --url endpoint |
SearXNG base URL. |
language |
none | SearXNG language, for example zh-CN or en-US. |
engines |
none | Comma-separated engine allowlist. |
categories |
none | Comma-separated category filter. |
authHeader |
none | Authorization header for a protected external instance. |
If several DSH search providers are available, select this one withDSH_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: addjsonto SearXNGsearch.formats.E_AUTH_FAILED: check the external instance'sauthHeaderconfiguration.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 stubdsh, 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
安装
装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:
dsh plugin add dshbase-catalog 然后对 agent 说「帮我装 dsh-searxng」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。
该插件是 GitHub 源码(未发 npm)——直接从仓库装:
Web profile:
dsh plugin --profile web add github:rogerdigital/dsh-searxng Headless(CLI)profile:
dsh plugin --profile headless add github:rogerdigital/dsh-searxng 实测报告
验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。