中文EN

@fishdivinity/dsh-local-search

tools已测通过npmMIT

本机文件搜索与文档全文搜索(全文检索):文件名走 Everything(es.exe),磁盘上的 PDF / DOCX / XLSX / PPTX / EPUB 正文走 Anytxt,五个只读工具;两个引擎需另装,仅支持 Windows。

下载量 / Downloads
1,202
依赖体积 / node_modules
13.36 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

安装

dsh plugin --profile web add @fishdivinity/dsh-local-search

沙箱测试结果

阶段结果
1 安装✓
2 列装✓
3 挂载✓
4 启动—

四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。

README

<div align="center">

<img src="https://raw.githubusercontent.com/fishdivinity/dsh-local-search/main/icon.svg" width="96" alt="Local Search icon">

Local Search for DeepSeek Harness

File names and document text from the whole machine, behind five read-only tools — so the model searches your disk instead of guessing a path.

![npm version](https://www.npmjs.com/package/@fishdivinity/dsh-local-search)

![awesome · DSH plugin](https://awesome-dsh-plugin.com/p/fishdivinity/dsh-local-search/)

![platform](#requirements)

![dsh](#requirements)

![CI](https://github.com/fishdivinity/dsh-local-search/actions)

[English](README.md) · [简体中文](README-zh.md) · [Install](#install) · [Configuration](#configuration) · [Tools](#tools) · [Security](#security-and-limits)

</div>

Why this exists

A session sees one folder. grep and glob are fast inside it and blind outside it, so when the work needs a file that lives anywhere else, the model either guesses a path or stops and asks you for one — and the lookup goes back to you, in another window, with the conversation waiting.

Searching is not the expensive part. Picking the right hit, opening the document, reading the part that matters, putting two of them side by side, and being able to say where the answer came from — that is. It is also exactly what a model is good at, once it can reach an index.

This plugin gives it both: es.exe for file and folder names wherever Everything has indexed them, Anytxt for the text inside PDF, DOCX, XLSX, PPTX, EPUB, RTF, TXT and MD files. The whole surface is read-only — nothing writes, deletes, re-indexes, OCRs or starts an engine. A lookup is answered from the index those engines already built: milliseconds, not a rescan of the drive.

When to use it

  • The search is a step, not the goal. You asked for something else — a summary, a comparison, a fix — and the answer needs a document you cannot point at. Handing that lookup back to yourself costs a window switch and a paste.
  • You know the answer, not the keyword. "The price clause we agreed with that supplier", "the note about this error". The model can try five phrasings in two languages, read the hits, and come back with the quote and the path.
  • The answer spans files. "Compare the payment terms in these two contracts", "what did the last three meeting notes decide about the schedule". A search field returns a hit list; the reading and comparing is the part you wanted delegated.
  • The work is batch. "List the counterparty in each of these 30 contracts" — no search field does this. Search once, read every hit, write the table.
  • The file is not text. grep cannot open a PDF, a .docx, or a spreadsheet. Either the text comes through Anytxt, or you paste it in by hand.
  • The answer has to cite a source. A path plus a snippet can be checked; a plausible paragraph cannot.

Contents

  • [Why this exists](#why-this-exists)
  • [When to use it](#when-to-use-it)
  • [Tools](#tools)
  • [Requirements](#requirements)
  • [Install](#install)
  • [Configuration](#configuration)
  • [Scopes](#scopes)
  • [Engine selection](#engine-selection)
  • [Errors and diagnostics](#errors-and-diagnostics)
  • [Security and limits](#security-and-limits)
  • [Known limitations](#known-limitations)
  • [How this compares](#how-this-compares)
  • [For AI agents](#for-ai-agents)
  • [Development](#development)
  • [License](#license)

Tools

Tool · Engine · Use for

local_search_files · Everything via es.exe · File/folder names, paths, cross-drive discovery

local_search_content · Anytxt JSON-RPC · Text inside PDF, DOCX, XLSX, PPTX, EPUB, RTF, TXT, MD

local_search_fragments · Anytxt · Snippets around a match in one indexed file

local_search_read · Anytxt · Extracted plain text of one indexed file, capped

local_search_status · both · Check whether each engine is reachable

Requirements

  • Windows.
  • DeepSeek Harness >=0.2.1-0 <0.3.0-0 — 0.2.1 and 0.2.2 (pre-releases included) run it; 0.3 pre-releases are refused.
  • Everything running, plus es.exe (a separate download from voidtools; the plugin auto-detects PATH/common install folders, or set files.everything.esPath).
  • Anytxt Searcher for content search: the GUI (ATGUI.exe) must be running because the JSON-RPC service lives inside it. The indexing service alone is not enough.

This plugin does not bundle Everything, es.exe, or Anytxt. Install and license them separately.

Install

The command writes into one profile, and it has to be the profile the session boots from — the Desktop app owns desktop, dsh web owns web:

dsh plugin --profile desktop add @fishdivinity/dsh-local-search   # Desktop app
dsh plugin --profile web add @fishdivinity/dsh-local-search       # dsh web

web is a shipped template that initializes on first use; desktop must have been opened once, and only the dsh bundled with the Desktop app can manage it. To install the source instead of the npm tarball, swap the spec for github:fishdivinity/dsh-local-search.

Restart the profile or open a new session. The five local_search_* tools appear in the model toolset.

Configuration

Sidebar Plugins → the Local Search card in the Official plugins group → the plugin's own page. That is the same card shape the GitHub plugin contributes. Saves apply to the next tool call; leaving the page drops unsaved edits. Reset, under the description, first shows what it will

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:9,最后更新 2026-11-06

链接

GitHub · Homepage · npm

同类插件