前言¶
在 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 中:
工具 → 选项 → HTTP 服务器,勾选「启用 HTTP 服务器」;- 监听端口与插件
config.port一致(默认 8080); - 绑定限定为 127.0.0.1,不要暴露到局域网;
- 取消勾选「允许下载文件」。
也可编辑 %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