dsh-plugin-everything:把本机 Everything 索引接到 DSH Agent

前言

在 DeepSeek Harness(DSH)里,Agent 默认多半只在工作区里按目录逐层找文件。跨盘符、定位某个软件的安装目录、或翻历史下载路径时,往往要多次 Glob / Grep,耗在遍历上。Windows 上若已用 voidtools Everything 维护 NTFS 索引,全盘匹配通常只需几毫秒。本插件由 keyblues 维护,把 Everything 的查询能力注册成 Harness 工具,一次调用即可返回完整路径、大小与修改时间。

这是什么

dsh-plugin-everything 是 DSH 社区插件(npm 包名同仓库名),分类上常归入联网/本机工具类能力:它不接远程 API,而是经 Everything SDK 的 IPC 读取本机 Everything 进程内的索引。仓库:https://github.com/keyblues/dsh-plugin-everything;目录页:https://www.skillhub.cn/plugins/keyblues/dsh-plugin-everything。当前 npm 版本 1.0.3,许可证 MIT,仅支持 Windows x64。

核心功能

安装完成后,Harness 会多出两个工具:

工具 作用
everything_search 按 Everything 语法搜索全盘文件/文件夹,返回路径、大小、修改时间、命中总数
everything_status 检查 Everything 是否可达、客户端版本、索引条目数、SDK DLL 路径

everything_search 主要参数:query(必填)、max(1–500,默认跟随配置 maxResults 50)、sort(name / path / size / date-created / date-modified / recent)、descending。

Everything 未运行时,工具会给出明确提示;可在配置里开启 autoStart 由插件尝试拉起 Everything。

前置条件

  1. 在 Windows x64 上运行 DSH(声明支持的 DSH 范围为 >=0.2.1-rc.2 <0.3.0-0,README 实测 Desktop 0.2.1-rc.3)。
  2. 本机已安装 voidtools Everything 并保持运行(README 写明 1.4 或更新,实测 1.4.1.1032)。不需要 Everything Service,也不需要 HTTP/ETP 服务器。
  3. 插件以当前 DSH 进程权限访问本机;安装前建议阅读仓库源码与 MIT 许可证,确认符合你的环境策略。

安装与启用

桌面端(推荐):打开 DSH 桌面端 → 插件 → 查看安装任务,在输入框填写包名即可。

dsh-plugin-everything

指定版本时写:

dsh-plugin-everything@1.0.3

安装器从 npm registry 拉取;装完后 everything_search / everything_status 立即出现,无需重启 Harness。安装位置在 ~/.dsh/profiles/desktop。

CLI(需先初始化 desktop profile,并在 Desktop 完全退出后执行):

dsh plugin --profile desktop add dsh-plugin-everything

更新到最新版:重复执行上述 add;固定版本用 dsh-plugin-everything@<version>。

离线或固定版本时,可从 GitHub Releases 下载 dsh-plugin-everything-1.0.3.tgz,在桌面端安装框填该文件的绝对路径,或让 Agent 执行 plugin_manager install_bundle target=<tgz 路径>。

卸载:Agent 执行 plugin_manager remove_bundle target=dsh-plugin-everything,或在 Settings → Plugins 中停用/移除。

典型用法

Agent 调用 everything_search 时,query 使用 Everything 搜索语法。README 中的示例如下:

notepad.exe                          # 文件名包含 notepad.exe
report 2024 ext:pdf                  # 2024 + PDF
file:*.md path:"C:\work"             # 指定目录下的 markdown
folder:node_modules                  # 文件夹名
C:\Windows\ notepad                  # 以反斜杠结尾 = 限定在此目录内
size:>10mb dm:today                  # 大于 10MB 且今天修改
中文文件                              # 中文/Unicode 文件名

完整语法见 Everything 搜索语法。

排查环境时可先调用 everything_status,确认 Everything 可达与索引规模。

配置

在 profile 的用户 patch 层 cordis.patch.yml 中覆盖插件行,例如:

- id: everything
  config:
    maxResults: 50          # 默认返回条数(1-500)
    queryTimeoutMs: 10000   # 单次查询超时;超时会终止 SDK worker,下次查询自动重建
    autoStart: false        # Everything 未运行时是否自动启动
    everythingPath: 'C:\Program Files\Everything\Everything.exe'
    sdkPath: ''             # 留空使用插件自带的 native/Everything64.dll

autoStart: true 时,IPC 不可用且 everythingPath 指向的 exe 存在,插件会启动 Everything,等待约 2.5 秒后重试一次。

实现要点(便于评估)

插件 bundle 内自带官方 Everything64.dll 与 koffi FFI,安装时无需联网编译。查询在 worker_threads 中执行并设超时,避免 Everything SDK 阻塞 Host 事件循环。DSH 版本不兼容时,安装或启动阶段会被拒绝或跳过;若需冒险运行,README 提供了 allow-version 与插件管理器豁免方式,升级 DSH 后应先确认插件是否已发布兼容版本。

适用场景与注意

  • 适合:在 Windows 上已习惯 Everything、希望 Agent 直接按文件名/路径/大小/时间在全盘定位文件,而不是长时间递归工作区。
  • 限制:仅 Windows x64;结果是索引快照,新建或移动的文件可能有秒级延迟;结果可能包含 $Recycle.Bin 等目录,可用 Everything 排除语法过滤。
  • 权限:工具以 DSH 当前用户权限运行,能搜到的路径与你在资源管理器中可见范围一致;敏感目录是否暴露取决于本机索引与语法,使用前请自行评估。

结尾

dsh-plugin-everything 把 Harness Agent 的文件定位从「工作区遍历」扩展到「本机 Everything 索引查询」,适合已在 Windows 上部署 Everything 的 DSH 用户。进一步了解可查看 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜