在构建基于 DSH 的智能体或工具流时,模型往往受限于当前工作区,或需要手动执行外部命令来检索文件。这导致搜索效率低、语法门槛高。为解决这一问题,可以使用基于 voidtools Everything 引擎的文件搜索工具。
该插件为 DSH 模型提供了一个名为 everything_search 的工具,利用 Everything 的 NTFS 索引,在 Windows 上实现毫秒级的全盘文件检索。它支持完整的 Everything 搜索语法,并允许模型直接获取文件的元数据信息,无需开发者编写复杂的脚本。
前置条件¶
使用该插件前,需满足以下环境要求:
- 操作系统:仅支持 Windows 系统(基于 NTFS 卷)。
- 软件依赖:必须安装并运行 Everything 软件。
- 命令行工具:
es.exe(Everything 的命令行客户端)必须在系统 PATH 环境变量中。
验证环境是否就绪:
es -h
若能返回帮助信息,则环境配置正确。
安装与启用¶
通过 DSH 的插件管理器安装:
dsh plugin --profile web add "github:zhourenke/dsh-tool-everything"
安装完成后,重启 DSH 进程,模型即可调用 everything_search 工具。
核心功能¶
该工具提供以下能力:
- 全盘搜索:基于 Everything 索引,不局限于当前工作区,支持毫秒级搜索。
- 全文检索:支持
content:语法按文件内容搜索文件,但必须限定路径。 - 元数据返回:支持返回文件大小、创建/修改/访问时间、扩展名、属性等信息。
- 完整语法:支持 Everything 的通配符、布尔运算、正则表达式等语法。
- 结果计数:自动补全
total字段,返回匹配总数。 - 快速查询:基于索引查找,非目录扫描,响应速度极快。
典型用法¶
模型在调用工具时,可以直接使用上述语法。以下是几种典型场景:
-
查找 D 盘下大小超过 1GB 的文件:
query: size:>1gb, path: D:\ -
查找
C:\Projects目录下包含TODO关键词的文本文件:
query: content:TODO, path: C:\Projects -
查找 2024 年 7 月修改过的所有 PDF 文件:
query: *.pdf dm:2024-07-01..2024-07-31
注意事项与限制¶
使用时需注意以下几点:
- 路径限定:使用
content:全文搜索时,必须通过path参数明确限定搜索范围,否则会被拒绝或自动收窄。 - 硬链接问题:硬链接文件可能无法被搜到(这是 Everything 实时索引的特性),需在 Everything 中执行 Force Rebuild。
- 语法限制:正则模式不支持
(...)分组;内联path:语法不支持含空格的路径。 - 结果标识:搜索结果中,文件夹以
\结尾;无扩展名的文件返回扩展名空字符串。
总结¶
zhourenke/dsh-tool-everything 适合需要在本地 Windows 环境进行深度、快速文件检索的场景。它将 Everything 的强大索引能力封装为 DSH 工具,降低了模型调用文件系统的门槛。更多细节可参考插件目录或 GitHub 仓库。