Mr-remon219 / dsh-search-boost

Listed

The plunge for dsh to boost model's search ability.

mainModelTool View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Mr-remon219/dsh-search-boost

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit be1c151Synced Aug 18, 2026

dsh-search-boost

Search boost for DeepSeek Harness (DSH): multi-engine fused search, focused page fetching, X (Twitter) search, step-mode deep research, parallel multi-agent research, and an injected proactive-search policy.

A bundle plugin for DSH that upgrades the built-in web_search / web_fetch and registers a family of search tools.

search-boost family

ProjectForLink
search-boostCursor · Codex · Claude · Grok · Antigravity via MCPGitHub · npm
dsh-search-boost (this repo)DeepSeek Harness bundle pluginyou are here
pi-search-boostpi extensionGitHub · npm

Search engines live in lib/: on the free layer, Bing, DuckDuckGo, Yahoo, and Exa-free run in parallel; the api layer adds Antigravity CLI (when available) and keyed Tavily / Brave / Exa when keys are present (one key is enough; all three recommended for best fusion).

中文文档 → README_zh.md


Search layers

Two layers, switched at runtime with /web_change (persisted to ~/.dsh-search-boost-layer.json):

LayerEngines dialedWhen to use
free (keyless only)Bing + DuckDuckGo + Yahoo + Exa MCP (exa-free) — all live-probed, no API keysResearch loops, zero-cost runs, privacy-conscious use
api (default)Same keyless legs plus Antigravity CLI (when agy is on PATH) and keyed Tavily / Brave / Exa (when keys are present)Maximum recall; cross-engine corroboration with paid APIs

Keyless engines run in parallel so one failure never leaves you empty-handed. Fused ranking adds cross-engine co-occurrence scoring and half-life time-decay freshness.

Features

CapabilityDescription
Built-in web_search + web_fetch upgradeRegisters WebSearchProvider + WebFetchProvider and patches both seam configs, so built-in search/fetch keep native citation cards while the backend runs on this plugin's engine chain and Jina-first page reader
fused_searchMulti-engine fused retrieval with complexity routing, Grok-style query preprocessing (site: / OR / quotes), domain filters, cross-engine scoring, and 6h TTL cache. Active layer via /web_change; per-call layer override supported
/web_change/web_change free → keyless pool only; /web_change api → full pool; /web_change show → current layer + engine availability
x_searchReal-time X/Twitter: posts, users, threads. With credentials: hosted xAI tool ∥ multi-engine (site:x.com), merged and deduped. Without credentials: multi-engine + oEmbed full text (~2s), guest GraphQL user profiles, oEmbed threads. /x-login / /x-logout toggle the official path
/x-loginImport xAI credentials into ~/.dsh-search-boost-xauth.json (from ~/.grok/auth.json or -k <XAI_API_KEY>). OIDC auto-refresh; grok CLI login untouched
/x-logoutRemove /x-login credentials; x_search falls back to the credential-free chain
fetch_pageJina Reader + local HTML fallback + focus topic extraction + 24h cache
deep_researchStep-mode deep research: complex fused search + coverage analysis + gaps + suggested queries, driven by the main agent in rounds
research_parallelSub-query decomposition → native DSH subagents in parallel → merged sources
search_statsCache / tier / engine availability / x_search credential audit
Search policyInjected via systemPrompt.section: verify time-sensitive facts, route X content to x_search, prefer free engines

From npm (recommended):

dsh plugin --profile web add dsh-search-boost          # latest
dsh plugin --profile web add dsh-search-boost@0.1.3    # pin a version
dsh plugin --profile web update dsh-search-boost       # update to a newer release

--profile <name> is required (web is the standard web-UI profile). DSH uses pnpm to resolve the package, auto-wires the dsh.bundle.patch layer, and adds it to the profile's bundle list — no manual config editing. Restart dsh --profile web.

From source (development):

dsh plugin --profile web add github:Mr-remon219/dsh-search-boost
dsh plugin --profile web add git+file:///path/to/repo

Or use the install script (syntax check → key setup → install → verification):

.\install.ps1          # Windows
./install.sh           # Linux / macOS

Verify:

dsh --profile web --dump-config   # web.searchProvider → dsh-search-boost
dsh --profile web

Troubleshooting: missing dsh or pnpm

If you run DSH via npx @deepseek-ai/dsh web, there is no global dsh binary — install globally or use npx directly:

npm install -g @deepseek-ai/dsh
# or:
npx --yes @deepseek-ai/dsh plugin --profile web add dsh-search-boost

dsh plugin needs pnpm (npm install -g pnpm or corepack).

Alternative: session-level dynamic plugin (plugin-host.js)

plugin-host.js is a single-file dynamic plugin for per-session boosts. It does not replace built-in web_search. The bundle form (above) is recommended for deployment-level integration.

Configuration (API keys)

The published bundle contains no secrets. Keys load from:

  1. ~/.dsh-search-boost-keys.json or ./.search-boost-keys.json:
{ "tavily": "tvly-...", "exa": "...", "brave": "..." }
  1. Environment: TAVILY_API_KEY / EXA_API_KEY / BRAVE_API_KEY

Engines without a key are dropped from the fan-out automatically.

Free layer needs zero configuration. Bing, DuckDuckGo, Yahoo, and Exa MCP (exa-free) are keyless and run in parallel. Antigravity CLI (agy) is optional and only joins in the api layer (medium/complex tiers) when installed and signed in.

x_search credentials (optional)

CommandEffect
/x-loginImport grok login → official hosted x_search path (SuperGrok / X Premium+ tier)
/x-login -k <XAI_API_KEY>Same via console.x.ai API key
/x-login statusShow credential chain
/x-logoutDisable official path; fallback chain still works

~/.grok/auth.json is never auto-consumed. Without /x-login or XAI_API_KEY, x_search uses only the credential-free chain.

Verified benchmarks (2026-08, Windows)

Free-layer engine probe (12 queries × 9 candidates)

Live benchmark (node scripts/engine-benchmark.mjs); full report in scripts/engine-benchmark-report.json.

EngineSuccessAvg latencyVerdict
bing100%~2.0s✅ free layer
ddg100%~2.2s✅ free layer
yahoo100%~2.3s✅ free layer (new in v0.1.2)
exa-free100%~4.2s✅ free layer
antigravity92%~27sapi layer only (slow, needs agy CLI)
brave-html / mojeek / searx0%rejected (429, blocked, or unreachable)

Integration scenarios

ScenarioResult
free layer fused_search5 hits in ~1.3–3.0s; cross-engine corroboration (e.g. yahoo+exa-free → score 3.29 on rust release notes)
x_search (no credentials)keyword via multi-engine + oEmbed; user via guest GraphQL (@NASA ~2s); thread via oEmbed
SSRF vs Clash TUN fake-ipLiteral 198.18/15 blocked; TUN-routed hostnames allowed (DSH_SEARCH_ALLOW_TUN_FAKEIP=0 to disable)
Headless web_search✓ free Bing/DDG/Yahoo/Exa chain
Unit + E2E tests57/57 unit tests; 14/14 black-box E2E

Architecture notes

  • Runs in the host process (Node fetch / child_process directly).
  • HTML scrapers (Bing / DDG / Yahoo) use IPv4-forced fetch — undici on Windows defaults to IPv6-first DNS, which intermittently times out against search hosts.
  • X search: official path (lib/xsearch.js) → credential-free chain (lib/xfallback.js: multi-engine + oEmbed + guest GraphQL) with sync preflight when no credentials.

Files

index.js                    — bundle entry (providers + tools + commands + policy)
lib/engines.js              — engine registry (bing / ddg / yahoo / exa-free / …)
lib/exa-free.js             — Exa MCP keyless engine
lib/layer.js                — free/api layer state (/web_change)
lib/fusion.js               — fusion scoring, tier tables, cache
lib/fetch.js                — Jina Reader + focus extraction
lib/xauth.js / xsearch.js / xfallback.js — x_search credential + official + fallback paths
lib/research.js             — deep_research + research_parallel
lib/policy.js               — proactive-search policy
cordis.patch.yml            — DSH patch layer manifest
scripts/engine-benchmark.mjs — maintainer: live free-engine probe

Publishing (maintainers)

npm test
npm publish   # prepublishOnly: syntax + tests + clean git tree

License

MIT


Links: Issues · search-boost · pi-search-boost

Friendly link: LINUX DO 社区

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
MIT
Latest release
v0.1.3
Last updated
Aug 18, 2026, 4:23 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.