DSH Free Web Search Plugin (dsh-freeweb)

Introduction

The core design philosophy of DSH (DeepSeek Harness) is “everything is a plugin.” The default web_search tool calls DeepSeek’s official pay-per-use backend. If you need more searches without paying, or want to run the search logic locally, the dsh-freeweb plugin provides a solution based on the Parallel free search backend.

Features

  • True zero dependencies: pure global fetch + standard JS, with no imports. There is no risk of crashing after installation due to missing dependencies.
  • Full error handling: all exceptions return diagnostic information instead of failing silently.
  • Bundle format: from version 0.2.0+, dsh.bundle is declared, supporting installation, enable/disable, and uninstallation via the Web plugin page.
  • Manual mounting support: from version 0.1.5+, local file mounting is supported with extremely lightweight configuration.
  • MCP protocol: based on JSON-RPC over HTTP, directly calling the Parallel Search free backend.

Installation and Enablement

This plugin is distributed via a GitHub repository and has not yet been published to npm. Before installing, ensure your DSH version is ≥ 0.1.5 (manual mounting) or ≥ 0.2.0 (bundle installation), and that Node.js ≥ 18 is installed.

  1. Open the sidebar Plugins → Add Plugin.
  2. Enter the absolute path to this directory (e.g., D:\plugins\DSH-freeweb).
  3. Host reads the dsh.bundle declaration in package.json, completes the installation, and enables it automatically.
  4. A dsh-freeweb card appears in the Installed group, where you can enable/disable the entire bundle or uninstall it.

Method B: Command-Line Installation

npx @deepseek-ai/dsh plugin --profile web add "<absolute path to this directory>"

This writes the plugin into dsh.profile.bundles in package.json.

Method C: Manual Mounting (Zero Packaging, Lightest)

  1. Place freeweb-search.js in the profile directory:
    ~/.dsh/profiles/web/freeweb-search.js (Windows: C:\Users\<username>\.dsh\profiles\web\)
  2. Append the configuration to the profile’s cordis.patch.yml (note: config is replaced as a whole and must include fetchProvider):
    - id: web
      config:
        searchProvider: freeweb
        fetchProvider: http

    - insert:
        - id: freeweb-search
          name: ./freeweb-search.js
  1. Restart DSH.

Configuration and Verification

Configuration Requirements

The config for the web entry is replaced as a whole; both searchProvider: freeweb and fetchProvider: http must be configured. If fetchProvider is not specified, the default fetch backend from dsh-base will be lost.

Verification Methods

  1. Sidebar Plugins → Installed: confirm that the dsh-freeweb card appears.
  2. In Settings → Built-in Plugins, check the status of include:freeweb-search.
  3. Initiate a search request. The official DeepSeek search provider writes a web/deepseek-search-llm-request event to the log every time; freeweb does not write this event. If this entry is absent from the logs, it indicates that freeweb is being used.

Notes and Limitations

  • Mutual exclusivity: manual mounting and bundle installation are mutually exclusive and will cause a WEB_DUPLICATE_PROVIDER error. Choose one or the other.
  • Free-tier rate limits: Parallel’s anonymous tier has rate limits; if you encounter HTTP 429, retry later.
  • Index preference: the main index is biased toward English; Chinese works, but the quality is not as good as English.
  • Result shape differences: the returned structure is url / title / publish_date / excerpts, not the official cited_text. The original-text snippets available for the model to cite may be fewer than with the official backend.
  • Failure handling: on failure, the plugin returns diagnostic information in the form of “answer text” and does not throw WebError. This is an intentional trade-off, aiming to maintain “never block, transparent failures.”

Fallback and Troubleshooting

Fallback to Official

  • Plugin page/CLI: after uninstalling the bundle, search automatically returns to the official deepseek-official.
  • Manual mounting: delete the configuration block in cordis.patch.yml and restart. Note the order: delete the patch line first, then delete the file, otherwise DSH will fail to start.

Common Errors

  • WEB_DUPLICATE_PROVIDER: check whether both installation methods are being used at the same time.
  • WEB_PROVIDER_AMBIGUOUS: searchProvider is not explicitly specified.
  • not-a-bundle: the directory does not declare dsh.bundle (if copied from an older single-file version, it needs updating).
  • pnpm not found: required for Method A/B; not required for Method C.
羽毛球分组比赛记分
小程序二维码

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

Xiaoye