dsh-tool-everything:为 DSH Agent 接上本机全盘文件名与文档正文检索

前言

在 Windows 上给 DSH Agent 加「找文件」能力,常见做法是再起 HTTP 服务、调 es.exe,或者让模型自己扫目录。链路过长时延迟和权限边界都不好看。下面介绍社区插件 dsh-tool-everything(维护者 shuing):它把 Everything 的文件名索引和本机 Anytxt 的文档内容索引,收成 Cordis 插件里的六个工具,走 FFI 与回环 JSON-RPC,装好并在宿主满足前提后即可在会话里调用。

这是什么

dsh-tool-everything 是 DeepSeek Harness(DSH)的 Cordis 插件,当前资料记载版本为 0.5.3,MIT 许可;仓库说明其为 roxyyn0304/dsh-tool-everything 在 0.4.14 基础上的 fork,继续在 Windows 侧维护。

定位可以概括为两条能力面:

  1. 按文件名搜全盘:通过自带 Everything64.dll,用 koffi 直接调 Everything SDK,走 IPC,无需 es.exe,也无需单独开 HTTP 服务。
  2. 按正文搜 PDF/DOCX 等:通过本机 Anytxt 的 JSON-RPC(仅回环)做内容检索与片段/全文读取;未安装或未建索引时,只影响 anytxt_* 相关工具。

插件在宿主加载时会做能力探测;engines.dsh 声明为 >=0.2.0-rc.1 <1.0.0,资料要求安装 0.5.3 及以上,以避免旧版 peerDependencies 与 DSH 0.2.x 兼容性检查冲突(incompatible-version)。

核心功能

六个工具分工

六个工具无条件注册,无额外开关;两条组件行可在 Cordis 侧分别控制文件名面与内容面。

工具 作用 依赖
everything_search 按文件名全盘搜索(Everything 索引) Everything 正在运行
everything_status 探活:everything_search 是否可用 同上
anytxt_search 按正文搜文档,返回带 ref 的命中页 Anytxt 运行且目录已索引
anytxt_read 按 ref 读片段或整篇抽取文本 同上
anytxt_status 探活:内容检索是否可用 同上
anytxt_sync_index 按目录建库或刷新索引(唯一会改索引状态) 同上

文件名面(Everything)

资料强调的实现要点包括:

  • 响应走 Everything SDK + koffi FFI,毫秒级量级(相对「起服务再查」更短链路)。
  • 搜索表达式支持 Everything 常用算子透传,例如通配符 *.pdf、path:、ext:、size:、regex:、| 或、! 非等;结构化结果含路径、大小、时间、是否文件夹,UI 可渲染搜索卡片。
  • 插件随包携带 x64 的 Everything64.dll(voidtools 签名),不额外拉组件。
  • 0.5.3 起,在 sort:path 下对输出做路径前缀压缩:目录单独成行、文件缩进,用 ..\ 表达上跳;items 与分页不变,目的是在同条查询下减少模型可见字符量。

内容面(Anytxt)

  • 通过本机 Anytxt 索引按正文检索;命中行格式为 ref<TAB>路径<TAB>大小<TAB>时间,ref 是 anytxt_read 的入口。
  • anytxt_search 支持分页、exclude、引号整句语义等;0.5.x 对 modified 列与 everything_search 统一本地时间格式化,并对无效 ref 报错 ANYTXT_FID_NOT_FOUND,避免与「空文档」语义混淆。

安装与启用

前提

  1. Windows 系统。
  2. Everything 正在运行(文件名面)。
  3. Anytxt(ATGUI.exe)在运行且目标目录已建索引(内容面,可选)。
  4. DeepSeek Harness ≥ 0.2.0-rc.1(koffi 为依赖);能否加载以插件内宿主能力探测为准。

安装命令

在 PowerShell 中执行资料记载的命令:

dsh plugin --profile web add "github:shuing/dsh-tool-everything"

装完后 硬刷新浏览器(Ctrl+Shift+R),并 新开一个会话 再使用。

从旧版(例如 0.2.0)升级时,重新执行同一条 add 即可覆盖;若 profile 里留有旧版兼容性豁免(compatibility.json),升级后可删除。

典型用法

会话里由 Agent 按需调用工具,无需你手动记 HTTP 端口。可按下面顺序自检环境,再让模型检索。

1. 探活

先调用 everything_status 确认文件名检索可用;若要用正文检索,再调用 anytxt_status。探活失败时对照前提:Everything / Anytxt 进程与索引目录是否就绪。

2. 按文件名搜索

用 everything_search,search 为必填的 Everything 表达式。资料示例形态包括:

  • 收窄类型:ext:zip、通配 *.pdf
  • 收窄目录:path:C:\code(与 search 内已有 path: 不可同时冲突,否则会报参数错误)
  • 体量过滤:size:>10mb
  • 正则:regex: 双引号形式可承载空格

需要结构化列表时,可配合 sort、offset、maxResults 等参数(具体语义与约束见工具运行时输出与参数说明,0.5.2 起部分约束从静态 description 迁到每次调用结果里,减少提示词占用)。

按路径排序且结果较多时,可开启 sort:path 相关选项以利用 0.5.3 的路径压缩输出(仅改变文本形态,不改变命中集合与分页)。

3. 按正文搜索与续读

  1. 用 anytxt_search 按关键词或表达式查索引,从命中行取第一列 ref。
  2. 用 anytxt_read 传入该 ref 读片段或全文(片段数受服务端上限约束,资料记载 fragments 上限为 8)。

若目录尚未入库,由 anytxt_sync_index 指定目录建库或刷新;这是唯一会更改 Anytxt 索引状态的工具,调用前应明确目录范围。

适用场景与注意

适合谁:在 Windows 本机用 DSH 做开发、整理资料、法务/研报送审文档检索等,需要 Agent 在对话里直接「按名找文件」或「按正文搜 PDF/DOCX」的场景;内容面适合已部署 Anytxt 全站索引的环境。

平台与生态:插件仅面向 Windows;DSH 社区目录(如 SkillHub 插件页)为独立站点,与 DeepSeek / 幻方无官方从属关系,安装来源以你信任的 GitHub 仓库与许可证为准。

权限与安全:工具在 当前 DSH 进程权限 下访问本机索引与 RPC,能搜到的路径即该用户可见范围。安装前建议阅读 shuing/dsh-tool-everything 源码与 MIT 许可;自带 DLL 许可见仓库 native/LICENSE。

破坏性变更提示:自 fork 维护以来,anytxt_search 在 0.5.0 起输出语义与分页规则有变;everything_search 在 path 与 path: 撞车时由静默改为显式失败。升级后若会话里仍按旧版结果格式解析 ref 或翻页,应对照 README「0.4.14 → 0.5.0」一节调整。

结尾

dsh-tool-everything 把 Everything 文件名索引与 Anytxt 正文索引封装成 DSH 原生工具:不依赖 es.exe、不另起 HTTP 服务,六个工具覆盖探活、搜索、读文与索引同步。若你在 Windows 上跑 DSH web profile,可按上文命令安装 0.5.3+,确认 Everything(及可选 Anytxt)运行后,在新会话中交给 Agent 调用即可。

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

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

小夜