dsh-web-search-pro:DSH 多引擎网页搜索与持久化缓存

前言

在 DeepSeek Harness(DSH)里做联网检索,常见做法是临时接一个搜索 API,或让模型直接 fetch 页面。前者往往只覆盖单一引擎、缺少回退;后者对动态页面和登录态站点不稳定,重复查询也缺少缓存。若你希望把「多引擎搜索、平台检索、正文抓取、按站规则、Playwright 渲染」收成模型可直接调用的工具集,并带 SQLite 持久化与历史回放,可以看一下社区插件 dsh-web-search-pro(维护者 anweat,GitHub 约 41 stars,分类:联网工具)。

这是什么

dsh-web-search-pro 是一个 DSH bundle 插件:把多引擎网页搜索、20 个平台搜索、可读化抓取、持久化缓存、按站提取规则,以及 Playwright 渲染打包成 11 个工具。路由控制面借鉴 Agent-Reach 的后端探测、顺序选择与失败冷却思路,核心逻辑为本项目原生 TypeScript 实现。许可证为 MIT。

它与 @anweat/dsh-browser 成对使用:浏览器自动化、OpenCLI、审批策略与爬取预算由 dsh-browser 管辖;Web Search Pro 负责搜索后端与缓存层。两个插件都必须是 profile 的直接依赖——DSH 只激活直接依赖的 bundle layer,且标准 profile 可能设置 autoInstallPeers: false,不要只装搜索插件后指望 peer 自动补齐。

核心功能

搜索与抓取

工具 作用
web_search_pro 多引擎搜索 + RRF 融合 + 内存/SQLite 双层缓存 + 历史
web_exa_contents 原生 Exa /contents 批量正文抓取(1–100 URL)
web_fetch_pro 可读化抓取(Jina → HTTP+规则抽取 → Playwright 兜底)+ 快照缓存
web_platform_search 20 平台:GitHub/B站/YouTube/V2EX/小红书/Twitter/Reddit/IG/FB/RSS,以及知乎/微博/豆瓣/贴吧/抖音/快手等

默认引擎顺序为 ddg, bing, exa, seam, jina(免费优先),失败自动回退并短时冷却;也可指定单一引擎或 multi 并行融合。Exa 有 API Key 时走原生客户端;仅有 Exa MCP 连接时会经 mcporter 回退(高级筛选与 web_exa_contents 仍要求 EXA_API_KEY)。

缓存、历史与规则

工具 作用
web_history / web_cache_clear / web_search_stats 持久历史、清缓存、存储统计
web_rule 持久化按站提取规则(list/upsert/remove/import/export)
web_backend_status 后端探测、失败/冷却诊断与 CLI 状态
web_deps 检测/安装搜索后端外部依赖
web_snapshot Playwright HTML + 文本落盘;screenshot=false 时不生成 PNG

缓存使用 SQLite + LRU;不同查询、引擎顺序和单/多引擎模式使用不同缓存指纹。web_history 支持按 kind/query/engine/platform 过滤、replay 和 JSON export。

平台与中文社区登录态

知乎、微博、豆瓣、贴吧、抖音、快手等站点的免登录公开接口常被风控,插件对这类平台走 Playwright 驱动登录态浏览器(借鉴 MediaCrawler 思路的独立实现)。登录一次后通过 authProfilesbrowserBindings 按域名隔离保存 storageState;站点改版时用 platformRules 或 dsh-browser 的 rulePacks 调整选择器。

Reddit、小红书、Twitter 等 OpenCLI 平台需要 Chrome 扩展在线;B站、YouTube 等需按需安装 bili-cliyt-dlp 等 CLI,可用 web_deps 检测与安装。

安装与启用

下面介绍官方 README 中的安装方式。dsh-web-search-pro >= 0.1.8 要求 @anweat/dsh-browser >= 0.1.8;升级时应两个包一起升,完成后完整停止并重新启动 Web profile(仅刷新网页不会重新扫描插件的 client.js)。

dsh plugin --profile web add @anweat/dsh-browser@^0.1.8 dsh-web-search-pro@^0.1.8
# 或本地目录 / tarball:
dsh plugin --profile web add ../dsh-browser ./dsh-web-search-pro
# 重启(web profile 关闭了 HMR):
dsh --profile web

安装后依次检查:

  1. browser_status:确认 OpenCLI、Playwright/patchright 运行时、automationModeusagePolicy
  2. web_backend_status:确认搜索、CLI、Agent Reach 与浏览器后端是否 ready。
  3. 打开 设置 → 插件 → 插件配置:确认「Web Search Pro」和「浏览器自动化」两张卡片都已加载。

依赖 @deepseek-ai/* 已发布到 npm(^0.1.0-rc.6)。若 harness 是本地源码 checkout,版本号可能有出入,可用 dsh plugin --profile web add ./<path> 并在 profile 的 pnpm-workspace.yaml 里对齐版本后重装。

典型用法

安装并重启后,在 DSH 会话里直接要求模型调用工具即可。下面是一个可复现的示例:

请调用 web_backend_status 检查后端,然后用 web_search_pro 搜索
"DeepSeek Harness community feedback",指定 exa、fresh=true、返回 8 条来源。

按场景选择入口:

情形 推荐入口 说明
日常网页搜索 web_search_pro 默认按配置顺序回退;需要强制刷新时传 fresh=true
语义研究、社区观点 web_search_pro + exa 有 API Key 时走原生 Exa API
已知 URL 的批量正文 web_exa_contents 必须配置 EXA_API_KEY
GitHub/B站/Reddit 等平台 web_platform_search Reddit 等需 Chrome 扩展在线
登录后页面或私有论坛 browserBindings + AuthProfile Cookie 保存在本地 storageState,默认只读
页面改版、懒加载 platformRules 或 RulePack 优先改选择器;需要等待/点击/滚动时用有界 RulePack

先运行 web_backend_status 判断后端是否 ready。指定单一引擎时失败会原样返回;不指定时才会按 engines 顺序自动回退。

配置要点

日常配置优先用 DSH 可视化面板:设置 → 插件 → 插件配置 → Web Search Pro。Exa、Jina、GitHub 密钥通过 DSH Credentials 写入,面板只显示「已配置/未配置」,不会把明文密钥读回浏览器。

也可在 $DSH_HOME/settings.yamlweb-search-pro: 段热重载:

web-search-pro:
  exaApiKeyEnv: EXA_API_KEY
  jinaApiKeyEnv: JINA_API_KEY
  engines: [ddg, bing, exa, seam, jina]
  parallelEngines: false
  ttlSeconds: 3600
  searchMaxResults: 8
  browserBindings:
    zhihu:
      authProfile: china-community
      rulePack: zhihu-enhanced

浏览器工具的审批自由度由 dsh-browser.automationMode 管辖:read-only 拒绝写操作;standard(默认)对交互、写 Recipe、外部脚本等审批;unrestricted 仅建议用于隔离测试 profile。所有模式仍保留域名、参数、大小和步骤上限校验。

适用场景与注意

适合谁: 在 DSH Web profile 里做日常联网检索、语义搜索、平台内容抓取,或需要持久化缓存与搜索历史的智能体开发者。

权限与安全: 插件以当前 dsh 进程权限运行,可访问本机网络、凭据与浏览器登录态。安装前应阅读源码与 MIT 许可证,确认 automationModeusagePolicy 与域名绑定符合你的安全预期。外部 UserScript 在页面主世界运行,并非安全沙箱;生产 profile 建议保留 standard 模式。

生态说明: DSH 的理念是「一切皆插件」。SkillHub(skillhub.cn)是社区插件目录,与 DeepSeek / 幻方无官方从属关系。

链接

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜