Introduction

DeepSeek Harness places web access on provider seams like ctx.web: models continue to use web_search / web_fetch, while the underlying backend can be replaced. dsh-crw connects these two tools to fastCRW, providing search and scraping providers based on fastCRW, and moves address resolution, validation, and rejection of private network segments to the fastCRW server side for scraping target processing. Below is an introduction to its positioning, installation, and configuration methods.

What is this

dsh-crw is a DSH plugin with repository path us/dsh-crw, package.json version 0.1.0, and license MIT. It registers a crw provider in DSH’s ctx.web, providing web_search and web_fetch providers based on fastCRW. fastCRW itself is AGPL-3.0.

Core Features

  • Register crw provider in DSH’s ctx.web
  • Provide web_search provider based on fastCRW
  • Provide web_fetch provider based on fastCRW
  • Scraping targets are resolved, validated, and private network segments are rejected by the fastCRW server side
  • Upgrade from plain HTTP to browser layer as needed by the page
  • Search results are mapped to url, title, snippet; results without url are discarded
  • Scraping returns markdown
  • Optional answer configuration to let fastCRW synthesize answers based on results

Installation and Usage

Using Cloud fastCRW

First set the fastCRW API key, then install dsh-crw, and finally start the default profile.

export CRW_API_KEY=...
dsh plugin --profile default add dsh-crw
dsh --profile default

When using the cloud endpoint, apiKey is required. The fastCRW free tier is 500 credits one-time, consuming 1 credit per page.

Using Self-hosted fastCRW

If fastCRW is running locally, start the service first, then point the plugin’s baseURL to the local address.

crw serve

Configuration example:

baseURL: http://127.0.0.1:3002

When self-hosted, apiKey can be empty.

Installing from Repository

When installing from the repository, you need to pin the commit and allow builds according to environment requirements.

dsh plugin --profile default add github:us/dsh-crw#<sha>

After installation, you can check the configuration of the default profile.

dsh --profile default --dump-config

Configuration and Usage

Search results from web_search are mapped to url, title, and snippet. If a result lacks a url, it will be discarded.

If you want search to continue using deepseek-official while fetching uses crw, you can configure it like this:

searchProvider: deepseek-official
fetchProvider: crw

Fetching

The result of web_fetch returns markdown. The default value of maxBodyChars is 100000.

For 404 targets, fastCRW may report success:false but still return the retrieved content.

Answer

answer allows fastCRW to synthesize an answer based on results. When enabled, it adds one LLM call per search.

Notes

  • The plugin runs with the current dsh process permissions; you should check the source code and license before installing.
  • dsh-crw license is MIT; fastCRW is AGPL-3.0.
  • When using the cloud endpoint, a valid CRW_API_KEY is required; when self-hosted, apiKey can be empty.
  • When answer is enabled, an additional LLM call is added.
  • When installing from the repository, you need to pin the commit and allow builds.

Links

  • Plugin directory: https://www.skillhub.cn/plugins/us/dsh-crw
  • GitHub: https://github.com/us/dsh-crw