DSH 插件导航

工具与 MCP

dsh-web-search-diy

作者 aaronlei · community

为 DSH 提供可按厂商与协议配置的 Web 搜索工具,支持 Chat Completions、Responses、Anthropic Messages 和独立搜索 API,并将结果整理为引用来源;厂商支持程度不同,部分组合明确受限或未验证。

DeepSeek Harness 插件,分类: 工具与 MCP

web-searchsearch-providercitationsapi-protocols

安装

运行这条 DSH 插件命令前,请先审阅来源及信任等级。

dsh plugin --profile web add dsh-web-search-diy

其他安装方式

来源

README

dsh-web-search-diy

English · 简体中文

<p align="center"> <a href="https://www.npmjs.com/package/dsh-web-search-diy"><img alt="npm version" src="https://img.shields.io/npm/v/dsh-web-search-diy?style=flat-square&amp;label=npm&amp;color=cb3837"></a> <a href="LICENSE"><img alt="license: MIT" src="https://img.shields.io/npm/l/dsh-web-search-diy?style=flat-square&amp;color=blue"></a> <a href="package.json"><img alt="node &gt;= 18" src="https://img.shields.io/badge/node-%3E%3D18-339933?style=flat-square&amp;logo=nodedotjs&amp;logoColor=white"></a> <a href="#capability-matrix"><img alt="vendors: 7" src="https://img.shields.io/badge/vendors-7-8A2BE2?style=flat-square"></a> <a href="#capability-matrix"><img alt="protocols: 4" src="https://img.shields.io/badge/protocols-4-8A2BE2?style=flat-square"></a> <a href="https://github.com/deepseek-ai/deepseek-harness"><img alt="dsh plugin" src="https://img.shields.io/badge/dsh-plugin-4D6BFE?style=flat-square"></a> </p>

A web search provider plugin for the DeepSeek Harness (DSH). It supplies the built-in web_search tool per vendor × protocol: three in-protocol shapes (Chat Completions / Responses / Anthropic Messages) plus standalone search, covering DeepSeek, Kimi, Zhipu, Qwen, OpenAI, Anthropic, OpenRouter, and four custom targets. Results are normalized into structured citation sources for the calling model to ground its answer on. The plugin also ships an observability page that records every search and can backfill history from older session logs.

Capabilities

Capability matrix

Legend: ✅ full (in-protocol search + citable sources); ◐ degraded (searches, but sources or model are limited); ✗ unsupported; ⚙ custom.

Vendor Chat Completions Responses Anthropic Messages Standalone search
DeepSeek ✗ ◐ deepseek-v4-pro only; sources from open_page ✅ ✅ /v1/tools/search
Kimi ✗ built-in $web_search retired ✅ web_search + include ✗ no server tool in the schema ✅ /v1/tools/search
Zhipu ✅ web_search tool ✅ web_search + results[] ✗ accepts but does not run it ✅ /paas/v4/web_search
Qwen ◐ enable_search, no sources ✅ action.sources (url only) ✅ needs the billing header ✗ no standalone REST
OpenAI ◐ gpt-5-search-api only ✅ full filters / include ✗ no such endpoint ✗
Anthropic ✗ ✗ ✅ native web_search ✗
OpenRouter ✅ openrouter:web_search ✅ same server tool ◐ alias, untested ✗
Custom ⚙ template + 4 variants ⚙ template + toolType ⚙ template + toolType ⚙ template + 8 mapping fields

13 full, 4 degraded (OpenRouter Anthropic is pending), 4 custom. Eight unsupported entries exist only for the collapsed section and never create a configuration bucket.

Install

Published on npm:

dsh plugin --profile web add dsh-web-search-diy

The bundle patch performs the wiring, so no manual cordis.patch.yml edits are required:

For local development, install the checkout as a link:

dsh plugin --profile web add link:./dsh-web-search-diy

The plugin declares the @deepseek-ai/* hooks as peerDependencies. Run pnpm install once in the plugin directory before linking; the harness provides the peers at runtime.

Configuration

Configuration page

Location: Plugins → Installed plugins → the dsh-web-search-diy card (clicking the card opens this plugin's configuration page). Copy follows Settings → Language (zh, en, ja, es, fr, de, ru, pt).

Configuration file (v3)

$DSH_HOME/dsh-web-search-diy.json, written by the configuration page:

{
  "version": 3,
  "vendor": "qwen",
  "protocol": "responses",
  "targets": {
    "qwen/responses": {
      "baseURL": "https://maas.qianwenaiapi.com/compatible-mode/v1",
      "apiKeyEnv": "QWEN_TOKEN_PLAN_API_KEY",
      "model": "qwen3.8-flash",
      "maxOutputTokens": 4096,
      "toolType": "web_search",
      "includeSources": true
    },
    "custom/search": {
      "baseURL": "https://search-gateway.example.com",
      "path": "/v1/tools/search",
      "apiKeyEnv": "SEARCH_GATEWAY_API_KEY",
      "queryField": "q",
      "countField": "size",
      "resultsPath": "data.items",
      "urlField": "link",
      "titleField": "name",
      "snippetField": "desc",
      "count": 10
    }
  }
}

Migrating from 1.x

v2 mode v3 target
responses qwen/responses
anthropic-messages deepseek/anthropic-messages
zhipu-web-search zhipu/search
zhipu-chat-search zhipu/chat-completions

Field reference

Protocol / vendor Fields
Common baseURL, apiKeyEnv, model, maxOutputTokens (the last two are hidden for standalone)
Responses · OpenAI toolType, includeSources, reasoningEffort, searchContextSize, allowedDomains, blockedDomains, userLocation, externalWebAccess, returnTokenBudget, searchContentTypes, imageMaxResults, imageCaption
Responses · Kimi toolType, includeSources, allowedDomains (blockedDomains / search_context_size return 400)
Responses · Zhipu / Qwen toolType, includeSources, reasoningEffort
Responses · DeepSeek toolType; the model is locked to deepseek-v4-pro and include is not sent
Responses · OpenRouter toolType, includeSources, engine, mode, maxResults, maxUses, maxTotalResults, searchContextSize, maxCharacters, userLocation, allowedDomains, excludedDomains, xSearch
Anthropic Messages toolType, maxUses, thinking, effort, allowedDomains, blockedDomains, userLocation, responseInclusion
Chat · Zhipu searchEngine, count, searchRecencyFilter, contentSize, searchDomainFilter, requireSearch, searchPrompt, reasoningEffort
Chat · Qwen searchStrategy, forcedSearch, freshness, assignedSiteList, searchExtension, promptIntervene
Chat · OpenRouter engine, mode, maxResults, maxUses, maxTotalResults, searchContextSize, maxCharacters, userLocation, allowedDomains, excludedDomains, xSearch
Chat · OpenAI no search parameters; the model is locked to gpt-5-search-api
Standalone count, includeContent, searchEngine / contentSize / searchRecencyFilter / searchDomainFilter (Zhipu), oriQuestion / localization (DeepSeek), timeoutSeconds (Kimi), digestEntries, digestSnippetChars; custom adds path and the 8 mapping fields

oriQuestion sends the human prompt that triggered the search as DeepSeek's ori_question: whitespace collapsed, cut to 128 characters, read from the initiating Session and omitted out

README 摘录,请查看原文。

查看 README 原文

数据截至 2026-11-05

同类插件

作者 Anionex

将图像问答、OCR、目标定位、裁剪、矢量描摹、像素差异和 HTML 截图等视觉工具及 Skill 集成到 DSH Web 与 Headless;需配置视觉模型提供方,首次运行可能准备 Python 运行时。

工具与 MCP

local-shell-mcp-dsh

作者 fwerkor

把 local-shell-mcp 的 shell、文件、浏览器自动化和远程工作器能力接入 DSH,提供 MCP 工具及每会话 Live Workspace;涉及本机与远程资源操作,具体边界依上游配置。

工具与 MCP

dsh-openbiliclaw

作者 whiteguo233

在 DSH Web GUI 中展示 OpenBiliClaw 推荐、收藏、画像与对话,并注册 Agent 工具;需要运行中的 OpenBiliClaw 后端及 Agent Bridge v2,爬取仍由主项目负责。

工具与 MCP

dsh-recommend

作者 zp-home

在 DSH 中查询、搜索并推荐插件,展示透明评分、趋势和分类;排行数据由 GitHub 话题仓库定时同步,覆盖受公开查询范围限制。

工具与 MCP

dsh-docs

作者 Sqhao-O

在本机解析 PDF、Office、Markdown、HTML、CSV 与文本文件,并提供离线 OCR;仅读取会话工作区或显式授权目录,Windows x64 可使用随附 OCR 运行时。

工具与 MCP

dsh-vision-router

作者 ysr666

为 DSH 文本模型提供视觉路由及图像问答、OCR、定位、裁剪和像素差异工具;默认云端视觉链会发送图像,需本地处理时显式启用 Local-only vision。