Wiselfx/dsh-freeweb
项目介绍Project Overview
dsh-freeweb 是 DeepSeek Harness 的 WebSearchProvider 插件,替换 dsh 内置 web_search 的后端引擎,保留引用卡片与 UI。它并发查询 DuckDuckGo、Startpage、Perplexity 三个免密钥引擎,可选 Firecrawl,按跨引擎共识去重排序;单引擎失败不影响搜索。适合不想申请 API 密钥即可联网检索的场景。注意:项目为 AI 编写的个人概念验证,按现状提供,依赖抓取的引擎可能变动或被封。
dsh-freeweb is a WebSearchProvider plugin for DeepSeek Harness that swaps the engine behind dsh's built-in web_search while keeping its citation cards and UI. It fans queries out concurrently to three keyless engines—DuckDuckGo, Startpage, and Perplexity—plus optional Firecrawl, then deduplicates and consensus-ranks results; one blocked engine never fails a search. Use it when you want web search without API keys or signup. Caveat: it is an AI-authored personal proof of concept, provided as-is, and scraping-based engines may change or block access.
请帮我了解并安装插件:【dsh-freeweb】【https://github.com/Wiselfx/dsh-freeweb】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
npx -y @deepseek-ai/dsh plugin --profile web add dsh-freeweb
把 Wiselfx/dsh-freeweb 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-freeweb
Keyless web search for DeepSeek Harness. No API keys. No signup. No quota owner.
What it is
A WebSearchProvider plugin for dsh's web capability seam
(ctx.web). It keeps dsh's built-in web_search tool, citation cards, and UI
exactly as they are, and swaps only the engine behind them. Queries fan out to
three independent keyless engines — plus an optional fourth — and come back as
one consensus-ranked answer.
| Engine | Kind | Needs |
|---|---|---|
DuckDuckGo (html.duckduckgo.com) |
HTML scraper; POST with automatic GET fallback | nothing |
Startpage (startpage.com/sp/search) |
Google's index behind a privacy proxy; solves its Anubis SHA-256 proof-of-work in pure Node | nothing |
Perplexity (perplexity.ai/rest/sse/perplexity_ask, anonymous) |
synthesized answer + cited sources over SSE | nothing |
Firecrawl (api.firecrawl.dev/v2/search, optional) |
SERP-backed results, native Google operators | API key (env FIRECRAWL_API_KEY) or self-hosted endpoint; auto-skipped without one |
Install
Requires Node.js ≥ 20.3 and dsh. Nothing else.
Straight from GitHub — no npm account needed:
npx -y @deepseek-ai/dsh plugin --profile web add wiselfx/dsh-freeweb
dsh plugin forwards install specs to pnpm verbatim, so owner/repo, full
https://github.com/….git URLs, and pinned refs (owner/repo#v0.1.0) all
work — the package is fetched from GitHub and activated because it declares a
dsh bundle.
Local checkout:
npx -y @deepseek-ai/dsh plugin --profile web add /path/to/dsh-freeweb
npm (if ever published):
npx -y @deepseek-ai/dsh plugin --profile web add dsh-freeweb
Restart dsh, then verify composition without spending anything:
npx -y @deepseek-ai/dsh --profile web --dump-config # expect searchProvider: freeweb
See docs/install.md for all three paths in detail, uninstall steps, and troubleshooting.
Configuration
Defaults live on the plugin entry; every value is optional:
- id: freeweb
name: 'dsh-freeweb'
config:
engines:
duckduckgo: true
startpage: true
perplexity: true
firecrawl: auto # auto = only when a key/endpoint exists; true|false also accepted
firecrawlApiKey: '' # or env FIRECRAWL_API_KEY; free tier at firecrawl.dev, no card
softDeadlineMs: 6000 # early-return once ≥1 engine answered
hardDeadlineMs: 27000 # absolute cap; stragglers aborted
engineTimeoutMs: 25000 # per-engine transport timeout
The deadlines bound each call: engines get 25 s individually, the whole fan-out returns early at 6 s once something has answered, and nothing outlives 27 s. Config changes take effect after a dsh restart.
How it works
The provider fires every enabled engine concurrently and merges whatever comes back by cross-engine agreement: URLs are deduplicated on a canonical key, then ranked by how many engines returned them, then by best per-engine position. One blocked or slow engine never fails a search — single-engine walls are absorbed silently — and only every engine failing at once is an error. The full design, including failure semantics and how to add an engine, is in docs/architecture.md.
Testing
node test/integration.mjs
Live end-to-end suite: exercises the real engines over the network and checks the plugin wiring with a mock harness context. It passes. An optional argument runs your own query:
node test/integration.mjs "your query here"
⚠️ This plugin was made by an AI
This plugin was designed, ported, and tested end-to-end by an artificial intelligence — Lantern (
ox-alpha), an AI coding agent — with light human supervision. No human wrote the search logic.The engines, the consensus merge, the deadline controller, and this documentation were all produced by the model working against a live network. Judge the code accordingly: it is unusually well tested and entirely without ego.
Status: personal artifact / proof of concept. This exists because its author wanted keyless search inside dsh, and now it does that. It may or may not receive updates. It is provided as-is. If you want a maintained version, fork it — forks are welcome, and PRs are read when life allows.
Credits & thank-yous
- oh-my-pi (MIT) — substantial portions of this package are ported from its web-search subsystem, file mapping in NOTICE. It helped a LOT.
- DeepSeek Harness — an excellent, plugin-friendly harness; genuinely pleasant to extend. One polite nudge while we're here: built-in keyless web search would make it even better.
- Lantern (
ox-alpha), the AI that wrote this — a trace of its author lives in every regex. - Cinder (
hy3), another AI — independent QA in a fresh container. Caught the one manifest line this package shipped without, proved the GitHub install path end-to-end, and took the first three cities (NYC · Boise · Seattle) through the fan-out. The lantern builds; the ember verifies. - wiselfx — flipped every switch, pushed every fix, kept the vibe intact. This artifact exists because they wanted it to.
License
MIT. Substantial portions are ported from oh-my-pi's MIT-licensed web-search subsystem; see NOTICE for the copyright lines and the file-by-file mapping.
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS