dsh-everything-find:將 Everything 索引接入 DSH

在 Windows 環境下開發智能體,文件檢索是一個常見痛點。模型通常需要依賴 shell 命令(如 find 或 grep)進行搜索,效率受限且難以利用索引。dsh-everything-find 插件通過接入 Windows 上的 Everything 文件名搜索引擎,將 everything_find 工具暴露給 DSH 模型,使其能直接通過搜索語法查詢全盤文件。

是什麼

該插件由 oldHan2423 維護,類別爲聯網工具,採用 MIT 許可證。其核心實現不依賴 HTTP 服務,而是使用 Everything 官方的 ES 命令行接口(es.exe)通過 IPC 與常駐運行的 Everything 進行通信。插件隨包分發 es.exe,安裝後無需額外配置即可使用。

安裝與啓用

使用 dsh plugin 命令將插件安裝到當前 profile:

dsh plugin --profile web add dsh-everything-find

安裝完成後,重新加載 DSH 進程即可使插件生效。

核心功能

插件提供了一個名爲 everything_find 的工具,供模型調用。其核心參數如下:

參數 必填 說明
query 條件 Everything 搜索語法:空格 = AND,\| = OR,! = 排除。支持 ext:ts、dm:today、size:>1mb、path:foo 等語法。不提供時等同於 query: "*"。
path 條件 限定目錄及其所有子目錄。不提供 query 時,只給 path 等價於列出該目錄下所有文件。
directOnly 只列 path 的直系子項,不遞歸(對應 es.exe 的 -parent 參數)。
max 返回條數上限。默認取配置裏的 maxResults(默認 50),單頁最多返回 1000 條。
type any、files 或 folders。
sort 排序字段,支持 name、path、size、extension、date-modified 等。
descending 是否降序。

返回結構爲 JSON,包含 count(本頁條數)、total(匹配總數)和 results(文件列表數組)。

配置

在 DSH 0.1.7 及以上版本中,可以在設置頁面的“插件”區域找到 dsh-everything-find 的配置卡片。

配置項 默認值 說明
esExe 空 指定 es.exe 的絕對路徑。留空時按順序自動探測(配置 > PATH > 隨包副本 > 常見安裝位置)。
esInstance 空 要查詢的 Everything 實例名。留空則使用默認的未命名實例。
timeoutMs 10000 es.exe 等待 Everything 數據庫加載的毫秒數。索引很大時可調大。
maxResults 50 everything_find 未顯式指定 max 時的默認上限。

配置修改爲 volatile 類型,保存後原地生效,無需重啓 DSH。手動指定 esExe 後會顯示“已覆蓋”狀態,可通過“恢復默認”退回自動探測。

典型用法

模型調用 everything_find 工具進行查詢:

// 查找當前目錄下所有 .ts 文件
everything_find({ query: "ext:ts" })

// 限制搜索路徑並限制返回數量
everything_find({ 
  path: "D:\\repo", 
  max: 100 
})

// 只列出指定目錄的直系子項
everything_find({ 
  path: "C:\\Projects", 
  directOnly: true 
})

適用場景與注意

  • 平臺限制:僅限 Windows 平臺。Everything 僅在 Windows 上可用。
  • 前置條件:需要 Everything 常駐運行,且需要 ES 1.1.0.3x 及以上版本(隨包分發爲 1.1.0.38)。
  • 功能範圍:僅匹配文件名與路徑,不支持內容檢索。若 Everything 未建立索引,搜索結果會受限。
  • 結果上限:單頁最多返回 1000 條結果。若需更多結果,應收窄查詢條件(query 或 path)而非單純提高 max。
  • 降級策略:若探測不到 es.exe 或 Everything 未運行,插件不會註冊該工具,文件檢索會自動回退到 DSH 內置的 glob/grep 工具。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜