Introduction

DeepSeek Harness (DSH) adopts a plugin-based architecture. When using the ctx.web binding for Web search, developers often encounter protocol incompatibility or API key misconfiguration issues. The dsh-web-search-litellm plugin provides a standard Web search solution through a LiteLLM proxy and the OpenAI Responses protocol.

Plugin Overview

This is the Web search provider for DeepSeek Harness ctx.web. It invokes the web_search capability of DeepSeek’s native server through a LiteLLM proxy and returns answers with real source URLs.

Installation

Install the plugin using the official DSH command:

dsh plugin --profile <name> add dsh-web-search-litellm

Configuration and Enablement

After installation, enable this provider in the profile configuration file cordis.patch.yml.

  1. Configure the searchProvider for the web binding in cordis.patch.yml:
   - id: web
     config:
       searchProvider: litellm-responses
  1. Optional: disable the default Anthropic protocol provider:
   - id: web-search-deepseek
     disabled: true
  1. Restart the profile after installation to make the configuration take effect.

Core Features

  • Protocol support: Uses the OpenAI Responses protocol (POST {baseURL}/responses); the Anthropic protocol is not supported.
  • Credential reuse: Reuses the existing LITELLM_API_KEY credential; no new API key configuration is required.
  • Server-side search: Search tasks are executed on DeepSeek’s official server and do not depend on any third-party search service.
  • Visual configuration: All settings can be fully configured in the Harness settings UI.

Configuration Options

This provider supports the following configuration options. Unset options are automatically derived from the currently active model configuration.

Option Default/Source Description
baseURL Derived ($LITELLM_SEARCH_BASE_URL) LiteLLM proxy root address; the request path appends /responses
apiKeyEnv Derived (LITELLM_API_KEY) Environment variable name for the API key, resolved on each search
model Derived (current active model ID) Preferred search model ID
candidateModels Derived (model list of active provider) Candidate model pool used for racing search
maxTokens 4096 Maximum output tokens for a single search request
timeoutMs 60000 Connection and idle timeout for the response stream

How It Works

  1. The model invokes the web_search tool.
  2. The plugin sends a POST request to {baseURL}/responses with tools: [{"type": "web_search"}] and stream: true.
  3. The LiteLLM proxy forwards the request to DeepSeek; the server executes the search and streams back the results.
  4. The plugin parses the SSE stream, extracts output_text as content, and aggregates URLs with action: open_page in web_search_call into sources.

Notes

  • Billing: Each search consumes one DeepSeek model call.
  • Session compatibility: The plugin does not append custom session events, ensuring compatibility with older Harness versions.
  • Result format: DeepSeek documentation does not explicitly support a structured include field; therefore, results contain only URLs, not titles or summaries.
  • Permissions: The plugin runs as the current DSH process; it is recommended to review the source code and license before installation.

Ecosystem Information

  • Maintainer: yunxiyang
  • License: MIT
  • Repository: https://github.com/yunxiyang/dsh-web-search-litellm
  • Directory: https://www.skillhub.cn/plugins/yunxiyang/dsh-web-search-litellm