dsh-web-degoog
Đã xác minhdsh-web-degoog · v0.3.1 · MIT · Giao diện web
DeepSeek Harness web-search/web-fetch provider bundle backed by any degoog instance
Cài đặt
dsh plugin add dsh-web-degoog Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.
Mã nguồn
Thẻ
Tác giả
Readme
dsh-web-degoog
DeepSeek Harness bundle that
backs the harness's native web_search and web_fetch tools with any
self-hosted degoog instance. The
instance URL and API key are configuration - one published package serves
every deployment.
What it provides
| Provider id | Capability | Backing |
|---|---|---|
degoog |
web_search |
Your degoog instance's native GET /api/search (merged, scored, deduplicated results across its engines). Optional bearer-token auth for protected instances. |
degoog |
web_fetch |
Direct retrieval from the harness machine under an SSRF guard (below). degoog core has no scrape endpoint, so this side never contacts your instance. HTML returns as kind: 'html'; dsh-tool-web converts it to Markdown. |
Installing the bundle registers both providers and selects them. Set the
instance URL in Settings. web_fetch is still off until you enable it
in a preset you own — shipped Standard/PTC cannot be edited in place.
Install
dsh plugin --profile web add dsh-web-degoog
Then do these two things (search will not work without the first; fetch will not appear without the second):
- Settings → Plugins → degoog search & fetch — set Instance URL.
- Settings → Agent presets → Duplicate the preset you use → Open
folder → in that copy’s
agent.cordis.ymlsettool-webfetch: true(see Enable web_fetch).
Because the package declares dsh.bundle.patch, the CLI reconciles the
profile's bundle stack automatically: the bundle joins the layer list on
add and leaves it on remove. The bundled patch inserts this plugin and
sets web.searchProvider / web.fetchProvider to degoog.
@deepseek-ai/dsh-web has no settings namespace, so provider selection
cannot live on the Plugins page. Selecting degoog in the bundle patch is
the supported zero-file-edit path; a later user patch or
$DSH_WEB_SEARCH_PROVIDER still wins if you need to switch back without
uninstalling.
Configure the instance URL
There is no auto-generated settings form for third-party bundles (the Plugins page renders only cards a bundle explicitly ships), so pick one of these:
Settings UI - Settings -> Plugins -> Plugin configuration, the degoog search & fetch card: instance URL, API-key credential name, search type, and language. Edits stage locally and commit through the revision-fenced settings write path; each field shows an override marker with one-click reset to its downstream default.
Launch environment - zero files to edit. The harness reads
DEGOOG_SERVER_URLat boot (the API key already ridesDEGOOG_API_KEY):DEGOOG_SERVER_URL=https://degoog.example.com dsh --profile webPatch file - survives restarts, hot-reloads on the running web profile. In
~/.dsh/profiles/web/cordis.patch.yml:- id: web-search-degoog config: serverUrl: https://degoog.example.com
Value precedence, highest first:
- Settings-page card (the user settings document)
- Profile patch entry config (
cordis.patch.yml) - Launch environment (
DEGOOG_SERVER_URL,DEGOOG_API_KEY) - Built-in defaults (blank URL keeps search unconfigured)
Enable web_fetch (shipped presets cannot be edited)
On web profiles the host tool-web row is disabled; each session takes
web_search / web_fetch from its agent preset. Shipped presets
(Standard, PTC, Minimal, …) pin fetch: false and are read-only. A bundle
cannot patch them, and they cannot register a settings namespace. Duplicate
the preset you use and flip the flag:
Settings -> Agent presets -> Duplicate Standard (or PTC, or any custom preset you already own).
Open folder on the copy. In
agent.cordis.yml, set:- id: tool-web name: '@deepseek-ai/dsh-tool-web' config: fetch: true searchTimeoutMs: 60000Pick that copy for new sessions (or make it the default). Sessions that already ran stay on the preset they started with.
You cannot turn web_fetch on inside shipped Standard/PTC themselves.
Headless/TUI profiles that still mount host-plane tool-web can set the
same fetch: true on the host tool-web row in the profile patch instead.
Configuration
| Field | Default | Meaning |
|---|---|---|
serverUrl |
'' |
Base URL of any degoog instance. Blank = search unconfigured. |
apiKey |
- | Literal instance API key. Prefer apiKeyEnv so no secret lands in config files. |
apiKeyEnv |
DEGOOG_API_KEY |
Credential reference resolved per search from the credentials service or launching environment. Sent as Authorization: Bearer ... only when resolvable. |
searchType |
web |
Passed as degoog's type parameter (web, images, ... depending on installed engines). |
lang |
'' |
Optional language code passed as degoog's lang parameter. |
allowPrivateAddresses |
false |
Fetch-side escape hatch for LAN deployments: when true, the guard dials private/loopback addresses so a homelab instance next to internal sites can scrape them. Default false matches degoog-mcp. Not shown in the UI. |
Search errors use stable codes: DEGOOG_SERVER_URL_MISSING,
WEB_PROVIDER_CREDENTIAL_MISSING (401/403 without a key),
WEB_PROVIDER_ERROR, WEB_ABORTED.
Security notes
- The fetch guard allows only
http/https, rejects embedded credentials and over-long URLs, resolves DNS before dialing, rejects hosts resolving to loopback/private/link-local/CGNAT/multicast/NAT64/IPv4-compatible/6to4 addresses (including IP-literal URLs), pins each connection to a validated address while keeping TLS SNI and the Host header bound to the hostname, re-checks every redirect hop (max 5), caps decoded bodies at 2 MB (truncatedflag set), refuses binary content types, applies a 30 s stall timeout per hop, and a 60 s overall backstop. - Enabling
fetch: truemeans the model chooses request targets by design. That is exactly what DSH's shipped presets decline to do for you; flipping the flag in a preset you own is the explicit opt-in. - Search requests go to whatever instance you configure; send its API key only over HTTPS.
Uninstall / switch back
dsh plugin --profile web remove dsh-web-degoog
The bundle layer leaves the stack automatically, including the degoog provider selection, so DeepSeek official search is selectable again.
This package does not write agent presets or delete leftover files. If an
older release created ~/.dsh/.agent-presets/degoog-standard, switch the
default preset away from it (Settings -> Agent presets) and delete that
folder. You can also drop the web-search-degoog: section from
~/.dsh/settings.yaml if you no longer want the saved instance URL.
License
MIT