Plugin directory / UI & Skins / dsh-tool-ddgs
dsh-tool-ddgs
Verified · install-tested on dsh BharathBillawa
What it does
DuckDuckGo web search and URL fetch tools for DeepSeek Harness, no API key required. Provides web_search (via ddgs) and web_fetch (via trafilatura) as a drop-in bundle
Works — verified, early-stage project
DuckDuckGo web search and URL fetch tools for DeepSeek Harness, no API key required. Provides web_search (via ddgs) and web_fetch (via trafilatura) as a drop-in bundle It installs cleanly and boots without issues in our testing. It's early-stage but functional.
“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.
README
dsh-tool-ddgs
DuckDuckGo web search and URL fetch tools for DeepSeek Harness.
Zero required system dependencies — search is pure Node.js, fetch uses @mozilla/readability with optional trafilatura fallback for higher quality extraction.
Install
dsh plugin --profile web add github:BharathBillawa/dsh-tool-ddgs
Then restart dsh. The bundle patch automatically:
- Registers
web_search(DuckDuckGo Lite, pure Node) - Registers
web_fetch(content extraction, saves to file) - Wires the native Search action to use ddgs
- Disables the built-in DeepSeek web search provider
- Enables the file read tool for accessing full fetched content
Requirements
- Node.js >= 24 (required by DeepSeek Harness)
- Optional: Python 3.9+ with
pip install trafilaturafor better content extraction
Tools
web_search
Search the web using DuckDuckGo Lite. Pure Node.js — no Python, no subprocess, no API key.
- Accepts 1-4 queries
- Returns deduplicated sources with titles, URLs, and snippets
- Wired to the native Search action via
ctx.webprovider
web_fetch
Fetch a URL and extract readable text content:
- Downloads the page with browser-like headers
- Extracts clean text using
trafilatura(if available) or@mozilla/readability - Saves the full content to
/tmp/dsh-web-fetch/<url-slug>.md - Returns a 5000-char preview + the file path + total line count
If the preview answers the question, the model responds immediately. If more detail is needed, the model uses dsh's built-in read tool with offset/limit to read specific sections from the saved file — just like reading any local file.
This avoids dumping 100K+ chars into context for a simple question about one section of a long article.
How it works
- Search: Direct POST to DuckDuckGo Lite + HTML regex parsing. No headless browser, no API key, no subprocess.
- Fetch: Node native
fetch()→@mozilla/readability(DOM extraction vialinkedom). Falls back totrafilaturavia Python subprocess when available (better quality on complex pages). - File storage: Full fetched content is saved to
/tmp/dsh-web-fetch/<url-slug>.md
Architecture
The plugin registers both:
- A
ctx.websearch provider (id: "ddgs") — powers the native Search action in the agent loop web_searchandweb_fetchtools — directly callable by the model
Configuration
The bundle patch configures itself. No manual cordis.patch.yml editing needed.
License
MIT
Install
Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:
dsh plugin add dshbase-catalog Then say "install dsh-tool-ddgs for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.
This plugin is GitHub source (not published to npm) — install it straight from the repo:
Web profile:
dsh plugin --profile web add github:BharathBillawa/dsh-tool-ddgs Headless (CLI) profile:
dsh plugin --profile headless add github:BharathBillawa/dsh-tool-ddgs Test report
Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.