前言¶
在 DeepSeek Harness(DSH)里,智能体要定位某个文件时,常见做法是递归扫目录或用 glob。盘里文件一多,这类扫描会慢,也会占用不少 I/O。Windows 上 voidtools 的 Everything 维护本地索引,按名称和路径检索通常是毫秒级。
dsh-everything 是社区维护的 DSH 插件(维护者 S1n7T),向配置里的每个智能体注册 everything_search 工具:查询走 Everything 的预建索引,而不是全盘递归。插件在 npm 上发布为 dsh-everything(当前资料中版本 1.4.1,MIT 许可证);GitHub 仓库见文末链接。
这是什么¶
一句话:把 Everything 的索引能力接到 DSH 工具链上,让智能体用结构化参数做全盘(在索引覆盖范围内)文件与文件夹搜索。
平台限制明确:Everything 仅支持 Windows;在其他系统上插件会注册占位工具,调用时返回清晰失败说明,不会假装可用。
核心功能¶
工具 everything_search¶
智能体通过该工具提交 Everything 语法查询,可选限制目录、分页、排序、正则、大小写、仅文件/仅文件夹、countOnly 等。返回 JSON(含 query、total、results、channel 等),并在对话里渲染为搜索路径卡片。
| 能力 | 说明 |
|---|---|
| 双通道 | 优先 Everything 1.4+ 内置 HTTP JSON 服务(仅 loopback,默认由插件按需启用);HTTP 表达不了的查询回退官方 es.exe 命令行 |
| 自动装后端 | 默认 autoInstall: true 时,缺组件时插件自行拉取 ES CLI、安装 Everything、必要时启动并等待 IPC(详见 README) |
| 索引范围 | 只搜文件名与路径,不搜文件内容;内容检索仍用 DSH 的 grep 等能力 |
| 覆盖范围 | 结果跟随本地 Everything 索引(NTFS/reFS 及手动加入索引的路径;FAT/exFAT 可移动盘、网络共享通常不在索引内) |
典型查询示例(来自官方文档):
report ext:docx*.sln dm:thisweeksize:>500mbnotes !archive- 配合
sort: date-modified-descending与dm:thisweek看近期改动
短语与引号、非 ASCII 文件名等细节见 GitHub README 中的 Phrase quirks 与 Encoding 说明。
自动安装与安全校验(默认开启)¶
autoInstall: true(默认)且本机缺少后端时,插件会:
- 从 voidtools 下载页解析最新稳定版 ES CLI,解压
es.exe到%LOCALAPPDATA%\dsh-everything\bin( per-user,无需管理员)。 - 优先
winget install voidtools.Everything;若无 winget 则下载官方安装包静默安装——任一路径可能出现一次 UAC。 - 启动 Everything 并在搜索前等待其 IPC。
下载默认直连,系统代理仅作回退;与 setup.js 中记录的已知版本一致时用 SHA256 校验,更新版本则依赖 voidtools Authenticode 签名;校验失败则安装失败(fail closed)。插件还会维护自装的 es.exe 版本,不会改动用户自行管理的 Everything/ES 安装。
若希望自己装后端,可设 autoInstall: false,并按 README 中的 PowerShell 示例安装 Everything 与 ES。
安装与启用¶
在 DSH 会话中,让智能体调用插件管理器,或使用文档中的安装命令:
plugin_manager install_bundle with target = dsh-everything
激活后 bundle 名为 dsh-everything,并为 profile 内每个智能体注册 everything_search。也可从 npm 包目录安装同一 bundle。
运行环境:Node >= 18(见 package.json 的 engines)。
配置要点¶
在 cordis.patch.yml(或 profile 的 patch 层)中编辑插件 config。常用项包括:
| 键 | 默认 | 含义 |
|---|---|---|
autoInstall |
true |
缺失时自动下载安装 Everything + ES CLI |
autoStart |
true |
Everything 未运行时启动并等待 IPC |
installDir |
%LOCALAPPDATA%\dsh-everything |
自装 ES CLI 目录 |
maxResults |
100 |
单次默认结果上限(工具参数可覆盖,上限 1000) |
timeoutMs |
8000 |
单次调用超时(毫秒) |
httpPort |
5151 |
HTTP 通道端口;0 可完全禁用 HTTP |
httpAutoEnable |
true |
HTTP 服务默认被策略锁定时,会话内一次性改 Everything 配置、仅绑定 127.0.0.1 并重启 GUI |
esPath / everythingPath |
自动检测 | 手动指定 es.exe / Everything.exe |
Everything 自带 HTTP 服务默认关闭且被安装包锁定;httpAutoEnable: true 时由插件按文档说明解锁并仅限本机访问。HTTP 通道支持 plain 查询、path/类型过滤、countOnly、分页及部分排序键;dateCreated、更多排序键、以及带 path 或类型过滤的 regex 等会自动走 es.exe 通道。
典型用法¶
智能体在需要「先找到文件再读/改」的流程中调用 everything_search,例如:
- 用
query写 Everything 表达式(空格为 AND,|为 OR,!为 NOT)。 - 用
path限制到某棵目录子树(绝对路径)。 - 仅需是否存在或规模时设
countOnly: true。 - 结果过多时用
maxResults与offset分页。
参数类型与返回值字段以 README 工具表为准;channel 为 "http" 或 "es",便于排查走的是哪条路径。
适用场景与注意¶
适合:在 Windows 开发机上跑 DSH,项目、构建产物、日志分散在多盘,希望智能体快速按名/路径定位文件,而不是长时间 glob。
务必注意:
- 插件与 DSH 同一进程权限运行;启用
autoInstall/httpAutoEnable会改本机 Everything 配置、下载并执行安装包。安装前应阅读 GitHub 源码 与 LICENSE,确认符合你的安全策略。 - 非 Windows 平台只有明确失败的 stub,不能替代 Linux/macOS 上的文件搜索方案。
- 社区插件目录 SkillHub 上的 dsh-everything 页 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,本文事实以仓库 README 与 npm 包元数据为准。
结尾¶
dsh-everything 把 Everything 的索引接到 DSH 工具面:在 Windows 上为智能体提供 everything_search,毫秒级按路径与文件名检索,HTTP 与 es.exe 双通道互补,并可选自动 provisioning 后端。