Whole-disk file search for the agent through the official Everything SDK: the plugin calls Everything64.dll in-process over N-API FFI - no es.exe child process and no HTTP port - and returns full paths, sizes and modified times in milliseconds, with dedicated Web UI cards for search and status. Windows x64 only; requires voidtools Everything 1.4+ installed and running (the plugin can auto-start it).
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-plugin-everything
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:keyblues/dsh-plugin-everything
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
DSH plugin identifier: this repository is a DeepSeek Harness plugin bundle. Its GitHub topic is
dsh-plugin,package.jsondeclaresdsh.bundle.patch, thedsh-pluginkeyword and anengines.dshrange for the supported DSH versions, so DSH community catalogs can discover it by topic.
Why
By default an agent can only walk directories inside its workspace, which is slow for cross-drive lookups, installed tools, or old downloads. This plugin exposes the Everything index as model tools: one call returns full paths plus size and modified time for matches across every indexed volume, in milliseconds — the call goes straight to the SDK DLL in-process, with no subprocess or HTTP hop.
Requirements
- DeepSeek Harness on Windows x64.
- voidtools Everything installed and running (1.4+, tested with 1.4.1.1032). The index lives inside the Everything process; the plugin reads it over the Everything SDK IPC. Without the client there is nothing to query.
- No Everything Service, no HTTP/ETP server and no
es.exe(the Everything CLI) are required — the plugin ships the official SDK DLL. - If Everything is not running the tools return a clear hint; enable
autoStartin the config to let the plugin launch it.
Install
TL;DR: in DSH Desktop open Plugins → install task and enter dsh-plugin-everything.
The installer pulls the latest version from the npm registry (currently 1.1.0); the
everything_search / everything_status tools appear immediately, no Harness restart needed.
Option 1: npm package (recommended)
DSH Desktop: Plugins → install task → enter dsh-plugin-everything
(use dsh-plugin-everything@1.1.0 to pin a version).
DSH CLI (desktop profile must be initialized and Desktop fully quit first):
dsh plugin --profile desktop add dsh-plugin-everything
Update to the latest version by running the same add again.
- npm page: https://www.npmjs.com/package/dsh-plugin-everything
- latest version:
npm view dsh-plugin-everything version
Option 2: GitHub release tarball / local .tgz (offline, pinned version)
- Download
dsh-plugin-everything-1.1.0.tgzfrom Releases. - Enter that tarball's absolute path in the Desktop installer
(e.g.
C:\Downloads\dsh-plugin-everything-1.1.0.tgz), or ask the agent to runplugin_manager install_bundle target=<tgz path>.
Useful when npm is unavailable or a fixed version must be installed offline.
Option 3: local source directory (development / debugging)
git clone https://github.com/keyblues/dsh-plugin-everything.git
Enter the directory's absolute path in the Desktop installer, or ask the agent to run
plugin_manager install_bundle target=<directory>. Reinstall after editing the source.
Inputs accepted by the Desktop installer
| Input | Notes |
|---|---|
dsh-plugin-everything |
npm package name (recommended): installs the latest version from the npm registry |
dsh-plugin-everything@1.1.0 |
npm package name with a pinned version |
C:\Downloads\dsh-plugin-everything-1.1.0.tgz |
local release tarball / .tgz path |
C:\path\to\everything-plugin |
local directory (a clone of this repository) |
https://github.com/keyblues/dsh-plugin-everything |
GitHub repository address; pnpm still has to reach github.com, so a restricted network fails with ECONNRESET — use the “use mainland China mirror” action or one of the inputs above |
The install target is ~/.dsh/profiles/desktop; the tools appear immediately after installation.
Uninstall
plugin_manager remove_bundle target=dsh-plugin-everything, or disable/remove it in
Settings → Plugins.
Tools
| Tool | Purpose |
|---|---|
everything_search |
Search files/folders across all indexed volumes with Everything syntax; returns path, size, modified time and total match count |
everything_status |
Check whether Everything is reachable, its version, the number of indexed items, and the SDK DLL path |
everything_search parameters:
| Parameter | Type | Description |
|---|---|---|
query |
string (required) | Everything search expression |
max |
integer | Result limit 1–500, defaults to the plugin config maxResults (50) |
sort |
enum | name (default) / path / size / date-created / date-modified / recent |
descending |
boolean | Reverse the sort order, default false |
Everything syntax examples:
notepad.exe # name contains notepad.exe
report 2024 ext:pdf # 2024 + PDF
file:*.md path:"C:\work" # markdown under a directory
folder:node_modules # folders named node_modules
C:\Windows\ notepad # trailing backslash = scope to that folder
size:>10mb dm:today # larger than 10 MB, modified today
中文文件 # Unicode file names
Tool cards (Web UI)
The package ships a Client half, client.js, which registers two cards into the Web client's
tool.call.toolview slot. everything_search and everything_status therefore render as dedicated
cards instead of the generic tool row:
| Card | Collapsed row | Expanded body |
|---|---|---|
| Everything search | search glyph, title, query, returned/matched counter |
a totals line (matches / shown / sort / truncation) plus at most 8 hit lines (file/folder glyph, name, containing directory, size and modified time; clicking the name opens the file); extra rows fold into one explanatory line and stay in the model-facing result text |
| Everything status | state word, indexed items | left-aligned state / version / indexed items / index status / platform / SDK DLL lines; when unavailable, the recorded error plus the autoStart hint |
- Data source: the Host tool's
output.presentationMetaprojection, persisted with the result. The card never re-parses the model-facing result text, so paths containing(or,cannot be misread. The projection carries at most 100 rows to keep the session log small; the full result text the model sees is unchanged. - Theme: only
--dsw-alias-*theme tokens, so light and dark need no separate artwork; row height and type scale follow the interface content-font setting. - Copy: Chinese and English through the Client locale dictionary, switching with the UI language.
- Fallback: each card renders inside a crash boundary, so a rendering error degrades to one plain text row instead of a blank entry.
- Taking effect: Host tool changes apply on the next Host load; a new or updated Client half needs one Harness restart (or a Web page reload) before the browser loads the new bundle.
Configuration
Override the plugin row in the profile cordis.patch.yml (user patch layer):
- id: everything
config:
maxResults: 50 # default result limit (1-500)
queryTimeoutMs: 10000 # per-query timeout; terminates the SDK worker, rebuilt on next query
autoStart: false # launch Everything when it is not running
everythingPath: 'C:\Program Files\Everything\Everything.exe'
sdkPath: '' # empty = bundled native/Everything64.dll
Architecture
Agent tool call
│
▼
index.js ── worker_threads ──▶ sdk-worker.cjs
(tool registration/config) │ koffi (N-API FFI)
▼
native/Everything64.dll (official Everything SDK)
│ WM_COPYDATA IPC
▼
Everything.exe NTFS index
- SDK: the official
Everything64.dll(unmodified, from Everything-SDK.zip) is called throughEverything_SetSearchW/Everything_QueryW/Everything_GetResult*— structured paths, sizes and FILETIME, no text parsing. - FFI: the Harness Host is an Electron 44 / Node 24 runtime (Node-API 10), so a regular Node native addon ABI would not match; the plugin uses the N-API FFI module koffi 3.3.4 with its win32-x64 prebuilt binary.
- No subprocess, no port: the query path is worker → koffi →
Everything64.dll→ Everything IPC; noes.exechild process is spawned and no local HTTP port is opened. - Worker isolation:
Everything_QueryW(true)waits on the Everything IPC reply without a native timeout, so queries run in a worker thread with our own timeout. A timed-out worker is terminated and rebuilt on the next query, keeping the Host event loop responsive. - The bundle is self-contained: koffi and the SDK DLL ship inside it — no network access or compilation at install time.
DSH version support
| Item | Value |
|---|---|
Declared range (engines.dsh) |
>=0.2.1-rc.2 <0.3.0-0 |
| Tested runtime | DeepSeek Harness 0.2.1-rc.3 (Desktop: Electron 44.7 / Node 24.21 / Node-API 10) |
| Contract parity evidence | @deepseek-ai/dsh-app-boot, dsh-tools, dsh-plugin-manager and dsh-package-manifest publish byte-identical artifacts at 0.2.1-rc.2 and rc.3; every extension point this plugin uses (bundle patch, the ctx.tools.register ToolDefinition, plugin display metadata, install and version checks) is unchanged between them |
| Not covered | 0.2.0 and earlier (different core package APIs, untested); 0.3.0 and later (DSH is a developer preview, the range must be re-validated before widening) |
The npm latest tag for DSH is currently 0.2.1-rc.2 and the Desktop runtime is 0.2.1-rc.3 —
both inside the declared range.
DSH enforces the declaration in two places (built into app-boot / plugin-manager in 0.2.1):
- Install: local-path and registry specs are checked before pnpm runs and refused with
incompatible-version; tarball and git specs are judged after installation and rolled back. - Startup: incompatible bundles are skipped (
skippedBundles) and incompatible plugin rows are disabled — their modules are never imported.
To run anyway, grant an exact-version exemption (this does not widen the declared range):
dsh plugin --profile desktop allow-version dsh-plugin-everything@1.1.0 --dsh-version <runtime version> --accept-risk
or use set_version_exemption in the plugin manager after the user accepts the risk. After a DSH
upgrade, check for a compatible plugin release before restarting or reinstalling.
Compatibility and limits
- Windows x64 only; other platforms get an explicit error from the tools.
- Requires a running Everything client; tested with 1.4.1, Everything 1.5 alpha untested.
- Results are an Everything index snapshot; very recent file changes may take a second or two.
- Results include
$Recycle.Bin,WinSxSand other system directories; exclude them with!$Recycle.Binwhen needed.
Verification
v1.1.0 (tool cards)
- Static checks:
node --check client.jspasses,package.jsonparses, and thedsh.clientdeclaration (platform: "web",immediately,inject: ["@deepseek-ai/dsh-client-ui-tool"]) plusexports["./client"]match whatdsh-client-modulesparses at Host boot. - Smoke tests (
npm test): the Host side exercises thepresentationMetaprojection (fields, 100-row cap, malformed-row filtering, available/unavailable/failed status, model-facing output unchanged); the Client side executes the bundle headlessly, checks both registered keys, the stylesheet and zh/en dictionary parity, then renders collapsed/expanded, query, counters, truncation, empty, failed, not-running, fallback and crash-boundary states. - Runtime: the Host caches each package's
dsh.clientverdict (pkgMeta) until restart, so a new Client half needs one DSH Desktop restart. Afterwards runnode scripts/verify-live.mjs(reads$env:DSH_WEB_URL) to prove V1 adsh-plugin-everythingrow in the plugin graph and V2 that its bundle URL serves thewindow.__ModuleLoader__registration. - Visual check: no browser control is available here, so the cards' look still needs a human
pass in the GUI; row height (
24px + content-font delta), type scale (--dsh-content-font-size-secondary), the 2px separator dot and all colours follow the first-party ToolRow and--dsw-alias-*tokens, so light/dark switch automatically.
v1.0.3
install_bundlereportedapplication: applied,enabled: true, no warnings.- Live queries:
notepad.exe(18 matches), Unicode file names,path:/file:/folder:/ext:syntax, size-descending order, truncation counts, empty results andmaxclamping all passed. - Failure path: a missing SDK DLL produces a readable
SDK_LOAD_FAILEDerror without crashing the Host. - Version declaration:
engines.dshpassed the install check on 0.2.1-rc.3, and a probe package declaringengines.dsh: ">=99.0.0"was refused by DSH withincompatible-version, proving the declaration is enforced. - Packaging: the
npm packartifact was unpacked and its worker + DLL + koffi loaded and queried independently. - Display assets: zh/en locale titles/descriptions and
icon.svgare exported and shipped; icon rendering in the GUI still needs a human look (no browser control here).
Automated publishing
.github/workflows/publish.yml publishes the package to the npm
registry and attaches the packed .tgz to the GitHub release. npm Trusted Publishing is already
configured (GitHub Actions OIDC, no long-lived token):
package: dsh-plugin-everything
workflow: publish.yml
repository: keyblues/dsh-plugin-everything
permissions: publish, stage publish
trust id: 3aa47032-1bb5-4253-a6d6-7f92ca5b19ce
Release flow:
# 1. bump version in package.json + CHANGELOG
git commit -am "chore(release): vX.Y.Z"
git tag vX.Y.Z
# 2. push the tag to publish
git push origin main --tags
The workflow packs the bundle, runs npm publish (with provenance), then creates/updates the
GitHub release and uploads the tarball. It can also be started manually from the Actions tab to
publish the version currently in package.json.
Fallback without OIDC: npm login followed by npm publish --access public (2FA required).
License
- Plugin code: MIT
- Everything SDK (
native/Everything64.dll): MIT, Copyright (C) 2016 David Carpenter / voidtools - koffi / @koromix/koffi-win32-x64: MIT, Copyright (C) Niels Martignène
- Full notices: THIRD_PARTY_NOTICES.md
Links
More in this category
DayuanJiang/next-ai-draw-io#dsh-plugin★ 36548
Draws draw.io diagrams in DeepSeek Harness through the next-ai-drawio MCP server: the link in the reply opens a live preview in the right sidebar, you can edit the diagram by hand, and each AI change is a version you can restore. Node.js 18+; npx downloads the MCP server on first use.
Tencent/WeKnora#dsh-weknora★ 36201
Four read-only tools over a WeKnora knowledge base: list knowledge bases, hybrid passage search, reassemble one document's chunks in order, and WeKnora's own cited RAG or ReAct-agent answer with a resumable session id.
superdesigndev/treg★ 6962
Tool catalog for agents: search ~2,600 external endpoints (SEO and SERP, backlinks, social, people and company enrichment, ad libraries, scraping) by the task you want done, read each one's parameters and per-call price, then call it with the credential injected server-side. Ships the skill plus an MCP row that stays disabled until TREG_TOKEN is set.
T-Auto/dsh-ops★ 5011
Provides bash, PowerShell 7, and high-performance Rust tools for DSH on Windows to reduce token usage.
sixtysevenlf/dsh-blender-plugin★ 1536
Lets a DSH agent drive a local Blender over a direct TCP channel with 15 tools: viewport frames, custom-angle renders, Python execution, headless and job offload, transaction rollback, and a planning layer of 228 ops across 34 families.
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1153
Tencent CloudBase backend for DeepSeek Harness — scaffold and deploy full-stack apps from chat, render query results as table cards with paging, sorting and CSV export, preview a deployment on its domain, and call the CloudBase MCP toolset (`mcp__cloudbase__*`) with device-code login.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.