在 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 工具。