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 为准核对版本与配置。

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

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

小夜