dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
PROJECT TOPICS
PROJECT README
Personal DeepSeek Harness plugin bundle.
dsh plugin --profile web add github:riesbri/dsh-plugins
Or from a local checkout:
dsh plugin --profile web add /path/to/dsh-plugins
dsh plugin appends the bundle to the profile's dsh.profile.bundles, so its layer applies after @deepseek-ai/dsh-base and any mode bundle. Confirm with:
dsh --profile web --dump-config # shows a "# == dsh-plugins-riesbri" layer
Remove with dsh plugin --profile web remove dsh-plugins-riesbri.
This package ships plain ESM JavaScript with no build step, so a github: install needs no prepare script and no pnpm allowBuilds entry.
list_dirLists the direct children of a directory — names, types, and sizes only, never file contents.
The harness filesystem seam has exposed ctx.fs.listDir since the beginning with no model-facing Consumer; @deepseek-ai/dsh-tool-fs records the gap under its known limitations as "No model-facing directory listing ships". Without it the model reaches directory structure only through bash ls — unstructured, and subject to whatever shell sandbox the deployment mounts — or through glob, which is pattern-driven rather than hierarchical.
Because it is a Consumer of the seam rather than a shell-out, listing follows whichever filesystem provider the deployment mounted: local, sandboxed, or remote.
| Parameter | Type | Notes |
|---|---|---|
path |
string, required | A relative path resolves against the calling agent's session workspace, not the server's launch directory. |
limit |
integer | Defaults to 200, clamped to 1000. A truncated listing says so in its last line. |
The tool registers globally, so it reaches every agent regardless of the agent preset a session selects — a preset row of the same name would shadow it, but no shipped preset defines one.
dsh-home/cordis.patch.yml is the home patch layer, symlinked into place:
ln -s "$PWD/dsh-home/cordis.patch.yml" ~/.dsh/cordis.patch.yml
It applies to every profile, after that profile's bundle layers and before any --patch overlay, and is hot-reloaded on save. It currently enables session content search: the base bundle mounts the session-query index with path: ':memory:' and openAt: never, so every full-text call fails SESSION_QUERY_SEARCH_DISABLED and the Web sidebar matches titles and workspace names only. A durable path with openAt: first-search keeps the node:sqlite import and the file handle off the startup path.
Remember that a patch replaces the targeted row's whole config rather than merging into it, so every key the row needs is restated there.
package.json declares dsh.bundle
cordis.patch.yml the layer applied when a profile lists this bundle
index.js plugin entry: name, inject, apply
src/list-dir.js the tool
dsh-home/cordis.patch.yml machine-local home patch layer (symlinked to ~/.dsh)
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。