DeepSeek Harness plugin

dsh-tool-web-search

Persistent DSH model tools for Bing and SearXNG web search plus bounded webpage fetching.

Jump to install

Source facts

Repository
gao-gao-zai/dsh-tool-web-search
Latest update
Aug 19, 2026
Category
Tools & Capabilities
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/gao-gao-zai/dsh-tool-web-search
Plugin: dsh-tool-web-search
Author: gao-gao-zai

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

DSH Web Search

Persistent Host-side DSH tools that search Bing or SearXNG and fetch specific HTTP(S) pages with bounded output.

Scope

This package exposes web_search and web_fetch. It fetches specific HTTP(S) result pages and converts HTML to bounded Markdown with turndown; it does not download or interpret images.

Install

Prerequisites

  • DSH with the web profile
  • Node.js 22 or newer
  • A writable DSH profile directory

Install from GitHub

Install the public repository into the web profile:

dsh plugin --profile web add github:gao-gao-zai/dsh-tool-web-search

The equivalent Git URL form is:

dsh plugin --profile web add https://github.com/gao-gao-zai/dsh-tool-web-search.git

Install a local checkout

Use a link: dependency while developing or testing local changes:

dsh plugin --profile web add link:E:\DeepSeekHarness\WebSearch

Use an absolute path on other machines. The package includes the prebuilt lib/ bundle, so a link installation does not require a separate TypeScript build step.

Disable the official web tools

This package intentionally uses the same model-facing names as the official DSH web tools: web_search and web_fetch. DSH does not automatically override a same-name tool. If the official tool-web remains enabled, it can shadow the replacement in the Agent scope or cause a duplicate-registration error during startup.

The official row must be disabled at both composition layers:

1. Host profile layer: the user's C:\Users\<user>\.dsh\profiles\web\cordis.patch.yml must contain:

``yaml - id: tool-web disabled: true ``

2. Agent preset layer: copy the shipped standard preset into the user-owned ${DSH_HOME:-$HOME/.dsh}/.agent-presets/web-search/ directory, then set the copied tool-web row to:

``yaml - id: tool-web name: '@deepseek-ai/dsh-tool-web' disabled: true ``

The default preset must point to that copy in settings.yaml:

agent-presets:
  default: web-search

The shipped preset under the DSH installation directory must not be edited. The current user's configuration already applies this arrangement. The package's cordis.patch.yml installs the replacement plugin and its bundled Agent Skill; it does not modify shipped presets.

After changing these settings, restart the DSH backend and create a new Agent session. Existing sessions keep the preset composition they were created with. Verify that web_search accepts query, limit, and language; the official implementation only accepts query.

# Stop the existing dsh web process with Ctrl+C, then run:
dsh web

The new session should expose these two tools:

web_search
web_fetch

web_search should accept query, limit, and language. web_fetch should accept one HTTP(S) url. A quick fetch smoke test is:

web_fetch({"url":"https://example.com/"})

The result should contain a Fetched https://example.com/ (HTTP 200) heading and Markdown body content.

Configure In DSH Web UI

The plugin registers the DSH settings namespace dsh-web-search and ships a browser settings card. In the current Web UI bundle, open Settings → Web UI Plugins → 网页搜索与抓取. In the official DSH settings surface, the same card is also available under Settings → Plugins → Plugin configuration.

No custom frontend page or hand-written YAML is required. After changing the package or its client bundle, restart the DSH backend process that owns http://127.0.0.1:3080, then refresh the browser page. A browser-only refresh is insufficient because the backend generates window.__DSH_BOOT__ and serves /plugins/<package>/client.js at process startup.

To verify that the new Client half was loaded, this URL must return HTTP 200 after the restart:

http://127.0.0.1:3080/plugins/dsh-tool-web-search/client.js

If it returns HTTP 404, the running backend is still using an old profile boot or a different DSH_HOME; the settings card cannot appear until that backend is restarted with the profile containing this package.

The card edits:

  • enabled: enable or disable both replacement tools;
  • announceToAgent: enable or disable the operational system-prompt guidance;
  • fetch: enable or disable web_fetch;
  • engine: choose bing or searxng;
  • maxResults: integer from 1 to 10;
  • timeoutMs: positive search timeout in milliseconds;
  • fetchTimeoutMs: positive fetch timeout in milliseconds;
  • maxResponseBytes: positive network response byte cap;
  • fetchMaxOutputChars: positive rendered fetch output cap;
  • bing: market, language, and optional User-Agent;
  • searxng: base URL, credential reference, authentication header/prefix, engines, and categories.

Invalid values are rejected by the DSH settings validator before they are persisted. SearXNG secrets themselves belong in the DSH credentials UI; only apiKeyRef is stored in this settings namespace.

Configuration

The plugin uses the dsh-web-search settings namespace. The default engine is Bing:

engine: bing
maxResults: 10
timeoutMs: 30000
fetch: true
fetchTimeoutMs: 30000
maxResponseBytes: 2000000
fetchMaxOutputChars: 200000
bing:
  market: zh-CN
  setLang: zh-CN

For SearXNG:

engine: searxng
searxng:
  baseUrl: https://searx.example.com
  apiKeyRef: SEARXNG_API_KEY
  apiKeyHeader: Authorization
  apiKeyPrefix: 'Bearer '

The API key is resolved per request through DSH credentials, with an environment-variable fallback when the credentials service is unavailable. It is never placed in the URL or tool output.

Limits

  • Search: up to 10 results per call.
  • Search: up to 200 Unicode characters per snippet.
  • Search: up to 16K characters in rendered tool output.
  • Fetch: up to 200K characters in rendered Markdown/text output.
  • Both tools: oversized network responses are rejected before unbounded parsing.

See docs/requirements.md for the complete requirements and acceptance criteria.

License

This project is licensed under the MIT License. See LICENSE for the full text, NOTICE for third-party references, and THIRD_PARTY_LICENSES.md for preserved third-party copyright and license notices.

Agent Skill

The package also bundles skills/web-search-operations/SKILL.md. Its profile patch adds a private Skill filesystem provider for that directory, so the Agent receives operational guidance about result limits, Bing/SearXNG configuration, credential references, and error handling without replacing project or user Skill roots.