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 調用即可。

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

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

小夜