DSH Hub

vibeinging/dsh-tool-search

dsh-tool-search

BundleWorkflow3 GitHub stars· updated 2026-08-12

Per-agent on-demand tool discovery and progressive schema disclosure for DeepSeek Harness

Install

npx @deepseek-ai/dsh plugin --profile headless add -w

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-tool-search DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/vibeinging-dsh-tool-search.svg)](https://dshhub.dev/plugins/vibeinging-dsh-tool-search)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from vibeinging/dsh-tool-search, cleaned of badges and images.

@deepseek-ai/dsh-tool-search

English | 中文

An experimental external Native Tool Mode plugin for per-agent tool discovery and progressive schema disclosure. Each live agent sees one scope-local tool_search tool plus the global tools matched by alwaysVisible; other eligible global tools stay executable only after tool_search selects them. The plugin uses the existing ctx.tools.restrict() seam and does not change agent-loop.

This private repository is the plugin's source of truth. The package is unreleased and carries no compatibility promise. See the scale benchmark report for keyless 10/30/50/100-tool results and the design record for the decision and trade-offs.

Installation

The repository is private and the package is not published to an npm registry. Install a reviewed commit directly from GitHub with Git credentials and pnpm 11.7.0; install it separately into every profile that should use tool search. The -w flag is required because a DSH profile is a pnpm workspace root:

dsh plugin --profile headless add -w github:dsh-external/dsh-tool-search#<reviewed-commit>
dsh plugin --profile web add -w github:dsh-external/dsh-tool-search#<reviewed-commit>
dsh --profile web --dump-config

The package's dsh.bundle.patch loads both the runtime plugin and its invariant companion. Profiles are independent; installing into web does not enable headless. --dump-config must show tool-search and tool-search-invariant before the profile is booted. Remove the bundle from one profile with dsh plugin --profile <profile> remove -w @deepseek-ai/dsh-tool-search.

Config

- id: tool-search
  name: '@deepseek-ai/dsh-tool-search'
  config:
    alwaysVisible: [read_file, todo_*]
    maxResults: 5
    maxQueryChars: 512
KeyDefaultMeaning
alwaysVisible[]Global tool-name patterns that remain visible before search. Only * is a wildcard; every other character is literal.
maxResults5Largest allowed result limit for one search.
maxQueryChars512Largest trimmed query accepted in JavaScript characters.

Invalid positive-integer bounds, empty or whitespace-padded patterns, and repeated patterns fail at plugin load. A model may request a smaller limit, from 1 through maxResults; it cannot raise the deployment bound.

Selection and safety

Search ranks exact callable names first, then name and description matches with deterministic BM25 scoring and code-point name tie-breaking. A successful expansion writes one tool-search/selection session event containing the trimmed query and the complete sorted selected-name set. Later events must be strict cumulative supersets; the invariant companion enforces the event shape and monotonic rule for live and restored sessions.

Each agent owns an independent selection and restriction. A resumed or forked session restores the latest selection before its first request. Installing the plugin after agents already exist attaches them; unloading it removes tool_search and lifts only its own restrictions.

Related plugins