在 DeepSeek Harness (DSH) 中,默認的 @ 文件引用補全通常侷限於當前工作區。若需訪問機器上任意文件,或利用 Everything 搜索引擎實現毫秒級響應,需要額外的工具。dsh-file-reference-everything 插件提供了 ctx.fileReferences 的全盤實現方案。
插件簡介¶
dsh-file-reference-everything 是 lumose0 維護的一個 DSH 插件。它將智能體的文件引用能力從“當前工作區”升級爲“機器上任意文件”。當 Everything 運行時,它通過 es.exe 命令行客戶端提供毫秒級的原生搜索;若 Everything 未運行,插件會使用其內置的、跨平臺的有限索引作爲後備方案。
核心功能¶
- 全盤文件引用實現:完整實現了
ctx.fileReferences接口。 - Everything 即時搜索:通過
es.exe命令行客戶端響應查詢,速度極快。 - 跨平臺後備索引:在 macOS 和 Linux 上,當沒有 Everything 時,使用內置的有限磁盤索引。
- 查詢支持:支持模糊搜索和正則表達式。
- 工作區優先:工作區結果始終被合併,並排在全盤搜索結果之前。
- 文本引用指引:提供文件路徑文本引用,實際讀取內容需依賴
read工具。
安裝與啓用¶
推薦安裝到 web 配置文件中,因爲 @ 文件補全 UI 僅存在於該配置下。
dsh plugin --profile web add github:lumose0/dsh-file-reference-everything
安裝注意事項:
* 該包包含 prepare 腳本,會在安裝時從源碼構建 lib/。如果你使用 pnpm >= 10,首次添加可能會失敗,需要在 pnpm-workspace.yaml 中添加:
allowBuilds:
dsh-file-reference-everything: true
然後重新運行安裝命令。這僅允許在安裝時執行代碼,建議在允許前審查源碼。
- 如果安裝到非
web配置文件,可能會看到無害的警告patch: entry "file-reference-local" not found。
典型用法¶
查詢語法位於 @ 之後(路徑含空格請使用 @")。
- 模糊搜索:在合併的工作區與全盤索引中搜索。
- 示例:
@config
- 示例:
- 正則匹配:使用正則表達式。
- 示例:
@re:pattern或@regex:pattern
- 示例:
- 絕對路徑瀏覽:指定絕對路徑。
- 示例:
@D:/...、@//server/share/...、@~/...
- 示例:
- 相對路徑瀏覽:基於代理當前工作目錄。
- 示例:
@src/comp
- 示例:
注意:插件僅提供文本路徑引用。當模型需要讀取文件內容時,必須調用 read 工具。插件會向模型提供一段系統提示,告知其使用 read 工具,並在未讀取前不得聲稱已查看文件。
注意事項與限制¶
- 僅文本引用:選中的路徑是文本引用,讀取操作仍需
read工具支持,且受部署環境的文件系統權限限制。 - 後備索引限制:全盤後備索引是有限的(受
globalMaxEntries限制)且是惰性的(僅在查詢間隔超過refreshSeconds時重建)。它不支持.gitignore語義,僅跳過excludedDirectories中列出的目錄。 - es.exe 衝突:如果查詢以
-開頭,可能會被es.exe解析爲命令行選項而非搜索詞。 - 重複條目:同一個文件可能同時出現在工作區相對路徑和全盤絕對路徑結果中。
- 固定評分:對於插件無法匹配的通配符等特定語法,評分是固定的,可能不如精確匹配的排名準確。
適用場景¶
適合需要在 DSH 智能體中快速定位系統配置文件、第三方庫代碼或任意磁盤文件的場景。在使用前,請確保對插件源碼進行審查,並檢查其許可證(MIT)是否符合你的項目要求。
總結¶
dsh-file-reference-everything 通過替換 DSH 默認的文件引用提供者,將文件搜索範圍擴展到了整個機器。它利用 Everything 提供極致性能,同時提供跨平臺的回退機制,並確保工作區文件始終優先級最高。