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