dsh-tool-everything:用 Everything HTTP 接口做毫秒级本机文件检索

前言

在 DSH 里让模型找本机文件,常见做法是走 Shell 递归 find/dir,或依赖 IDE 工作区索引。前者在大盘上慢、也吃磁盘;后者往往只覆盖当前打开的项目。Windows 上若已用 Everything(voidtools)维护 NTFS 文件名索引,查询本身是毫秒级、不必扫目录——Everything 读主文件表建索引,并用 USN Journal 增量更新。

dsh-tool-everything 是维护者 leolee9086 的 DSH 联网工具类插件:不自己建索引,只把模型的检索请求转成 Everything 自带的 HTTP 调用,并把结果整理成 Host 工具输出。下面介绍它提供什么能力、如何启用 Everything 与插件,以及整机检索与工作区检索在审批上的差别。

这是什么

  • 定位:DSH 工具插件,通过 Everything 的 HTTP 接口检索本机已索引的文件名与路径。
  • 维护者:leolee9086;源码在 GitHub leolee9086/dsh-tool-everything(包体也位于 SAC_search 仓库的 dsh-tool-everything/ 子目录)。
  • 分类:联网工具(目录页:SkillHub 插件页)。
  • 许可证:MIT;当前 package 版本 0.2.0(以 package.json 为准)。

插件暴露三个 Host 工具:everything_search(整机索引,默认需审批)、everything_workspace_search(范围钉在当前会话工作区,免审批)、everything_status(探测 Everything 是否可用)。

核心功能

三个 Host 工具

工具 范围 审批(默认 approvalMode: auto)
everything_search 整机 Everything 索引 会话为 danger-full-access 时直接调用;workspace-write / read-only 时走 DSH 审批;读不到权限服务则 fail closed
everything_workspace_search 仅 workspaceRoot 及其子路径(可 subpath) 默认免审批;解析不到工作区根时 fail closed;approvalMode: always 仍会申请
everything_status 健康/探测 按插件实现与测试覆盖为准

everything_search 不提供「只搜工作区」的参数;任何整机检索在非完全文件权限下都会过审批。工作区工具没有 path 参数,范围由插件与会话沙箱策略同源解析,不接受调用方用绝对路径、UNC、..、引号或 query 中的 | 扩大范围(| 是 Everything 的 OR,会让范围限定失效)。

审批与会话文件权限

Everything 索引覆盖整机路径,且官方 HTTP 文档说明 indexed 条目默认可被搜索并下载(web server)。插件在 tools/pre-execute 读取 ctx.sandboxPolicy.resolve({ session }).mode(显式覆盖 > 会话 sandbox/mode > 部署默认),再决定 { kind: "ask" } 或直接放行。DSH 负责审计与裁决;插件不自行放行违规调用。

config.approvalMode 可选 auto(默认)、always(任何权限都问)、never(从不问,文档不建议)。

审批摘要会把本次 query 等参数放在最前面,并包含 path/ext/probe/maxResults/offset/sort 与 regex/matchCase/wholeWord/ascending;超过 400 字会截断。

查询语法与便捷参数

query 使用 Everything 自带语法,插件不解析。在 Everything 1.4.1.1032 HTTP 接口上实测:ext:、path:、folder:、size:、dm:、file: 有效;name: 无效(应直接写文件名)。

path、ext 会拼进查询串(1.4 HTTP 不认独立目录/扩展名参数)。path 会自动补末尾 \ 或 /,避免 C:\Program Files 误匹配 C:\Program Files (x86) 等同前缀目录。

结果通过 path_column=1、size_column=1、date_modified_column=1 请求;date_modified 为 Windows FILETIME,需换算成毫秒,不能直接当 Unix 时间戳。

前置条件:打开 Everything HTTP 服务

插件零 npm 运行时依赖,但要求本机 Windows + 已安装并运行 Everything,且 HTTP 服务已开启(默认关闭)。

在 Everything 中:

  1. 工具 → 选项 → HTTP 服务器,勾选「启用 HTTP 服务器」;
  2. 监听端口与插件 config.port 一致(默认 8080);
  3. 绑定限定为 127.0.0.1,不要暴露到局域网;
  4. 取消勾选「允许下载文件」。

也可编辑 %APPDATA%\Everything\Everything.ini:

http_server_enabled=1
http_server_bindings=127.0.0.1
http_server_port=8080
http_server_allow_file_download=0

改完后重启 Everything。验证 HTTP 是否可用:

curl "http://127.0.0.1:8080/?search=Everything.exe&json=1&count=1&path_column=1"

文档注明在 Everything 1.4.1.1032 上实测;1.5 的 HTTP 参数与 1.4 有差异,本插件按 1.4 行为实现。

安装与启用

需要 Node.js 22.19.0 或更高。

开发时可将 dsh-tool-everything/ 目录放入 $DSH_HOME/plugins/,或在 profile 里 link。在该 profile 的 cordis.patch.yml 中挂载(已有 insert 列表时只追加):

- insert:
    - id: dsh-tool-everything
      name: dsh-tool-everything
      config:
        host: 127.0.0.1
        port: 8080

包内自带 cordis.patch.yml,也可作为 bundle 挂载:

- name: dsh-tool-everything

重载插件或重启 DSH 后生效。安装前请自行阅读源码与 MIT 许可证;插件以当前 DSH 进程权限运行,并会访问本机 127.0.0.1 上的 Everything 服务。

配置项

键 默认 说明
host 127.0.0.1 Everything HTTP 地址
port 8080 与 Everything 选项一致
timeoutMs 15000 单次查询超时
defaultResults 50 未传 maxResults 时的条数
maxResults 500 单次返回上限
maxQueryLength 4096 查询串长度上限
approvalMode auto auto / always / never
approvalReason 内置 自定义审批说明

典型用法

模型或 Host 侧可调用(示例来自 README):

everything_search(query="ext:psd 效果图")
everything_search(query="报价", path="D:\\工作", ext="xlsx;docx", maxResults=20)
everything_search(query="^方案.*\\.pdf$", regex=true, sort="date_modified", ascending=false)
everything_workspace_search(query="规则", ext="js;md")
everything_workspace_search(query="报价", subpath="docs\\报价")
everything_status(probe="Everything.exe")

工作区检索用 subpath 限定工作区内的相对子目录;整机检索用 path 限定目录(插件会收紧尾部分隔符)。

适用场景与注意

适合:已在 Windows 上使用 Everything、希望 DSH 智能体在可控审批下查整机文件名,或在当前工作区内免审批快速找配置/文档/代码文件。

务必注意:

  • 仅 Windows;Everything 未运行则只能报错,插件不建索引。
  • 返回条数受 Everything count 限制,超出部分不返回(输出中会提示剩余条数)。
  • 工作区根来自会话(cwd 等);会话更换工作目录需新开会话,插件不缓存。
  • 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态是「一切皆插件」,安装第三方插件前请核对来源与权限策略。

维护者提供的本地测试(不要求本机装 Everything):

pnpm test
pnpm run check

结尾

dsh-tool-everything 把 Everything 的毫秒级文件名索引接进 DSH:整机用 everything_search 并跟会话文件权限走审批,项目内用 everything_workspace_search 把范围钉在工作区。启用前在 Everything 侧打开仅本机绑定的 HTTP 服务并关闭文件下载,端口与插件配置对齐即可。

  • 目录页:https://www.skillhub.cn/plugins/leolee9086/dsh-tool-everything
  • GitHub:https://github.com/leolee9086/dsh-tool-everything
羽毛球分组比赛记分
小程序二维码

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

Xiaoye