dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
Adaptive model routing plugin for DeepSeek Harness. Adds an adaptive provider to the model picker: every LLM request is classified by a flash classifier (low / medium / high / critical) and routed to the matching backend provider through config-driven chains.
deepseek-v4-flash called directly (never through a proxy, no recursion).pool.json → routing.levels ($active expands to the active provider, missing entries fall back to defaults); transport failures walk down the chain.classifier section of pool.json (no hardcoded credentials).medium; never blocks a request.~/.dsh/tools/cc-switch-sync/pool.json with:classifier section: url, model, key_ref (resolved against ~/.dsh/.credentials.yaml, pool api_key as fallback)routing.levels: low / medium / high / critical chainsThe pool file is produced by the cc-switch-sync import tool (or can be authored by hand). The plugin reads it on every request, so pool edits take effect immediately.
dsh plugin add llm-adaptive
or, from a local checkout:
cd ~/.dsh/profiles/web && npx pnpm@10 install # with "llm-adaptive": "file:plugins/llm-adaptive"
Restart the dsh web service, then select adaptive(自动路由) in the /model picker.
/model and choose adaptive(自动路由).level=… cause=… chain=… to ~/.dsh/hooks/plugin.log.The explicit level models (low, medium, high, critical) are also listed in the picker for direct selection.
A custom LlmAdapter for the adaptive provider: stream() awaits classification (async generator), then forwards to the target backend via ctx.llm.prepareCall + stream (unified chunk protocol, passthrough). Request-level interception was chosen over proxy or request-layer hooks because dsh hot-swaps configuration and the prepared-call contract requires matching provider/model options.
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。