前言¶
在 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 思路的独立实现)。登录一次后通过 authProfiles 与 browserBindings 按域名隔离保存 storageState;站点改版时用 platformRules 或 dsh-browser 的 rulePacks 调整选择器。
Reddit、小红书、Twitter 等 OpenCLI 平台需要 Chrome 扩展在线;B站、YouTube 等需按需安装 bili-cli、yt-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
安装后依次检查:
browser_status:确认 OpenCLI、Playwright/patchright 运行时、automationMode与usagePolicy。web_backend_status:确认搜索、CLI、Agent Reach 与浏览器后端是否 ready。- 打开
设置 → 插件 → 插件配置:确认「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.yaml 的 web-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 许可证,确认 automationMode、usagePolicy 与域名绑定符合你的安全预期。外部 UserScript 在页面主世界运行,并非安全沙箱;生产 profile 建议保留 standard 模式。
生态说明: DSH 的理念是「一切皆插件」。SkillHub(skillhub.cn)是社区插件目录,与 DeepSeek / 幻方无官方从属关系。