Skip to content
dsh.fish
Bundle

@lp181818/web-search-advanced

Advanced web search plugin with native DeepSeek and OpenAI-compatible (custom) search provider support, with a settings card in the Settings sidebar

Source
bug-huntter
License
MIT
Updated
Updated yesterday

Readme

# @lp181818/web-search-advanced

Advanced web search plugin for DeepSeek Harness (DSH), supporting both native
DeepSeek search and OpenAI-compatible "Custom" search providers.

## Features

- Provider selector: `deepseek` (native) or `custom` (OpenAI-compatible, e.g. OpenRouter)
- Settings section: provider choice, endpoint URL, model, API key, max searches
- Two search backends: native DeepSeek `web_search_20250305` or an OpenAI-compatible web plugin
- **Automatic retry (v0.1.4)**: transient failures (HTTP 429 / 5xx / network
  errors) are retried with exponential backoff, honoring the server
  `Retry-After` header (configurable `maxRetries`, default 3)
- **Test before save (v0.1.4)**: the settings card probes the configured
  endpoint (`/chat/completions` for Custom, `/messages` for DeepSeek) with the
  current draft values before saving; real config errors (bad endpoint/model/key)
  block the save, transient 429/5xx only warn

## DSH compatibility

| DSH version | Compatibility |
| --- | --- |
| `0.1.2-rc.1` and current 0.1.2 rc | Registers and exposes the settings namespace through the current settings/LLM services |
| `0.1.0-rc.7` through pre-0.1.2-alpha | Uses the shared `settings.register`/`installSection` service API; theoretically compatible |
| before `0.1.0-rc.7` / 0.0.x | Not supported; those DSH versions lack the settings/section mechanism |

The current source no longer imports the removed `settingsNamespace`,
`installSettingsSection`, or `@deepseek-ai/dsh-client-runtime` APIs.

## Enabling this provider in DSH

Installing this package automatically routes the DSH `web` service to
`web-search-advanced`; no manual `cordis.patch.yml` edit is required. After
installation, restart `dsh web` and configure the package in the Web Search
settings section.

Only the provider, API key, and model are required. The endpoint is optional:
DeepSeek uses `https://api.deepseek.com/anthropic/v1`, while Custom uses
`https://openrouter.ai/api/v1` when the endpoint is left blank. Inside the
`web-search-advanced` settings namespace:

- `searchProvider: deepseek` uses this plugin's DeepSeek branch.
- `searchProvider: custom` uses the configured OpenAI-compatible
  `baseURL` / `model`, for example OpenRouter.
- `maxRetries: 3` (optional) — exponential-backoff retries for transient
  failures (429 / 5xx / network), default 3.

Settings persist in `~/.dsh/settings.yaml` under the `web-search-advanced`
namespace and survive DSH restarts until deleted.

The package patch also selects the built-in `http` fetch provider so search
results can be opened without an additional profile change.

## Build

This repository includes the prebuilt `lib/` artifacts required by DSH skill
hub validation. Direct GitHub installs also have a `prepare` script that can
rebuild them.

DSH resolves `@deepseek-ai/*` packages as runtime peers, so local installs
should not make npm resolve them:

```powershell
npm install --legacy-peer-deps
npm run build
```

Build output:

- `lib/index.js` - DSH host/plugin half
- `lib/client.js` - DSH web client bundle

After a build, sync into an installed DSH profile:

```powershell
npm run sync
```

If no profile has the package installed yet, install it first:

```powershell
dsh plugin --profile web add github:bug-huntter/web-search-advanced
```

Then restart DSH and apply the profile patch:

```powershell
dsh web
```

The plugin registers its provider through `ctx.web`, registers the
`web-search-advanced` settings namespace, and exposes that namespace to the
web client through the configurable-provider registry.

Install

dsh plugin --profile web add github:bug-huntter/web-search-advanced

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source