chinng-inta/dsh-web-search-searxng ↗★ 5
dsh-web-search-searxng
基于SearXNG的自建免Key网页搜索源 适合已有SearXNG实例、需要免API密钥检索的用户;搜索后端无需另发模型请求。
同名套件的其他儲存庫
安裝
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:chinng-inta/dsh-web-search-searxng說明文件
閱讀完整 README ↗Configuration
The configuration is this plugin row's config. baseURL additionally falls back to $SEARXNG_URL
when the row does not set it, so nothing else is needed to get started: export the variable and the
provider is configured.
Every key is declared volatile, which since dsh 0.1.7-rc.2 means two things: the harness settings
service may edit it, and an edit updates the running plugin in place (no restart). The provider
reads the row per search, so an edit reaches the next search, and clearing baseURL falls back to the
environment again rather than stranding the provider on a value it can no longer see. Registration
itself never moves, so provider selection does not flicker when configuration changes.
There are two ways to set it:
- The Plugins page. Open this package, then the configure control on its
web-search-searxngrow. The page edits the instance URL and the search language, and saves into the active profile's patch ($DSH_HOME/profiles/ /cordis.patch.yml). - A patch row, in your profile patch or a
--patchoverlay:
- id: web-search-searxng
config:
baseURL: http://searxng.internal:8888
language: ja
categories:
- general
- news
A patch row replaces the targeted row's whole config, so restate every key you want. And a row
you set in a --patch overlay sits above the profile patch the Plugins page writes to: a save there
still changes the running value, but it is not persisted, and the overlay wins again at the next boot.
All keys are optional.
| Key | Default | Meaning |
|---|---|---|
baseURL | $SEARXNG_URL | Instance root; /search is appended. Missing or non-http(s) makes the provider report unavailable rather than fail every search. |
categories | instance default | categories= filter, e.g. ['news']. |
engines | instance default | engines= filter, e.g. ['duckduckgo', 'brave']. |
language | instance default | language= filter, e.g. ja, en-US. |
timeRange | unset | time_range= filter: day / week / month / year. |
safesearch | instance default | safesearch=: 0 off, 1 moderate, 2 strict. |
timeoutMs | 10000 | Resource backstop for one search. |
maxSnippetChars | 500 | Per-source snippet cap. |
headers | none | Extra request headers, e.g. for an instance behind an authenticating proxy. |
Upgrading from 0.4.x: the web-search-searxng: section of $DSH_HOME/settings.yaml is no longer
read — dsh 0.1.7 removed that document. dsh imports it once into the profile patch of the first
profile that boots (and renames the file to settings.yaml.imported); check the result landed where
you expect.
Every search-shaping knob is a deployment setting, not a model argument. The seam's
WebSearchRequest is deliberately just query + maxResults; provider-neutral controls (recency,
domain filters, search depth) are named deferred work upstream. Keeping them in config is what makes
this provider substitutable for the shipped ones.
timeoutMs is a resource backstop, not the model-facing tool-call budget —
@deepseek-ai/dsh-tool-call-timeout-policy owns that via tool-web's searchTimeoutMs. Leave this
below the tool budget so a slow instance surfaces as a provider failure rather than a tool timeout.