dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Self-hosted SearXNG search backend for DSH — settings card, one-click connectivity tests, and a self-ranking community instance picker. No third-party search API needed.
Self-hosted SearXNG as the web_search backend for DSH.
给 DSH 接上自建 SearXNG 做 web_search 搜索后端(provider id: searxng)——不用把查询交给第三方搜索 API。
deploy/)要求 Node >= 20,DSH web profile。
dsh plugin --profile web add dsh-web-searxng
本地验证当前代码:
dsh plugin --profile web add file:/path/to/dsh-web-searxng
装完重启 dsh web。
多搜索后端并存时,把默认指到 searxng,否则会报 WEB_PROVIDER_AMBIGUOUS。可靠做法是改 profile 用户层 ~/.dsh/profiles/web/cordis.patch.yml(patch 整段替换 config,两个 key 都要写):
- id: web
config:
searchProvider: searxng
fetchProvider: http
改完 dsh --profile web --dump-config 确认,再重启。只想试一次:dsh --profile web --patch ./pin-searxng.patch.yml(内容同上)。环境变量 DSH_WEB_SEARCH_PROVIDER=searxng 只在 composition 没写 pin 时生效,官方 base 默认写了 deepseek-official,单用它会被盖掉——本插件也不会自带 pin(全局默认是运维侧的选择,插件抢 pin 会打架)。
验证:
web_search({queries: ["searxng format=json"]})
设置页 SearXNG 搜索 卡全部可配,也支持环境变量回退(SEARXNG_BASE_URL / SEARXNG_USERNAME / SEARXNG_PASSWORD / SEARXNG_PROXY_URL,见 .env.example)。优先级:设置页 > composition entry > 环境变量。
| 字段 | 说明 | 默认 |
|---|---|---|
baseURL | SearXNG 实例地址,留空 = 未配置(provider 不可用) | "" |
username / password | BasicAuth,公用实例留空即不发 Authorization 头 | "" |
categories / language | SearXNG 搜索参数 | general / zh-CN |
safesearch | 0 关闭 / 1 中等 / 2 严格 | 1 |
proxyUrl | 出境代理,留空 = 直连;出境受限的机器必填 | "" |
proxyEnabled | 代理启用开关(设置页勾选框);关闭后走直连,地址保留 | true |
deploy/)deploy/
├── docker-compose.yml # core(单 worker)+ valkey + Caddy,1G 内存可跑
├── Caddyfile # HTTPS + BasicAuth + 只放行 /search
├── .env.example # secret 模板
└── core-config/
└── settings.yml # formats 必开 json;引擎精简到抗封组合
cp deploy/.env.example ~/searxng/.env # 填入真实 secret
# up 起容器后:
curl -su dsh:你的密码 'https://search.example.com/search?q=searxng&format=json' | head -c 2000
pnpm install
pnpm run typecheck
pnpm run build # host(tsc)+ client(tsc 声明 + esbuild bundle)
make help # sync / smoke / probe / update-instances
make sync # 构建后用本地 file: 覆盖到 dsh web profile 验证
实现要点:
src/host/provider.ts — GET /search?format=json 薄适配,只返回真实来源,不编造成式内容src/host/probe.ts / instances.ts — 测试连接与名单刷新走 settings section 请求/响应往返(故意不用 host↔client RPC:第三方 client 上下文调不通 ctx.remote.<ns>)src/host/dispatcher.ts — 出境代理(undici ProxyAgent + socks bespoke Dispatcher)src/client/ — 配置卡 + 选择器(中英 locale;可用优先、失败分层、待测态、100 候选早停)/search。google 引擎(VPS IP 易触发 CAPTCHA);搜出来慢先 curl 直测 VPS 本机 vs 经 Caddy 定位。docs/00-solution-full.md — 全套方案(VPS 内存账本 / compose / 接线 / 排错)docs/01-background.md — DSH 分层与 SearXNG API 调研docs/02-TODO.md — 后续清单MIT — 见 LICENSE。