dsh-hot-search:DSH 常駐熱搜索與中文錯字容錯檢索

前言

在 DeepSeek Harness(DSH)裏做筆記庫、文檔庫或代碼倉輔助時,智能體經常要「按文件名猜路徑」或「按片段搜正文」。若每次檢索都拉起外部進程,延遲和上下文切換都會拖慢對話;對中文筆記,常見錯字(例如把「自動同步」打成「自動同部」)也會讓純字面 grep 直接落空。下面介紹社區插件 dsh-hot-search(維護者 caishzh),它在宿主進程內維護索引,提供五個工具,覆蓋文件名模糊、精確/正則內容檢索、中文容錯內容檢索,以及批量閱讀前的命中聚合。

這是什麼

dsh-hot-search 是面向 DSH 的常駐熱搜索插件:索引活在宿主進程裏,查詢不再爲每次調用單獨 spawn 子進程。一句話定位:中文錯字也能命中(README 示例:自動同部 → 自動同步),並在作者自測場景下達到毫秒級響應;這與 FFF 的 grep fuzzy 對中文實測 0 命中(連正確詞也不行)形成互補——本插件用自研行索引補齊 CJK 容錯內容檢索。

  • 當前版本(package.json):0.1.3
  • 許可證:MIT
  • 環境:Node >= 22;DSH >= 0.2.0-rc.1 < 0.3.0(作者在 0.2.0-rc.2 上實測)
  • 社區目錄:SkillHub 插件頁(分類爲「聯網工具」;插件本身不發起網絡請求,見下文「權限與隱私」)
  • 源碼:github.com/caishzh/dsh-hot-search

核心功能:五個工具

工具 用途 引擎
hot_find 文件名/路徑模糊(子序列 + frecency + git 狀態)。例如 obsidain → obsidian;中文同樣可用 FFF 原生;不可用時降級爲內置子序列匹配
hot_fuzzy 內容檢索,中文錯字容錯。mode=fuzzy(默認)/literal/regex;多詞默認 AND,any=true 爲 OR 常駐行索引(自研)
hot_grep 精確字面 / 正則內容檢索 FFF 原生(要求可用)
hot_plan 按文件聚合命中,輸出命中數、體積、最佳相似度、命中行號,便於決定先讀哪幾篇、分幾批 常駐行索引
hot_stats 索引規模、構建耗時、陳舊程度、FFF 是否可用及降級原因 —

怎麼選(來自 README):記得個大概詞 → hot_fuzzy;記得文件名 → hot_find;記得原話要跑正則 → hot_grep;要批量讀一堆文件 → hot_plan。

默認進入行索引的擴展名爲 .md、.txt、.markdown;單文件與每根目錄的總索引預算等可在配置中調整(見下一節)。

安裝與啓用

安裝命令以 README 爲準,任選其一:

# 方式一:npm / registry
dsh plugin add dsh-hot-search

# 方式二:本地目錄(開發用;必須是絕對路徑)
dsh plugin add D:\path\to\dsh-hot-search

# 方式三:tarball(預構建產物,同樣不需要 allowBuilds 授權)
dsh plugin add D:\path\to\dsh-hot-search-0.1.0.tgz

# 裝完確認這一層加載進來了
dsh --dump-config | Select-String hot-search

裝完直接可用:未配置 roots 時,會索引 DSH 工作區(或進程 cwd)。若要索引自己的筆記庫,在 profile 的 cordis.patch.yml 裏覆蓋插件配置(注意:config 是整體替換,不是深合併):

- id: hot-search
  config:
    roots:
      - path: D:\path\to\your-vault
        label: main
      - path: D:\path\to\another\notes
        label: work

常用配置項(默認值以 README 表格爲準;bundle 內 refreshIntervalMs 顯式設爲 60000,故 --dump-config 可能看到 60 秒而非文檔默認的 120000):

鍵 默認 說明
enabled true 關掉則不註冊任何工具
roots [] 索引根;空則回退 DSH_WORKSPACE → 進程 cwd
extensions .md .txt .markdown 進入行索引的擴展名
maxFileSize 2 MiB 超過則不入索引
maxIndexedBytes 64 MiB 每個根的總預算
refreshIntervalMs 120000(bundle 常爲 60000) 陳舊後自動重建間隔;0 表示不自動重建
fuzzyMaxErrors 0 模糊容錯字數;0 表示按詞長自動
watch true FFF finder 是否監視文件
stateDir "" frecency/歷史庫根目錄
maxResults 50 單次返回上限
promptSection true 是否向系統提示注入用法說明

驗證 CLI 時,README 提醒:不要用 --profile desktop(DSH CLI 會拒絕該內置 profile),可改用例如 --profile demo。

典型用法與自測數據

智能體在對話中通過 DSH 暴露的上述五個工具名調用即可;具體參數以插件 schema 與 README 爲準。作者在一臺 198 篇筆記的 Obsidian 庫(Windows / Node 24.21 / 獨立 workspace)上,mode=fuzzy 每輪 8 次取平均,得到例如:

項目 實測
索引規模 198 文件 / 4485 行 / 278 KB
索引構建 31–36 ms(常駐,進程內只建一次)
hot_fuzzy 中文錯字 自動同部 0.80 ms(命中 自動同步)
hot_fuzzy literal 同步 1.03 ms(15 條)
hot_find obsidain 2.36 ms(3 條)

倉庫內不進宿主的算法自測:

node dsh-hot-search\dev\hot-search-smoke.mjs

適用場景與注意

適合誰:在 DSH 里長期對接本地 Markdown/文本庫(如 Obsidian vault)、需要快速文件名模糊搜、字面/正則 grep,且希望中文輸入有錯字時仍能搜到正文的開發者。

權限與運行方式:插件以當前 DSH 宿主進程的權限讀取 roots 下匹配 extensions 的文本以建內存索引;不傳內容給網絡,插件本身零網絡請求。寫入僅發生在運行時狀態(frecency、FFF history 等),路徑由 stateDir 或 $DSH_HOME/系統 cache 解析;不會寫進被索引的倉庫。安裝前建議自行查看 源碼與 MIT 許可證,確認索引範圍與狀態目錄符合你的合規要求。

原生依賴與降級:hot_find / hot_grep 依賴 Rust 原生庫 @ff-labs/fff-node。加載失敗時插件不會整體崩潰:hot_find 降級內置子序列匹配,hot_grep 報錯並建議改用 hot_fuzzy;hot_fuzzy / hot_plan / hot_stats 不依賴 FFF。README 在 Windows x64 上實測;其他平臺需對應 @ff-labs/fff-bin-<platform>,否則走降級路徑。開發時用 pnpm 時需 pnpm install --node-linker=hoisted,否則 FFF 可能靜默降級。

結尾

dsh-hot-search 把「文件名模糊 + 精確 grep + 中文容錯內容搜 + 批量閱讀規劃」收進 DSH 宿主進程,減少 per-query 進程啓動成本,並針對 CJK 錯字做了 README 明確強調的能力補齊。目錄與文檔:

DSH 生態強調「一切皆插件」;SkillHub 爲社區獨立目錄,與 DeepSeek / 幻方無官方從屬關係。選用任何插件前,以倉庫 README 與本地 --dump-config 爲準覈對版本與配置。

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

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

小夜