dsh-web-fetch-exa
Verified@matamt-dbg/dsh-web-fetch-exa Β· v0.1.2 Β· MIT
Exa /contents fetch provider (exa-contents) for the DeepSeek Harness web capability (ctx.web).
Install
dsh plugin add @matamt-dbg/dsh-web-fetch-exa Confirm the layer applied with dsh --profile default --dump-config β see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Readme
dsh-web-fetch-exa
Exa /contents fetch provider for DeepSeek Harness. It adds the fetch provider exa-contents to the shared web service, so web_fetch can read pages through Exa instead of a direct HTTP request.
Requires DSH 0.2.0-rc.2, 0.2.1-alpha.2, 0.2.1-rc.1, 0.2.1-rc.2 or 0.2.1-rc.3.
Install
Do not use
npm i/npm install. The install command npm shows on this page puts the package in the current folder, where DSH never loads it. Install it into a DSH profile with one of the methods below.
DeepSeek Harness app or dsh web: open Plugins β Add plugin, enter @matamt-dbg/dsh-web-fetch-exa, and select Install.
Terminal: install into the profile you use. Quit the desktop app first.
dsh plugin --profile desktop add @matamt-dbg/dsh-web-fetch-exa # desktop app
dsh plugin --profile web add @matamt-dbg/dsh-web-fetch-exa # dsh web
Installing adds the provider but does not switch to it; web_fetch keeps using its current provider until you choose exa-contents.
Use it
- Key: set
EXA_API_KEYin the environment DSH starts with, or put the key in this plugin'sapiKeysetting. A key saved only in the Exa web search plugin's settings is not shared; enter it here too. - Choose the provider: set
fetchProvider: exa-contentson the@deepseek-ai/dsh-webrow.- With DSH Studio 0.6.4 or later: Studio β Plugins β Profile settings β Web search and fetch β Fetch provider β
exa-contents. The same page edits theapiKeyabove (shown masked). - Without Studio: add to the profile's
cordis.patch.yml
or start DSH with- id: web name: '@deepseek-ai/dsh-web' config: searchProvider: deepseek-official fetchProvider: exa-contentsDSH_WEB_FETCH_PROVIDER=exa-contents.
- With DSH Studio 0.6.4 or later: Studio β Plugins β Profile settings β Web search and fetch β Fetch provider β
Without a key, web_fetch through exa-contents fails with configured web provider "exa-contents" is registered but unavailable.
Configuration
| Field | Default | Meaning |
|---|---|---|
apiKey |
$EXA_API_KEY |
Exa API key. Without a key the provider is unavailable. |
baseURL |
https://api.exa.ai |
API base; /contents is appended. |
maxCharacters |
100000 |
Page text limit, enforced on the result (truncated when cut). |
timeoutMs |
30000 |
Whole-request deadline (WEB_FETCH_TIMEOUT). |
maxAgeHours |
Exa default | Cache age in hours: 0 always crawls live, -1 always uses the cache. |
livecrawlTimeoutMs |
Exa default | Live crawl timeout, up to 90000. |
Behavior
- The body is always extracted text (
kind: text). Exa does the crawling, so the page's own redirects and HTML are not visible. - When Exa reports the target page's HTTP status as a crawl error (for example 404), the fetch resolves with that status and an empty body. A crawl error without a status (timeout, unsupported URL) fails with
WEB_PROVIDER_ERROR. - Only
http(s)URLs without embedded credentials are sent (WEB_INVALID_URLotherwise). - Requests to Exa carry the API key and refuse redirects. Error messages never include the key.
- Cost: Exa bills Contents per page (about $1 per 1,000 pages for text at the time of writing; see Exa pricing).
Remove
Choose another fetch provider first (Studio: Use default); otherwise web_fetch reports the configured provider as missing. Then uninstall from the Plugins page, or run dsh plugin --profile <profile> remove @matamt-dbg/dsh-web-fetch-exa.
License
MIT