Introduction¶
DeepSeek Harness (DSH)’s web capabilities are exposed to plugins via the ctx.web seam. If you want DSH’s built-in web_search to bypass the original DeepSeek route and call Firecrawl’s search API, you can use @elves-ai/dsh-web-search-firecrawl.
Below, we introduce its positioning, core capabilities, installation commands, configuration methods, and prerequisites before installation.
What is this¶
@elves-ai/dsh-web-search-firecrawl is a Firecrawl-backed search provider targeting DeepSeek Harness’s web capability seam (ctx.web).
It connects DSH’s built-in web_search tool to Firecrawl’s search API instead of the shipped DeepSeek route. It registers a WebSearchProvider with the seam, with id set to firecrawl, but does not register a model-facing tool.
The repository owner is elves-ai, and the license is MIT. The GitHub repository is:
https://github.com/elves-ai/dsh-web-search-firecrawl
Core Capabilities¶
This plugin primarily does the following things:
- Registers a
WebSearchProviderfor DSH’sctx.webseam withidfirecrawl. - Calls Firecrawl’s
POST /v1/search. - Maps the
data[]returned by Firecrawl into the normalizedWebSearchResultused by the seam. - Supports configuring the API key from the Firecrawl page in DSH Settings.
- Falls back to the environment variable
$FIRECRAWL_API_KEYwhen the key in the settings page is empty. - Supports switching providers via
useFirecrawlwithout restarting.
Configurable fields include:
useFirecrawl
apiKey
baseURL
limit
maxSnippetChars
Here, apiKey is written as a secret, and the settings page will not echo back the saved key.
Prerequisites¶
The documentation requires the following two items:
- A DeepSeek Harness installation on the official package line
0.1.0-rc.6. - A Firecrawl API key.
If there is no API key, the search will fail with an error identified as:
WEB_PROVIDER_CONFIGURED_UNAVAILABLE
Additionally, the plugin will run with the permissions of the current dsh process. Before installation, it is recommended to check the source code and license to confirm that you trust the behavior it is about to execute.
Installation¶
The documentation provides two installation entry points. Please choose one based on your current environment.
If you use the global dsh CLI:
dsh plugin --profile web add @elves-ai/dsh-web-search-firecrawl@latest
If you are in a deepseek-harness source checkout and dsh is a pnpm workspace script, execute from the workspace root:
pnpm dsh plugin --profile web add @elves-ai/dsh-web-search-firecrawl@latest
After installation, you need to restart dsh web and then force refresh the page to allow the browser and settings page to reload:
dsh web
The shortcut for force refresh is Cmd/Ctrl+Shift+R.
Enabling Firecrawl¶
After installing the plugin, the searchProvider of the web seam defaults to firecrawl.
Next, open DSH Settings → Firecrawl:
- Paste a key in the form of
fc-...into the API Key field. - Save.
After saving, the API key is handled as a secret. The page only indicates whether the key has been configured and will not echo back the saved plaintext.
If the key in the settings page is left empty, the provider will attempt to fall back to the environment variable:
export FIRECRAWL_API_KEY=fc-...
dsh --profile web
If neither the settings key nor the environment variable exists, the provider is unavailable.
Switching Provider¶
useFirecrawl is used to switch between Firecrawl and the original DeepSeek web search.
- When
useFirecrawlistrue, use Firecrawl. - When
useFirecrawlisfalse, switch back to the original DeepSeek web search.
This switch does not require restarting the DSH process.
Updating¶
Update using the global dsh CLI:
dsh plugin --profile web update --latest @elves-ai/dsh-web-search-firecrawl
If the plugin is installed in the profile of a deepseek-harness source checkout, you can use the pnpm entry from the workspace root:
pnpm dsh plugin --profile web update --latest @elves-ai/dsh-web-search-firecrawl
After updating, you also need to restart dsh web and force refresh the page.
Uninstalling¶
Uninstall using the global dsh CLI:
dsh plugin --profile web remove @elves-ai/dsh-web-search-firecrawl
In a deepseek-harness source checkout:
pnpm dsh plugin --profile web remove @elves-ai/dsh-web-search-firecrawl
Uninstalling will remove the plugin package and the corresponding mount, but will not delete values saved in the settings page. If you wish to delete the saved API key, you need to clear the key in the DSH Settings → Firecrawl page first.
Configuration Field Descriptions¶
Below are the fields and constraints listed in the documentation.
useFirecrawl¶
Used to select whether to use Firecrawl.
true: Use Firecrawl.false: Switch back to the original DeepSeek web search.
apiKey¶
Firecrawl API key.
- Can be saved from the DSH Settings → Firecrawl page.
- Treated as a secret after saving and will not be echoed.
- Falls back to
$FIRECRAWL_API_KEYif the key in the settings page is empty. - If neither exists, the provider is unavailable.
baseURL¶
Base URL of the Firecrawl endpoint.
POST /v1/searchwill be appended to this base URL.- If
baseURLcannot be parsed, the provider is unavailable.
limit¶
Default number of results.
- This default value can be used when the request does not carry
maxResults. - If set, it must be a positive integer.
maxSnippetChars¶
Used to limit the maximum number of characters for a single snippet.
- If set, it must be a positive integer.
Errors and Edge Cases¶
The documentation lists the following behaviors:
- When no available API key exists, the search fails with an error identified as
WEB_PROVIDER_CONFIGURED_UNAVAILABLE. - Provider failures are manifested as
WebError, with an error identified asWEB_PROVIDER_ERROR. - When the request is aborted, the error is identified as
WEB_ABORTED. - HTTP redirects are rejected before accessing the
Locationtarget.
Use Cases¶
This plugin is suitable for the following situations:
- You already have DSH’s web capability seam.
- You want
web_searchto use Firecrawl’s search API. - You need to quickly switch between Firecrawl and the original DeepSeek route via the settings page.
- You accept the DSH plugin running method and will check the plugin source code and license first.
It is not a new model tool, but rather switches the backend search source of DSH’s existing web_search to Firecrawl.
Conclusion¶
The value of dsh-web-search-firecrawl lies in the fact that it does not change the web_search interface experience of DSH, but instead switches the underlying search provider to Firecrawl and allows online switching via the settings page.
The link to the index page has not been confirmed in the current documentation. You can view the GitHub repository directly:
https://github.com/elves-ai/dsh-web-search-firecrawl