前言¶
在 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