DeepSeek Harness plugin

dsh-free-search-zhouzhen

Free multi-source web search provider for DeepSeek Harness (dsh): Tavily keyless + keyless fallbacks, wired into the native web seam

Jump to install

Source facts

Repository
zhouzhencheng07/dsh-free-search
Latest update
Aug 15, 2026
Category
Tools & Capabilities
GitHub stars
4
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/zhouzhencheng07/dsh-free-search
Plugin: dsh-free-search-zhouzhen
Author: zhouzhencheng07

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer4 files
README.en.mdSource · read only
README language

English | 中文

dsh-free-search

A free, multi-source web search plugin for DeepSeek Harness (dsh).

Registers as a search provider on dsh's native web seam, so the built-in web_search tool runs on a free engine chain with native citation cards — and stops burning DeepSeek API credits (the base layer's default deepseek-official route costs one model call per search).

Engine chain (all free, automatic failover)

EngineAuthTriggerNotes
GitHub Search APIkeylessquery mentions repo/仓库/owner/repo or a github.com linkcode/repo search
arXiv APIkeylessquery mentions arxiv/preprint or an arXiv ID (e.g. arxiv 1706.03762)direct paper lookup / search
StackExchange APIkeylessquery mentions stackoverflow etc.programming Q&A
Hacker News (Algolia)keylessquery mentions hacker news etc.tech news
Tavilykeyless by default; keyed when TAVILY_API_KEY is setalways (primary)keyed mode adds answer summaries
Sogou web searchkeyless (HTML)always (fallback)Chinese-language fallback; redirect links auto-resolved

Priority: a matched specialized engine runs first, then Tavily keyless → Sogou; a failing engine is skipped automatically, and when all fail the error lists every attempt. Optional env: TAVILY_API_KEY.

> Note: Baidu's current SERP is JS-rendered (no results in static HTML) so it > cannot be scraped; Exa/Brave/Google free APIs are unreachable from the > network this plugin targets, so they are not included.

Install

dsh plugin --profile web add "github:zhouzhencheng07/dsh-free-search"

The package declares dsh.bundle.patch, so it is activated as a profile bundle layer (not just an inert dependency). Restart dsh web after installing; the built-in web_search then runs on the free engine chain.

Local development

# local development: replace the path with your local checkout directory
dsh plugin --profile web add "file:/path/to/dsh-free-search"

> If you previously loaded this plugin via a --patch ./scratch-plugin/... > flag, remove that flag from the launch command — the bundle now owns the > free-search row, and a duplicate insert would fail to boot.

How it works

  • src/web-search.js: ctx.web.registerSearchProvider({ id: 'free-search', ... }).
  • src/engine-chain.js: engine priority, query routing (specialized engines

join on query signals), failover, timeout and cancellation (AbortSignal forwarding).

  • src/engines/*.js: per-engine requests and normalization into a uniform

{ url, title?, snippet?, publishedAt? } item list.

  • cordis.patch.yml: repoints the web row's searchProvider from

deepseek-official to free-search (that row's config has only this one base key, so a wholesale replacement is safe; a later profile patch can pin any provider back).

Requirements

  • Node.js ≥ 22 (dsh requirement)
  • No API key required; plain ESM, zero dependencies, zero build step

License

MIT