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 工具。
羽毛球分组比赛记分
小程序二维码

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

Xiaoye