DSH 插件导航

dsh-web-search-diy

作者 aaronlei · community

DSH web search provider selected by vendor x protocol: Chat Completions, Responses, and Anthropic Messages with built-in search tools, plus the standalone search APIs of DeepSeek, Kimi, and Zhipu; four custom targets cover gateways; UI copy follows the app language (zh, en, ja, es, fr, de, ru, pt). (原文)

DeepSeek Harness 插件,分类: 其他

dshplugin

安装

运行这条 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

同类插件

社区

dsh-theme-cyberpunk2077

Cyberpunk 2077 / Night City theme for the DeepSeek Harness Web UI — NC yellow × neon cyan identity, CRT scanlines, Kiroshi hover lock-on, combat-state HUD, synthesized typewriter & message SFX, boot glitch, Relic interference, slang chips, and hidden easter eggs (try sending: relic / johnny).

社区

@anionex/dsh-vision-toolkit

DeepSeek Harness-native integration for agent-vision-toolkit: image Q&A, OCR, grounding, UI restoration, pixel diff, Artifacts, and Web UI.

社区

local-shell-mcp-dsh

DeepSeek Harness bridge for the full local-shell-mcp tool surface and per-session Live Workspace.

社区

@nanmicoder/dsh-agent-teams

AgentTeams for DeepSeek Harness: multi-agent team collaboration (captain, members, tasks with dependencies, messaging) driven by natural language, with a tree monitor in the web GUI

社区

@mars-sea/dsh-commandcode-provider

Unofficial DeepSeek Harness LLM provider plugin for Command Code, ported from pi-commandcode-provider (MIT). Registers the 'commandcode' provider route with a Models-page card and live model catalog.