前言¶
在 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 側維護。
定位可以概括爲兩條能力面:
- 按文件名搜全盤:通過自帶 Everything64.dll,用 koffi 直接調 Everything SDK,走 IPC,無需 es.exe,也無需單獨開 HTTP 服務。
- 按正文搜 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,避免與「空文檔」語義混淆。
安裝與啓用¶
前提¶
- Windows 系統。
- Everything 正在運行(文件名面)。
- Anytxt(
ATGUI.exe)在運行且目標目錄已建索引(內容面,可選)。 - 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. 按正文搜索與續讀¶
- 用
anytxt_search按關鍵詞或表達式查索引,從命中行取第一列ref。 - 用
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 調用即可。