前言¶
DeepSeek Harness (DSH) 的 web profile 通过 ctx.web 接口解决搜索问题。默认情况下,这个接口由托管后端提供。对于已经运行自己的搜索栈(如 SearXNG、内部搜索网关或厂商 API)或希望查询留在本地网络内的用户来说,默认行为并不适用。
插件介绍¶
插件名称为 dsh-web-search-custom,由用户 runfali 维护,属于「联网工具」分类。它是一个标准 dsh bundle 插件,设计意图是薄适配器:不拥有搜索引擎、索引或缓存,仅负责与任意 JSON API 进行对接。
核心功能¶
- 零侵入与零依赖:作为标准 bundle 插件,移除后可恢复原生搜索提供商,无需修改 DSH 源码。无运行时依赖,仅使用 DSH 自带的包。
- 通用 JSON API 支持:支持 GET 或 POST 请求,支持自定义 Authorization 等头部信息。
- 可视化配置:支持在设置页面配置 URL、API Key、超时及字段映射。
- 默认兼容 SearXNG:内置的字段映射与 SearXNG 的
results[]/url/title/content/publishedDate结构一致。
安装与启用¶
通过官方命令安装插件:
dsh plugin --profile web add dsh-web-search-custom
安装后重启 DSH Web 实例。
配置方法¶
插件注册的搜索提供商 ID 为 custom。选择该 provider 后,通过以下三种方式配置:
1. 设置页面¶
打开 Settings → Plugins,展开 “Custom search (web-search-custom)” 卡片。所有参数均可编辑,保存后立即生效。
2. Profile Patch Layer¶
通过 settings document 中的 patch 层覆盖配置:
- id: web-search-custom
config:
url: 'http://127.0.0.1:8080/search?format=json&q={query}'
apiKey: ''
method: GET
body: '{"query":"{query}"}'
headers: '{}'
authHeader: Authorization
authScheme: Bearer
timeoutMs: 30000
resultsPath: results
urlField: url
titleField: title
snippetField: content
publishedField: publishedDate
3. 环境变量¶
使用环境变量覆盖配置,适合处理敏感信息:
WEB_SEARCH_CUSTOM_URL:覆盖搜索 URLWEB_SEARCH_CUSTOM_API_KEY:覆盖 API Key
配置参考¶
主要配置项如下:
url:搜索端点,支持{query}和{apiKey}占位符。apiKey:可选 API Key,默认作为Authorization: Bearer发送。method:请求方法,支持 GET 或 POST,默认 GET。body:POST 请求体模板。headers:额外请求头,JSON 格式。timeoutMs:请求超时时间,默认 30000ms。resultsPath:结果数组路径(如data.results)。urlField/titleField/snippetField/publishedField:结果字段映射。
注意事项与限制¶
- 版本要求:DeepSeek Harness 版本需满足
>=0.1.2-alpha.3 <0.2.0 || >=0.1.5-alpha.1 <0.1.6;Node.js 版本需满足^22.19.0 || >=24.0.0。 - 网络访问:需要主机到配置端点的出站网络访问权限。
- 数据处理:插件会对结果进行去重(按 URL)、过滤非 http(s) 条目、去除 HTML 标签及解码实体。
结尾¶
该插件为 DSH Web UI 提供了灵活对接私有或第三方搜索 API 的能力,通过薄适配器的设计实现了零侵入和快速配置。更多细节可查阅插件目录页或源码仓库。