为 DeepSeek Harness 提供可配置联网搜索,支持 SearXNG、Wikipedia、Tavily、Brave 与 Gemini,并支持客户端引擎选择和受控重试。
安装
# npm 包(预构建)
dsh plugin --profile web add @lemoncat7/dsh-web-search
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:lemoncat7/dsh-web-search
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
面向 DeepSeek Harness 的可配置联网插件。插件提供 DSH 原生 web_search 与 web_fetch:搜索由管理员选择的后端完成,网页抓取则通过同一套插件级代理和安全边界完成。另有受限的 web_source,供 Agent 按明确来源规则核验原始 HTML 标记或脚本内嵌数据;普通网页阅读仍应使用 web_fetch。
兼容性
正式版 0.3.3 针对 DeepSeek Harness 0.2.0-rc.2 构建,需要 Node.js ^22.19.0 或 >=24.0.0。Desktop 来源兼容修复已通过自动化 HTTP 测试,尚未实测真实 Desktop 客户端。插件为正式版,宿主仍为 RC;DSH 0.1.7 请保留 0.3.2。详见 发布说明。
搜索来源
| 提供方 | 密钥 | 适用场景 |
|---|---|---|
| SearXNG | 不需要 | 自托管的通用网页搜索 |
| Wikipedia | 不需要 | 稳定的百科资料,默认使用中文站点 |
| Tavily | 需要 | 面向 Agent 的通用搜索 |
| Brave Search | 需要 | 传统网页与新闻检索 |
| Gemini Grounded Search | 需要 | 带 Google Search 引用的生成式检索;查询包含 URL 时同时启用 URL Context |
每次查询只发送给当前选中的提供方,不会暗中并发请求或自动消耗其他 API 额度。
安装
dsh plugin --profile web add @lemoncat7/dsh-web-search
开发包:
npm install
npm run check
dsh plugin --profile web add ./dist/lemoncat7-dsh-web-search-0.3.1.tgz
安装后进入 设置 → 插件 → 插件配置 → 联网搜索。可以选择提供方、保存密钥、调整超时和安全搜索,并在保存前执行一次真实测试。
默认启用无需密钥的中文 Wikipedia,保证插件安装后即可验证。若需要通用网页搜索,推荐部署 SearXNG 或配置 Tavily / Brave / Gemini。
本地 SearXNG
仓库附带只绑定本机回环地址的 SearXNG Compose 配置:
docker compose -f deploy/searxng/compose.yml up -d
curl -fsS -X POST http://127.0.0.1:8080/search -d 'q=DeepSeek&format=json'
不要直接把该实例暴露到公网。公网服务需要额外的认证、限流和访问控制。
设置页可以从当前实例的 /config 获取通用搜索引擎,受控并发逐个测速,并按可用性和延迟排序。选择的引擎只保存在当前 DSH 配置中;正式搜索还可设置 0–3 次失败或空结果重试。
配置示例
- id: lemoncat7-web-search
config:
provider: searxng
requestTimeoutMs: 25000
searxng:
baseURL: http://127.0.0.1:8080
language: zh-CN
engines: [bing, baidu]
retryCount: 1
safeSearch: 1
代理
插件的搜索与网页抓取共用独立的出站代理,不会修改 DSH 或其他插件的全局网络行为:
export DSH_WEB_SEARCH_PROXY=http://127.0.0.1:7893
export DSH_WEB_SEARCH_NO_PROXY=localhost,searxng
回环地址和常见私网 IPv4 默认直连,适合本地 SearXNG;其他自定义直连域名可以放入逗号分隔的 DSH_WEB_SEARCH_NO_PROXY。
Brave、Tavily 与 Gemini 的密钥通过 DSH Credential Store 保存,不写入普通插件配置。默认引用分别为:
BRAVE_SEARCH_API_KEYTAVILY_API_KEYGEMINI_API_KEY
安全边界
- 搜索 JSON 与网页正文均限制为 2 MiB;搜索结果在进入 DSH 前校验结构。
web_fetch只接受无凭据的 HTTP(S) 公网地址,拒绝回环、私网、链路本地与保留目标。web_fetch最多跟随 5 次重定向,并在每一跳重新执行目标校验;只返回 HTML、文本、JSON 与 XML 等文本内容。web_source复用相同的安全抓取,只能对一个精确 URL 做分段读取或查找有限个源码标记,单次最多返回 120,000 字符。- API Key 只放在提供方规定的认证 Header 中,不出现在 URL 和结果里。
- 浏览器设置接口执行严格同源检查,写请求必须携带与当前 Host 完全匹配的 Origin;接口限制请求体大小且不会回显密钥。
web_fetch/web_source是受限的只读公网抓取能力,不提供内网访问、文件协议或任意命令执行。
开发验证
npm run typecheck
npm test
npm run build
npm run check:package
来源与许可
本项目基于 MIT 许可的 zmh2000829/dsh-web-search-multi 进行独立维护和适配,保留原项目许可声明。当前代码同样使用 MIT License。
链接
同类插件
Tencent/BrowserSkill#dsh-plugin-browserskill★ 8736
BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edge Agent Window,支持可访问性与 VOM 页面观察、截图、隔离的多会话控制和 Web UI 实时观察浮层。
omdsh-dev/dsh-browser#packages/browser/bridge-browser★ 809
Chrome 侧边栏扩展,让 DSH 直接操控你的浏览器,无需视觉能力。
liustack/modsearch★ 659
纯文本 agent 的联网搜索桥:搜索网页与 X,返回结构化 JSON 证据(search/fetch/引用)。
DDDMUC/dsh-free-search★ 378
DSH 免费搜索插件:7 个引擎(DuckDuckGo/Bing/SearXNG 免费 + Exa/Perplexity/DeepSeek 付费)、自动回退、设置页 UI(API key 输入 + 官网链接)、web_fetch、引擎测试工具。
wqty123/dsh-browser★ 109
共享真实浏览器:用户可观看并随时接管的原生 Electron 窗口,agent 通过 CDP 驱动,内置 20 个 browser_* 工具(打开/快照/执行/填表/截图/下载/登录态);任务级会话隔离、登录态持久化、人机验证识别,纯 `dsh web` 无需桌面外壳即可自托管。
Tabbit-Browser/dsh-tabbit★ 107
让 DeepSeek Harness 能够控制 Tabbit 浏览器:安装即自动加载 tabbit-browser skill,检测国际版 Tabbit 与国内版 Tabbit Browser 正式版(>= 1.9.0),检查 tabbit-cli 常驻运行时,按平台诊断调用 CLI 所需的 DSH sandbox 模式,并在没有合格版本时通过后台任务下载与系统地区匹配的正式版安装包。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。