dsh-everything:用 Everything 索引为 DSH 智能体提供毫秒级全盘文件搜索

前言

在 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 语法查询,可选限制目录、分页、排序、正则、大小写、仅文件/仅文件夹、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:thisweek
  • size:>500mb
  • notes !archive
  • 配合 sort: date-modified-descending 与 dm:thisweek 看近期改动

短语与引号、非 ASCII 文件名等细节见 GitHub README 中的 Phrase quirks 与 Encoding 说明。

自动安装与安全校验(默认开启)

autoInstall: true(默认)且本机缺少后端时,插件会:

  1. 从 voidtools 下载页解析最新稳定版 ES CLI,解压 es.exe 到 %LOCALAPPDATA%\dsh-everything\bin( per-user,无需管理员)。
  2. 优先 winget install voidtools.Everything;若无 winget 则下载官方安装包静默安装——任一路径可能出现一次 UAC。
  3. 启动 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,例如:

  1. 用 query 写 Everything 表达式(空格为 AND,| 为 OR,! 为 NOT)。
  2. 用 path 限制到某棵目录子树(绝对路径)。
  3. 仅需是否存在或规模时设 countOnly: true。
  4. 结果过多时用 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 后端。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye