Skip to content

cyijun/dsh-surfing-plugin

110Last commit Aug 14, 2026

dsh-surfing-plugin DSH plugin

dsh-surfing-plugin integrates SearXNG and Crawl4AI into DeepSeek Harness via the ctx.web service. It provides web_search and web_fetch capabilities that respect native DSH tool semantics (timeouts, cancellation, result limits). The plugin requires reachable SearXNG and Crawl4AI services and supports extensive configuration via environment variables or YAML.

How to install the dsh-surfing-plugin DSH plugin

dsh plugin --profile web add dsh-surfing-plugin

Copying does not run this command. Review the repository and version before installing the dsh-surfing-plugin DSH plugin.

dsh-surfing-plugin DSH plugin data source

dsh-surfing-plugin DSH plugin snapshot date: Aug 16, 2026

discovered

What the dsh-surfing-plugin DSH plugin can do

  • Web search via SearXNG with configurable language, categories, safe search, and time range
  • Web fetch via Crawl4AI with markdown mode selection (raw, fit, citations) and content size limit
  • Supports authentication headers and API keys for both services (env or literal)
  • Deduplicates search results by URL and maps fields to DSH source format
  • Handles Crawl4AI API failures as structured WebError values

Where the dsh-surfing-plugin DSH plugin fits

  • Enable web search in DSH agents without relying on external search APIs
  • Fetch and extract content from web pages for knowledge augmentation
  • Self-host a complete web access pipeline using SearXNG and Crawl4AI
  • Integrate with DSH Web UI to provide per-agent search capabilities
  • Use in headless DSH assemblies alongside host-level web_search

Who the dsh-surfing-plugin DSH plugin is for

  • DSH users who want self-hosted web search and fetch capabilities
  • Developers running SearXNG and Crawl4AI services and needing a DSH provider

dsh-surfing-plugin DSH plugin limitations

  • Requires external SearXNG and Crawl4AI services to be reachable
  • Crawl4AI must have JSON enabled in its search formats
  • Node.js version must be ^22.19.0 or >=24.0.0
  • Only supports HTTP(S) targets for web fetch; crawler configuration cannot be passed from DSH model input
  • Backend redirects are rejected to prevent credential leakage

dsh-surfing-plugin DSH plugin: from the repository README

Quoted from the cyijun/dsh-surfing-plugin README, the upstream source of the dsh-surfing-plugin DSH plugin. Copyright remains with the original authors.

English | [中文](README.zh.md) `dsh-surfing-plugin` adds self-hosted web access to [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): `web_search` uses SearXNG and `web_fetch` uses Crawl4AI. It registers providers with DSH's `ctx.web` service, so the native tool names, arguments, rendering, timeouts, cancellation, and result limits remain unchanged. ## Architecture ```mermaid flowchart LR A[Native DSH web_search] --> B[surfing-searxng provider] B --> C[SearXNG /search] D[Native DSH web_fetch] --> E[surfing-crawl4ai provider] E --> F[Crawl4AI /crawl] ``` The bundled `cordis.patch.yml` mounts this plugin, selects `surfing-searxng` and `surfing-crawl4ai`, and adds a fetch-only native tool consumer. The separate consumer works in both DSH assemblies: headless keeps its host-level `web_search`, while the Web UI keeps the `web_search` mounted by each Agent Preset. The built-in DeepSeek search provider may remain mounted but is not selected. ## Requirements - Node.js `^22.19.0` or `>=24.0.0` - DeepSeek Harness `>=0.1.0-rc.6 <0.2.0` - Reachable SearXNG and Crawl4AI services - JSON enabled in SearXNG's `search.formats` ## Quick start The endpoint values may b

Read the full READMERepository license: MIT

dsh-surfing-plugin DSH plugin questions

Do I need to run SearXNG and Crawl4AI separately?

Yes, dsh-surfing-plugin is a provider plugin that connects to existing SearXNG and Crawl4AI services. You must have both services reachable and configured before installing the plugin. The plugin does not bundle or start these services.

How do I configure authentication for SearXNG or Crawl4AI?

You can set authentication via environment variables (e.g., SEARXNG_API_KEY, CRAWL4AI_API_TOKEN) or directly in the `cordis.patch.yml` config under `apiKey` or `apiKeyEnv`. The plugin also supports custom header names and schemes. Prefer using environment variables to avoid committing credentials.

Can I use this plugin with DSH Web UI?

Yes, the plugin works in both headless and Web UI assemblies. In the Web UI, the `web_search` is mounted by each Agent Preset. The plugin registers providers that can be selected per agent. The bundled `cordis.patch.yml` includes a separate consumer for fetch-only usage.

What happens when the Crawl4AI API returns an error?

Crawl4AI API failures (e.g., network issues, invalid URL) are converted into structured `WebError` values by the plugin. Non-2xx HTTP status codes from the target page are still returned as successful fetch results, only the Crawl4AI service itself returning an error triggers a WebError.

How do I remove the plugin?

Run `dsh plugin --profile web remove dsh-surfing-plugin` to remove the plugin from your DSH profile. This will unregister the providers and restore the default search behavior.