前言¶
DeepSeek Harness (DSH) 的 ctx.web 接口本身是模型无关的,默认提供程序 dsh-web-search-deepseek 却依赖 DeepSeek 服务端的搜索能力。当切换到本地模型(如 Ollama)时,由于缺少 API Key,搜索功能会失效。gausszhou/dsh-web-search-local 插件通过注册本地提供程序,绕过 DeepSeek 服务端搜索,支持本地模型直接调用网络搜索与页面抓取。
功能概览¶
该插件提供两类提供程序:
- local-multi:本地多引擎网络搜索提供程序。
- local-fetch:本地页面抓取提供程序。
搜索采用分层策略:SearXNG(私有)-> 全球(Google, DuckDuckGo, Mojeek)-> CN(Bing, Baidu, Sogou, 360)。同层引擎并行查询,结果合并轮询。单层无结果时降级至下一层。页面抓取支持字符集感知解码(含 GBK)。
安装与启用¶
通过 DSH CLI 安装,插件会自动激活。
dsh plugin add @gausszhou/dsh-web-search-local
安装后,web 配置会自动切换到 local-multi / local-fetch 提供程序,并禁用 web-search-deepseek。如需调整默认配置,可在 cordis.patch.yml 中覆盖。
配置说明¶
在 cordis.patch.yml 中配置引擎列表、代理及超时等参数。
config:
engines: [searxng, google, duckduckgo, mojeek, bing, baidu, sogou, 360]
skipWithoutProxy: [google, duckduckgo, mojeek]
proxyUrl: '' # ''自动 | 'off' | 'http://host:port'
searxngBaseUrl: 'http://127.0.0.1:8080'
searchTimeoutMs: 12000
engineMinIntervalMs: 1500
支持通过环境变量 HTTPS_PROXY 或 HTTP_PROXY 设置代理。代理仅对全球引擎生效,CN 引擎直连。
速率限制与韧性¶
插件内置应对引擎限流的机制:
- 节流:engineMinIntervalMs 防止单引擎重复调用。
- 熔断器:遇到验证墙或异常时触发冷却。
- 降级:DuckDuckGo 遇到限制时自动尝试 Lite 接口。
注意事项¶
- 需要运行 Node.js >= 20.3。
- Node 进程不读取系统浏览器代理,需通过配置或环境变量指定。
- Google 引擎易受抓取限制,建议配置 SearXNG。