DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Web Search Openrouter — DeepSeek Harness 插件(DSH Plugin)
← Plugins
W

@samebits/dsh-web-search-openrouter

Web Search Openrouter

通过兼容 OpenRouter 的网关为 DeepSeek Harness 提供基于依据的网页搜索:内置的 web_search 工具使用与聊天模型相同的端点和密钥,返回可引用的来源,并可从 Plugins 设置页面进行配置。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:vitas/dsh-web-search-openrouter#a1dbf25da8701652774a5a996bd141888cbe41c7
README兼容性版本
The Web search settings card, with a passing connection test

兼容性与来源证明

Web Search Openrouter 以 @samebits/dsh-web-search-openrouter 发布,当前版本为 1.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/24

版本

1.0.0stable
2026/9/24

相关插件

正在加载相关插件…

最新版
1.0.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
Apache-2.0
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/24
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 search-research 分类下经过校验的插件。

Find Plugindsh-find-plugin在代理中查找 DeepSeek Harness 插件——实时搜索 GitHub 上的 dsh-plugin 主题,并按星标数排序。Builtin Browserdsh-builtin-browserDeepSeek Harness 的共享真实浏览器插件:安装即用——可由人类接管的可见原生浏览器,由代理通过 CDP 驱动。支持 DOM 级交互(React/Vue 安全)、按任务隔离会话、Cookie 持久化(browser_auth)、CAPTCFund Researchdsh-fund-researchDeepSeek Harness 上用于研究中国公募基金的插件:从公开来源(Tiantian Fund / Eastmoney)收集基金数据,计算确定性指标(基金经理画像、持仓渗透率、风格归因、业绩分解),Zoterodsh-zotero让智能体搜索、阅读并引用您的本地 Zotero 文献库:查找论文、浏览笔记和批注、按问题提取证据、打开源文档并生成引文。

README

dsh-web-search-openrouter

Grounded web search for DeepSeek Harness, on the gateway you already pay for.

@samebits/dsh-web-search-openrouter registers a search provider on the harness's web seam (ctx.web). The built-in web_search tool then runs server-side on an OpenRouter-compatible gateway — the same endpoint and the same API key as your chat models. Nothing about the model-facing tool surface changes: same tool, same arguments, same citeable results. Only the engine behind it moves off the harness's bundled DeepSeek search and onto your own gateway budget.

  • Three protocols, one provider. Native OpenAI web_search, OpenRouter's openrouter:web_search server tool, and the deprecated plugins: [{ id: 'web' }] field. Pick the one your gateway accepts.
  • Reads every citation shape. web_search_call.action.sources[], openrouter:web_search.action.sources[], and url_citation annotations — including snippets sliced out of the cited span when the gateway sends no excerpt.
  • Editable at runtime. A card on the Plugins settings tab (English, 中文, Русский) with a Test search button that runs one real query through the saved configuration.
  • No servers, no telemetry. The only outbound request is the search itself, to the endpoint you configured. Nothing is sent anywhere else.
  • Dependency-free host. No @deepseek-ai/* runtime imports, so it works in a linked development checkout as well as from the registry.

The Web search settings card, with a passing connection test


Install

dsh plugin add @samebits/dsh-web-search-openrouter --profile web

The package ships a bundle patch (dsh.bundle.patch), so adding it composes everything: it points the web seam at this provider and inserts the provider row.

Installing from a git checkout instead
git clone https://github.com/vitas/dsh-web-search-openrouter.git
cd dsh-web-search-openrouter && npm install && npm run build
dsh plugin add link:$PWD --profile web

Then store the key and restart once:

dsh credential set OPENROUTER_API_KEY   # or export it before launching dsh

The credential reference is resolved per search, through the DSH credentials service (Settings → Models) and then the process environment — so rotating a key never needs a restart. The bundle patch is applied at boot; a linked checkout's host entry is imported at boot too, so the first run after installing needs one dsh web restart. After that, every settings edit from the card is live.

Quick start

  1. Install the package (above).
  2. Restart dsh web, then open Settings → Plugins → Web search (OpenRouter).
  3. Set Endpoint, Search model, and paste your API key.
  4. Press Test search — you should get a source count and the first hits.
  5. Ask the agent something time-sensitive; it will call web_search as usual.

Verified gateways

Web search is a server tool: the gateway must implement it for the model you name. The plugin reports that honestly — if the gateway answers without searching, the search fails with an explanatory error instead of silently returning the model's memory.

api.b.ai (protocol openai)

Verified working on /v1/responses with tools: [{ type: 'web_search' }], hits returned as url_citation annotations. Cheapest first:

ModelCitationsNotes
gpt-5.4-nano2cheapest verified; ~8.5k input tokens per query
gpt-5.4-mini4
gpt-5.5-instant8
gpt-5-mini4large input token count
gpt-6-astra, gpt-6-sol, gpt-5.6-sol, gpt-5.51–4

Not supported on this gateway: gpt-5-nano, glm-*, deepseek-*, the Anthropic and Gemini routes, :online suffixes, plugins: [{ id: 'web' }], and openrouter:web_search.

openrouter.ai (protocol openrouter)

Use the server tool:

protocol: openrouter
baseURL: https://openrouter.ai/api/v1
model: openai/gpt-5.2   # any model with the web-search badge

engine (auto, native, exa, firecrawl, parallel), searchContextSize (low, medium, high), maxUses, maxTotalResults, and the domain filters are passed through as server-tool parameters. On a non-OpenRouter gateway this protocol is rejected — that is the gateway talking, not the plugin.

OpenAI proper (protocol openai)

https://api.openai.com/v1 + tools: [{ type: 'web_search' }]; sources arrive as web_search_call.action.sources[] and are parsed by the same code path.

Protocols

protocolWire shapeUse for
openai (default)tools: [{ type: 'web_search' }]OpenAI, Azure, and aggregators that proxy the native tool (api.b.ai)
openroutertools: [{ type: 'openrouter:web_search', parameters }]openrouter.ai and gateways that adopted the server tool
plugin (deprecated)plugins: [{ id: 'web', … }]older gateways that never adopted the server tool

Settings reference

Every field is editable from the settings card and can be seeded from the composition entry; a field set in settings.yaml is marked overridden in the card and can be reset there.

FieldDefaultMeaning
protocolopenaiEnablement surface (see above)
baseURLhttps://openrouter.ai/api/v1Gateway base; /responses is appended
modelopenai/gpt-5.2Model that exposes web search on that gateway
apiKeyEnvOPENROUTER_API_KEYCredential reference, resolved per search
apiKey—Literal key; wins over apiKeyEnv (keep it out of shared profiles)
maxResults5Requested results, 1–25; lower is cheaper
maxOutputTokens1024max_output_tokens for one search turn
includeAnswerfalseReturn the search model's prose as content too
engine—openrouter protocol only
searchContextSize—openrouter protocol only: low/medium/high
maxUses—openrouter protocol only: cap server-tool invocations
maxTotalResults—openrouter protocol only
allowedDomains—Restrict results to these hostnames
excludedDomains—Drop results from these hostnames
referer, title—HTTP-Referer / X-Title attribution headers

Cost

web_search is billed as tokens on the search model — not per query. A single tool call can fan out: dsh-tool-web's searchMaxQueries (default 4) turns one web_search into up to four gateway searches, each with its own input context. Keep maxResults low, choose the cheapest model your gateway serves with search, and raise searchMaxQueries only when you actually need breadth. See docs/gateways.md for measured numbers.

Troubleshooting

SymptomCause
WEB_PROVIDER_CREDENTIAL_MISSINGNo key stored under apiKeyEnv; set it in the card or export it before launching dsh.
"the gateway ran no server-side search for model …"The model does not expose web search on that gateway. Pick one from the verified table.
"Invalid value: 'openrouter:web_search'"The gateway does not implement OpenRouter's server tool; switch protocol to openai.
"node only allows access to inference API paths"A gateway-side proxy restriction; check baseURL (a stray trailing slash used to produce //responses).
HTTP 404 on /responsesThe gateway is chat-completions-only; this provider needs a Responses endpoint.

Development

npm install          # installs esbuild + typescript, builds lib/client.js
npm run check        # syntax check the host + typecheck the client
npm test             # 34 offline tests, no network, no credentials
npm run check-locales
npm run build        # rebuild lib/client.js

A live smoke test is opt-in and never runs in CI:

DSH_WEB_SEARCH_LIVE=1 \
OPENROUTER_API_KEY=sk-... \
DSH_WEB_SEARCH_BASE_URL=https://api.b.ai/v1 \
DSH_WEB_SEARCH_MODEL=gpt-5.4-nano \
node --test test/live.test.mjs

Architecture, the seam contracts, and the release process live in docs/.

Privacy

The plugin stores no data and runs no background work. Per search it sends one HTTPS request to baseURL containing your query, the model name, and the configured parameters; the gateway's own terms govern what happens to it. The API key is read from the DSH credential store at call time and is never written to settings, logs, or the browser.

License

Apache-2.0.