dsh-web-search-pro

29Star1Fork4Issue0Watching

为 DeepSeek Harness 扩展网页搜索能力,支持多引擎路由与融合、20 平台搜索、SQLite 持久化缓存、脚本猫式按站提取与 Playwright 渲染。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
MIT
分支
master
deepseek-harnessdshdsh-pluginpluginweb-search

安装

$ dsh plugin --profile web add github:anweat/dsh-web-search-pro

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 anweat/dsh-web-search-pro:先查看仓库 https://github.com/anweat/dsh-web-search-pro.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

给 DeepSeek Harness 加一套"网页搜索 + 抓取 + 快照"合一的工具集,把单后端原生搜索换成多引擎路由 + 持久缓存 + 20 平台搜索 + 脚本猫式按站提取 + Playwright 兜底渲染。

核心能力

  • 多引擎路由与融合:DeepSeek 原生、Exa、DuckDuckGo、Bing、Jina 之间按顺序回退,并行时可做 RRF 倒排融合排序
  • 20 平台搜索:GitHub / B站 / YouTube / V2EX / 小红书 / Twitter / Reddit / IG / FB / RSS,加 知乎 / 微博 / 豆瓣 / 贴吧 / 抖音 / 快手 / arXiv / PubMed
  • 持久化缓存:搜索结果、页面快照、按站提取规则全部存入 SQLite,跨重启复用,热数据走进程内 LRU
  • 可读化抓取:Jina Reader → HTTP+规则抽取 → Playwright 兜底三段式,失败自动晋级
  • 持久化页面快照:headless 浏览器截图 + HTML + 文本落盘到本地目录
  • 查询历史与回放:按关键词/引擎/平台过滤历史,按 queryId 回放,支持导出 JSON
  • 自定义平台:settings.yaml 写一份 URL 模板 + 结果选择器即可新增站点,无需改代码

技术实现

  • 语言: TypeScript
  • 关键依赖: @deepseek-ai/cordis(Hook 容器), @deepseek-ai/dsh-tools & dsh-web(工具定义与 ctx.web 抽象), @deepseek-ai/dsh-settings(settings.yaml 热重载段), jsdom(HTML 解析)
  • 架构模式: Cordis bundle 插件,通过 cordis.patch.yml 同时挂载本插件行与 dsh-browser 行;inject 依赖 tools / systemPrompt / browser 三个服务
  • 入口文件: src/index.ts:apply(ctx, config)

适用场景

想让 DSH 真正能"上网做研究"的场景:写代码时查最新 API 文档、查开源项目 issue、追踪学术论文、做选题调研、翻中文社区讨论。普通 DSH 用户遇到"模型回答过时/查不到最新资料"时,这套插件会显著提升信息密度和新鲜度。

前置依赖与兼容性

依赖最低版本说明
DSH Harness0.1.0-rc.6+依赖的 @deepseek-ai/* 系列运行时均为 rc.6
@anweat/dsh-browser^0.1.2同伴插件,提供 browser 服务(本插件的 cordis.patch 会自动挂载)
Node.js>=22.19.0来自 package.json#engines
平台跨平台未声明特定平台限制
原生模块仅使用 Node 内置模块与纯 JS 依赖

安装方式

dsh plugin --profile web add github:anweat/dsh-web-search-pro

配置项

配置类型说明默认值
engines字符串数组多引擎按顺序回退(或并行融合),可用 id:seam, exa, ddg, bing, jina, github, bilibili, v2ex, youtube, arxiv, pubmed["ddg","bing","exa","seam","jina"]
parallelEngines布尔启用后所有引擎并行查询并用 RRF 融合结果false
ttlSeconds数字搜索结果与页面快照的有效期(秒)3600
memoryCacheEntries数字进程内 LRU 缓存条目上限128
searchMaxResults数字单次搜索返回结果数上限8
timeoutMs数字单次调用协同超时(毫秒)30000
rrfConstant数字RRF 融合常数 k60
freshnessBoost / freshnessDays数字对新近内容的额外打分权重(0..1)与衰减天数0.2 / 30
authorityBoost / authorityDomains数字 / 字符串数组对权威域名(.edu/.gov/.org 等)的额外打分0.25 / []
exaApiKey / jinaApiKey字符串启用 Exa / Jina 时填写;也可走环境变量或 .credentials.yaml未设置
exaApiKeyEnv / jinaApiKeyEnv字符串引用环境变量名EXA_API_KEY / JINA_API_KEY
registerProvider / providerId布尔 / 字符串启用后接管 DSH 内置 web_search 工具,路由走本插件false / web-search-pro
enableCliBackends布尔是否允许调用 gh / bili / yt-dlp / opencli / agent-reach 等外部 CLItrue
opencliEnabled / agentReachEnabled布尔单独开关 opencli 与 agent-reach 后端true
platformRules字典按平台 id 覆盖结果选择器(站点改版后无需改代码){}
customPlatforms字典用户自定义站点:URL 模板 + 选择器 + 可选 Cookie{}
playwright.enabled布尔是否启用 Playwright 兜底抓取与快照true
playwright.snapshotDir字符串快照落盘目录<dbDir>/snapshots
dbPath字符串SQLite 数据库路径$DSH_HOME/data/web-search-pro/store.db
verbose布尔启动时把本次加载信息追加到 dbPath 旁的 apply.logfalse

常见问题

Q: 跟 DSH 内置的 web_search 有什么区别?

A: 内置工具只走 ctx.web 一个后端;本插件把它升级为多引擎路由、自动回退、可融合排序,并加 SQLite 持久化缓存、查询历史、20 平台搜索、脚本猫式按站提取、Playwright 兜底抓取与快照。

Q: 一定要用 API Key 吗?

A: 不必须。默认引擎 ddg / bing / seam 都不需要 Key;只有启用 Exa 或 Jina 时才需要,可在 settings.yaml 或环境变量 EXA_API_KEY / JINA_API_KEY 填写。

Q: 知乎、小红书、B 站这些要怎么搜?

A: 通用搜索引擎能搜到结果,但中文社区(知乎/微博/豆瓣/贴吧/抖音/快手/小红书)走 Playwright 驱动的登录态浏览器,需要先用 scripts/save-login.mjs 登录一次保存 cookies,再在 settings.yaml 设 playwright.storageStatePath

Q: 安装后还需要装什么外部工具?

A: 开箱即用即可搜通用网页。若要用 GitHub / B站 / YouTube / agent-reach 等专属后端,先用 web_deps 工具检测,再用检测出的安装命令补齐。

Q: 数据存在哪里?

A: 默认在 $DSH_HOME/data/web-search-pro/ 下:store.db 存历史与缓存、snapshots/ 存网页快照。改 dbPath 或快照目录可在 settings.yaml 的 web-search-pro 段重设。

Q: 怎么卸载?

A: 用 dsh plugin --profile web remove dsh-web-search-pro 即可。SQLite 数据库与快照默认留在仓库目录,按需手动删除。

上手难度

入门 — 开箱即用装好即可搜通用网页;只有启用 Exa/Jina Key、抓取中文社区、想自定义平台时才需要进一步配置。

已知问题与限制

  • 选择器是"尽力而为":中文社区平台的结果选择器写死在代码里,站点改版后可能取不到结果,可通过 settings.yaml 的 platformRules 覆盖,无需改代码。
  • 登录态依赖外部脚本:知乎/微博/豆瓣/贴吧/抖音/快手/小红书需要用户先运行 scripts/save-login.mjs 登录一次保存 cookies,否则返回结果为空。
  • 依赖外部 CLI 的后端需自装:GitHub / B站 / YouTube / agent-reach 后端需系统安装 gh / bili-cli / yt-dlp / agent-reach;opencli 和 playwright 由 dsh-browser 插件捆绑,无需手动装。
  • 默认关闭注销外挂:registerProvider 默认 false,DSH 内置 web_search 不会自动切到本插件;想接管需手动设为 true 或设环境变量 DSH_WEB_SEARCH_PROVIDER=web-search-pro。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/anweat/dsh-web-search-pro)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录
dsh-web-search-pro — DeepSeek Harness 插件 | deepseek-plugin.org