anthony1x6000/dsh-searxng-search ↗★ 0

dsh-searxng-search

Keyless web_search for DeepSeek Harness via a self-hosted SearXNG instance 适合需要无API密钥网页搜索的用户,本地需安装并支持Podman容器。

パッケージ
dsh-searxng-search
互換性
未検証
バージョン
0.1.0
ライセンス
MIT
最終更新
2026/09/23

インストール

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:anthony1x6000/dsh-searxng-search

ドキュメント

README 全文を読む ↗

dsh-searxng-search

ci

Keyless web_search for DeepSeek Harness via a self-hosted SearXNG instance. A thin ctx.web provider (searxng-local) plus on-demand podman start — no API key, no MCP hop.

Install

One-liner for podman (system dependency, outside pnpm):

sudo apt update && sudo apt install -y podman

Install the bundle into your web profile (pnpm only — no profile hand-editing):

dsh plugin --profile web add "github:anthony1x6000/dsh-searxng-search#main"

Verify the layer without booting:

dsh --profile web --dump-config | grep -B 1 -A 4 searxng

Then restart dsh web for the new bundle layer to take effect. Build artifacts (lib/) are committed, so installing from git runs no build and needs no pnpm allowBuilds approval. The first search creates the container if missing (~1–2 min for the image pull), later ones start it on demand after reboots.

The bundle pins searchProvider: searxng-local in its own layer because the base bundle defaults to deepseek-official (hosted API, needs a key) — without the pin, searches never reach your local instance. Your profile patch can still override it. To go back to hosted search, dsh plugin --profile web remove dsh-searxng-search (then restart) and the layer — pin included — is gone.

Local development: pnpm install && pnpm build, then dsh plugin --profile web add link:/path/to/dsh-searxng-search.

Files

FileRole
index.tsThe plugin source: WebSearchProvider over GET {base}/search?format=json, on-demand podman start for loopback bases
lib/index.jsBuilt artifact (pnpm build), committed — what installed profiles actually load
package.jsonBundle manifest (dsh.bundle.patch); build-only devDeps, zero runtime deps
cordis.patch.ymlBundle layer: package-name entry + searxng-local provider pin
searxng-podman.shOne-shot SearXNG setup: settings.yml (secret + json format), container run, health check
selfcheck.tsMapping + URL-gating + packaging asserts: pnpm selfcheck

Config

Env / row fieldDefaultMeaning
SEARXNG_BASE_URL / baseURLhttp://127.0.0.1:8888SearXNG base; /search is appended
SEARXNG_CONTAINER / containerNamesearxngContainer started on demand
SEARXNG_CLI / containerCLIpodmanpodman, docker tried as fallback
SEARXNG_START_TIMEOUT_MS / startTimeoutMs60000Start + readiness budget per search
SEARXNG_AUTO_CREATE / autoCreatetrueCreate the container when missing (set 0/false to start-only)
SEARXNG_IMAGE / imagedocker.io/searxng/searxng:latestImage pulled on first creation
SEARXNG_PORT / port8888Host port the container binds

Autostart only manages loopback bases (localhost, 127.0.0.1, ::1); remote bases fail fast. Redirects are rejected (redirect: 'error'); SearXNG returns no generated answer, so results carry sources only.