DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
W

@djdowbnac/dsh-web-search-local

Web Search Local

DeepSeek Harness(ctx.web)的网页搜索提供程序:通过内置的进程内元搜索或仅使用 DuckDuckGo 实现真实的互联网搜索,无需外部 API 密钥或外部实例,不依赖任何运行时依赖,此外还可选用完全本地的语料库全文索引。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:ddowbnac/dsh-web-search-local#2898c92c047c5b2b72f70af3d7857258c4667977
README兼容性版本

兼容性与来源证明

Web Search Local 以 @djdowbnac/dsh-web-search-local 发布,当前版本为 1.1.4。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/29

版本

1.1.4stable
2026/9/29
1.1.3stable
2026/9/12

相关插件

正在加载相关插件…

最新版
1.1.4
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/29
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 search-research 分类下经过校验的插件。

MarketdshmarketDeepSeek Harness 内的可视化插件市场——浏览、搜索并一键安装社区插件。· DSH 可视化插件市场:浏览、搜索并一键安装社区插件。Free Searchdsh-free-searchDeepSeek Harness 的免费网页搜索:27 个引擎(Bing/DuckDuckGo/AnySearch/SearXNG/Exa/Tavily/Keenable/Firecrawl/Parallel/You.com 无需密钥;通过 MCP 支持 Zhihu 全局/站内搜索,以及 Perplexity/SerpBase/DeepSeek(官方 + 原生工具/搜索)/Baidu/Kimi/Aliyun/Douba)Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Ab Market Researchdsh-ab-market-research一个树外 DeepSeek Harness 插件:将 trade_search 工具(多轮扩展方面的查询规划、出版商级别排序、来源多样性、JSON 快照)及其浏览器卡片集成在一个包中。

README

@djdowbnac/dsh-web-search-local

A web-search provider for the DeepSeek Harness without an account or API key, plus an optional fully local full-text index over your own files.

The plugin registers two search providers and one fetch provider on the ctx.web seam:

ProviderWhat it doesNetwork
webInternet search via the built-in metasearch (auto, searxng) or DuckDuckGo only (duckduckgo).outbound HTTPS to the upstreams
localFull-text search over a local corpus (BM25, snippets, incremental re-index, bun:sqlite FTS5 on Bun, pure-JS JSON on Node).none
local (fetch)Reads file:// URLs from disk and retrieves the http(s):// URLs web_search returns.on fetch only

Pin web when you want internet search without a keyed external API. The stock web-search-deepseek plugin requires a DeepSeek account and API key.

Internet search (web)

The engine field selects the backend (UI or YAML):

  • auto (default): the built-in metasearch. Fans out to DuckDuckGo, Bing, and Wikipedia in parallel, then merges, dedups, and ranks the hits. No instance, no URL, no setup.
  • duckduckgo: DuckDuckGo only, the keyless public endpoint html.duckduckgo.com/html/. Filters out the ad rows (duckduckgo.com/y.js).
  • searxng: the same built-in metasearch. The value name is kept for compatibility with the 0.1.x instance model.

Install and mount

The package is published on npm, so a normal install pulls the registry version:

dsh plugin --profile web add @djdowbnac/dsh-web-search-local

That is the whole install. dsh plugin initializes the profile on first use and forwards to pnpm add inside the profile directory (pnpm must be on PATH). To pin an exact version, add the full specifier (dsh plugin --profile web add @djdowbnac/dsh-web-search-local@1.1.2).

Remove it with:

dsh plugin --profile web remove @djdowbnac/dsh-web-search-local

From a checkout (development)

To work on the plugin itself, point the same command at the checkout instead of the package name:

# from the plugin's checkout directory
dsh plugin --profile web add .

The directory becomes a pnpm local dependency, so the profile resolves the package name to this checkout, and the bundle registration works the same way. The dependency is a local link, so the profile always loads the current checkout. After editing sources, re-run bun run build for the change to take effect.

Zero-install (advanced)

To skip the pnpm dependency entirely, point the row's name at a built entry point. From a checkout, that is bun run build first, then:

name: 'file:///<path>/dhs-web-search-local/lib/index.js'

Mounting the integration

The dependency installs (npm or checkout) need no manual mount. The layer order is: the stock base/surface bundle layers, the package bundle layers in dsh.profile.bundles order (this plugin's is last among them), the profile's cordis.patch.yml (user layer), $DSH_HOME/cordis.patch.yml, and any --patch overlays: the later layer wins. So the shipped patch is a stock base the user layer overrides freely: set corpusDirs, switch engine, pin a different provider. Inspect the composed tree any time:

dsh --profile web --dump-config

For the zero-install path (manual mount), apply ./cordis.patch.yml as a --patch overlay, or merge its rows into the profile's cordis.patch.yml at $DSH_HOME/profiles/web/cordis.patch.yml (default home ~/.dsh), adapting name to the file:// entry. A patch replaces the target row's whole config, so the snippet restates searchProvider and fetchProvider:

- insert:
    - id: web-search-local
      name: 'file:///<path>/dhs-web-search-local/lib/index.js'   # zero-install entry
      config:
        corpusDirs: [!!js process.cwd()]   # optional. Only used by the `local` provider
        # engine: auto                     # auto | duckduckgo | searxng
- id: web
  config:
    searchProvider: web      # <- internet. Use `local` for on-disk corpus search.
    fetchProvider: local

Pinning is mandatory. The stock deepseek-official provider is always "available", so without pinning searchProvider the seam reports WEB_PROVIDER_AMBIGUOUS. The stock web-search-deepseek / web-fetch-http rows may stay (registered but unselected). The shipped bundle patch does the pinning and deliberately sets no corpusDirs: an auto-applied layer must not index the boot directory. Set it in the user layer or via the settings section.

Configuration

The provider exposes the web-search-local settings section, persisted to $DSH_HOME/settings.yaml (hot-reloaded, so a change reaches the next search with no restart):

FieldDefaultMeaning
engineautoWeb backend: auto (metasearch: DuckDuckGo + Bing + Wikipedia), duckduckgo, or searxng (= metasearch, kept for 0.1.x compatibility).
corpusDirs[]Directories to index (absolute or ~). Only used by the local search provider. Empty returns an informed empty result.
includebuilt-in text/code setExtra extensions to index (with or without a leading dot).
excludebuilt-in (node_modules, .git, *.min.js, lockfiles, more)Extra dir names, file names, or dot-suffixes to skip.
indexDir<DSH home>/web-search-localWhere index.db or index.fallback.json and manifest.json live.
maxResults20Per-query source cap (the seam re-enforces the tool's bound).
snippetLength160Approximate snippet length.
autoReindextrueRe-scan the corpus on each search (bounded by an internal interval). false = build on change only.
maxFileSizeBytes5000000Skip files larger than this.

Two ways to configure:

  1. YAML (primary): edit the web-search-local section in $DSH_HOME/settings.yaml (the same file the Settings UI writes). Example:
    web-search-local:
      engine: auto
      corpusDirs:
        - D:\docs
        - ~/notes
    
  2. UI card: when the deployment renders third-party plugin cards, a card appears under Settings -> Plugins for web-search-local (engine, corpus dirs, max results, snippet length, index dir, auto-reindex, then Save). It is optional: when the deployment does not render cards, the YAML path remains fully functional.

Known limitations

  • Web coverage: DuckDuckGo, Bing, and Wikipedia, all keyless. Google is not scraped directly because its CAPTCHAs are fragile. Rate limits and anti-bot walls depend on IP reputation (datacenter vs. residential). A walled upstream just drops out, and the healthy upstreams' merged results are still served. The search throws WEB_PROVIDER_ERROR (with per-upstream detail) only when every non-optional upstream fails.
  • DDG anomaly pages: under heavy abuse, DuckDuckGo can serve a challenge or anomaly page instead of results. The adapter records it as a typed challenge failure, the same as any other upstream failure.
  • publishedAt: Wikipedia hits carry it (the API timestamp). DuckDuckGo and Bing hits do not, because those upstreams expose no reliable date. Local corpus results use the file mtime.