Mola-maker/dsh-kit--packages-deep-search ↗★ 1

@molamaker/dsh-deep-search

Multi-channel deep search for DeepSeek Harness: one deep_search tool fanning queries out to web/Exa/Tavily/GitHub, merged by reciprocal-rank fusion with cross-channel agreement

套件
@molamaker/dsh-deep-search
相容性
待驗證
Harness 依賴範圍
^0.2.1-rc.5
Cordis 依賴範圍
>=4.0.5
版本
0.2.0
授權
MIT
最近更新
2026年11月5日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add 'github:Mola-maker/dsh-kit#c80bb306cfc26fd256f73866d7b9f182346ef066&path:packages/deep-search'

Configuration

Config goes in the deep-search row of your profile (or a --patch overlay):

- id: deep-search
  config:
    channels: [web, exa, github]      # default channels when a call names none
    cacheTtlMs: 300000                # 0 disables the result cache
    rateLimits:
      github: { perMinute: 10, burst: 5 }
    registerProvider: false
keydefaultmeaning
channelsweb, exa, tavily, github, molasearch, plus every configured mcp:Channels used when a call names none.
maxQueries8Most queries in one call.
maxResultsPerChannel8Hits asked of each channel for each query.
maxSources20Sources returned after merging.
channelTimeoutMs30000One channel call, including pacing and retry waits.
timeoutMs120000The whole tool call.
excerptChars3000Characters kept from each fetched page.
cacheTtlMs / cacheMaxEntries300000 / 200Per-channel answer cache. Identical concurrent requests share one fetch. fresh: true on a call bypasses it.
retries1Extra attempts after a throttling answer (429, 502–504, or a 403 that says the rate limit is used up). The server's Retry-After / X-RateLimit-Reset is honoured.
maxWaitMs10000Longest wait for a pacing slot or a server hint. Longer fails at once and says how long the server asked for.
rateLimits.{exa,tavily,github}GitHub: 10/min anonymous, 30/min with a tokenToken bucket: perMinute sustained, burst at once. Exa and Tavily are unpaced unless you set it.
registerProviderfalseSee below.
molasearch–Path to the MolaSearch executable.
mcpChannels–[{name, command, args?, env?, tool, queryArg?, limitArg?}] → channel mcp:.
maxClaims10Most claims in one deep_verify call.

Using it as the harness search provider

Set registerProvider: true to register deep-search as a ctx.web search provider. This does not take over by itself: when another provider is available (for example web-search-deepseek), selection is up to the harness and that one may keep answering, or web_search may report the choice as ambiguous. Pin it explicitly:

- id: deep-search
  config:
    registerProvider: true
- id: web
  config:
    searchProvider: deep-search     # or: export DSH_WEB_SEARCH_PROVIDER=deep-search

Tested in a real DSH 0.2.1-rc.5 profile: pinned, web_search returns merged sources from the channels; unpinned, the existing default keeps answering. The plugin logs a warning at start-up when it registers without a pin. When it is the provider, the web channel is left out to avoid asking itself.

deep_verify is lexical

supported means the page contains the claim's numbers and terms together, nothing more. It does not understand negation or context and is not a fact-check. It is meant to catch the common failure of an agent citing a page that does not say what it claims: read the returned passage before relying on a supported. Statuses: supported, partial, not_found, unreachable.