Grok-compatible web search with retained source pagination, Context7 and Exa documentation lookup, bounded page extraction, site mapping, offline research planning, and read-only diagnostics.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-search-enhance
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:umineko987/dsh-search-enhance
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
English | 简体中文
dsh-search-enhance is a search extension for DeepSeek Harness. It uses a Grok-compatible Search API for primary web answers and can optionally use Context7, Exa, Tavily, Firecrawl, Parallel, and DeepSeek for documentation lookup, supplementary discovery, page extraction, and site mapping.
The plugin presents search results, sources, and page content separately. Searches return an answer or documentation snippets with source links; you can ask for more sources when needed. To check important details, ask it to read the original page. Search snippets remain distinct from fetched page content.
Bring your own service addresses and keys; none are included. Ordinary web search needs a Grok-compatible service. Other services are optional.
Key characteristics
web_searchuses the Grok-compatible endpoint for the main answer and runs all user-selected supplemental Providers (Exa, Tavily, Firecrawl, Parallel, DeepSeek) in parallel, with an independent per-Provider source limit.- Sources are normalized, de-duplicated, and reordered using source category, requested version, and publication-time signals before they are shown.
web_researchuses a separate research Agent for comparisons and source checks, keeping the current model. It returns conclusions, links, excerpts, and limitations, not the full investigation history.- In DSH Web, open research records from the original conversation's subagent entry. With history saving enabled, completed, cancelled, and failed research remains readable after restart. Records are read-only, without word-by-word updates, a running indicator, or continuation.
source_refstores complete source records separately, allowing pagination beyond the links shown initially.- Documentation search defaults to Context7 for a named software product or documentation library, and Exa otherwise.
web_extractreads through one enabled service: Tavily, Firecrawl, Parallel, DeepSeek Fetch, smart direct reading, or direct reading. It reports the reading route, evidence level, and page details; failure does not switch services.- Source pagination becomes available automatically after a successful search retains readable sources. Website mapping is available to the research Agent, not the main Agent; no manual tool loader is needed.
- Supplemental search defaults to no Providers selected. Unselected Providers are never requested; missing credentials and failures of selected Providers remain visible as warnings.
For implementation details, see Search workflow architecture.
Quick start
1. Install
Supports DSH 0.2.1-rc.2. DSH dependencies are pinned to this exact release; upgrade the DSH CLI first if you are running an older version.
Install the published npm bundle into the DSH web profile:
dsh plugin --profile web add dsh-search-enhance@latest
Research requires a configured, working official DeepSeek service or DeepSeek account. Other connections fail explicitly without switching services. DSH must be runnable locally for research to start.
2. Start DSH Web
dsh web
3. Configure search
Open:
Settings → Plugins → Plugin configuration → dsh-search-enhance
In the settings card:
- Set the xAI endpoint or an explicit Grok-compatible gateway and its key under Credentials → Grok search.
- Choose the matching
completionsorresponsesprotocol and model under Grok search backend. - Use the Supplemental search providers and Available extraction providers dropdowns to select multiple services. Each service's endpoint, timeout, and credential reference are grouped in its credential card.
Save configuration, then restart DSH to apply it. Saving does not restart the running plugin. A successful run shows a Search tool row, an answer, and source links.
Example requests
Use normal language; the plugin gives the Agent routing guidance.
- “Find the most important React 19 user-visible changes. Prefer official release notes and include source links.”
- “Look up the current FastAPI JWT authentication API and show a minimal example from the official documentation.”
- “Read and summarize
https://example.com/article, separating what the page states from your inference.” - “Research these three competing solutions, corroborate the important claims, and return source excerpts and unresolved limitations.”
Ask explicitly when you need more sources or pages from a specific website. Check the plugin settings for service configuration status.
Providers
Configure only the routes you need.
| Provider | Used for | Default credential reference | Required? |
|---|---|---|---|
| Grok-compatible Search API | Main web_search answer and sources |
SEARCH_API_KEY |
For web_search |
| Context7 | Documentation lookup for an explicit library | CONTEXT7_API_KEY |
No |
| Exa | Broad documentation and supplementary discovery | EXA_API_KEY |
No |
| Tavily | Supplementary search, page extraction, and site mapping | TAVILY_API_KEY |
No |
| Firecrawl | Supplementary search and page extraction | FIRECRAWL_API_KEY |
No |
| Parallel | Supplementary search and Markdown page extraction | PARALLEL_API_KEY |
No |
| DeepSeek | Supplementary search and Markdown page extraction; API Key only | DEEPSEEK_API_KEY |
No |
Select any combination of supplemental search services in the plugin settings. Selected services run alongside the main search. Each collects up to 5 sources by default, adjustable to 100; unselected services are not requested.
Select available extraction services to limit which ones the assistant may use. Each page read uses one service. Disabled services, missing keys, unsupported formats, and reading failures are reported without switching services automatically. Parallel and DeepSeek Fetch support Markdown only and start disabled; other reading services start enabled and can be deselected.
DeepSeek Search and Fetch have separate switches, both off by default, and share one API Key in Credentials → DeepSeek. Account login alone does not configure them. These plugin switches are independent of DSH's own Web search settings; Grok remains required for web_search. DeepSeek Search returns at most 50 sources per request.
Changing a shared DEEPSEEK_API_KEY also affects the official model or other services using that reference. Saved keys take precedence over environment variables; deleting a saved key may restore an environment-supplied key.
Context7 needs a software name or documentation-library identifier. Without one, the default is Exa rather than guessing a software name from the whole question.
Update and uninstall
To update, run the installation command above again. To remove the plugin:
dsh plugin --profile web remove dsh-search-enhance
Restart DSH after updating or removing the bundle.
Links
More in this category
Tencent/BrowserSkill#dsh-plugin-browserskill★ 9929
BrowserSkill bridge for controlling visible Chrome and Edge Agent Windows from DeepSeek Harness, with native browser tools, accessibility and VOM observations, screenshots, owned multi-session control, and a live Web UI overlay.
omdsh-dev/dsh-browser#packages/browser/bridge-browser★ 966
Chrome sidebar extension that lets DSH operate your browser directly, no vision capabilities required.
liustack/modsearch★ 911
Web search bridge for text-only agents: ask the web or X, get structured JSON evidence (search, fetch, citations).
DDDMUC/dsh-free-search★ 817
Free, keyless web search for DSH: 7 engines (DuckDuckGo/Bing/SearXNG free + Exa/Perplexity/DeepSeek paid), auto-failover, settings-page UI with API key inputs and official links, web_fetch, and an engine test tool.
Fisfzy/dsh-ego-browser★ 395
Drive a real Chrome/Chromium browser from DeepSeek Harness with 35 structured tools for navigation, snapshots, clicks, forms, JavaScript/CDP, screenshots, downloads and tabs; a live sidebar mirrors the page and accepts mouse and keyboard input. It ships a managed CDP runtime, keeps login state across calls, and can import cookies from your everyday Chrome through a companion extension.
wqty123/dsh-browser★ 162
Shared real browser for DSH: a native Electron window the human can watch and take over, driven by the agent over CDP with 20 browser_* tools (open/snapshot/execute/fill/screenshot/download/auth), per-task session isolation, cookie persistence, CAPTCHA detection; self-hosts on plain dsh web without a desktop shell.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.