dsh-company-kb:DSH 本地文件夹知识库与中文混合检索

前言

在 DeepSeek Harness(DSH)里写方案、投标或核对政策时,模型往往拿不到你磁盘上的公司资料。常见做法是把文档拷进对话、或接云端向量库;前者上下文有限,后者要上传、要服务,且未必针对中文检索做过优化。下面介绍社区插件 dsh-company-kb:把本地任意资料目录建成只读索引,在对话里只有用户明确点名时才检索,索引只有手动触发时才同步,检索与预览全在本地完成。

这是什么

dsh-company-kb(GitHub:wu81313-lab/dsh-company-kb)由 wu81313-lab 维护,在 SkillHub 分类为「记忆」。它面向 DSH 0.1.5 及以上,用 SQLite FTS5 做离线索引,融合中文 BM25、二字组合(bigram)与 trigram 子串,经 RRF 合并结果;附带 Web 面板、company-kb 技能,以及五个模型工具(kb_search、kb_read、kb_list、kb_status、kb_session)。插件只读你配置的目录,永不写入原文件夹。

核心功能

索引与检索

  1. 在「设置 → 插件 → 本地知识库」配置 roots(可多个本地目录)。
  2. 手动同步后,插件遍历文件、抽取正文并写入 %USERPROFILE%\.dsh\local-kb\ 下的 index.sqlite(与 settings.json 同目录;Linux 上为 ~/.dsh/local-kb/)。
  3. 检索为全离线:中文分词 BM25 + CJK 二字组合 + trigram → RRF,无外部服务。
  4. 显式调用门禁(explicitOnly 默认 true):未点名、未打开会话开关时,检索工具只返回说明,不会查库。点名方式包括触发词(如「知识库」「资料库」、/kb 等)、消息中出现库内路径/文件名,或输入框右侧「知识库」开关。

文档抽取与预览

  • 支持常见文本与 Office 等格式(由 include / excludeDirs / excludeGlobs 控制;不匹配的文件只记元数据)。
  • .docx / .xlsx / .pptx 由插件解析为排版 HTML 预览(Word 保留标题/表格/图片,Excel 为表格网格,PPT 为分页卡片),不启动 Office、不转 PDF、不写临时文件。
  • 内嵌图片可走 OCR(按 sha1 缓存);架构图、截图中的文字可进入索引。OCR 与旧版 Office(.doc/.xls 等)抽取依赖 Windows 可选能力,缺失时不影响其它格式。
  • 面板内可「用本机程序打开」「在文件夹中显示」;图片与 PDF 可在面板内直接渲染。

同步模型

  • 无定时器:索引仅在面板「立即同步」/「重建索引」、用户明确要求同步、或 CLI node lib/cli.mjs index 时变化。
  • 启动不扫盘,只做 schema 与 stat 体检,提示「索引之后有 N 个文件变化」,不会偷偷重建。
  • 立即同步:按大小与修改时间增量抽取;重建索引:清空索引后全量重抽(改 trigram、分块、OCR 上限等设置后适用)。二者都只动插件索引库,不动原文件。

Web 面板与工具

  • 侧边栏底部「本地知识库」:概况、同步、搜索(含类型/时间/目录筛选)、同步记录、失败文件单独重抽等;API 走同源 /company-kb-api/*(默认仅回环)。
  • 面板不可用时,工具与索引仍可用。
工具 作用
kb_search 混合检索,可按 dir / ext / days 限定
kb_read 读抽取正文(分页);open:true 用系统默认程序打开原文件
kb_list 浏览目录
kb_status 状态与失败清单;action=now/rebuild 手动同步
kb_session 本会话检索开关 on/off/status

安装与启用

环境要求:DSH 0.1.5+,Node.js ^22.19.0 || >=24.0.0(见 package.json engines)。

从 GitHub 安装(资料原文命令):

dsh plugin --profile <你的 profile> add github:wu81313-lab/dsh-company-kb

也可克隆到 profile 的 plugins/ 后本地安装:

cd <DSH_HOME>/profiles/<你的 profile>
git clone https://github.com/wu81313-lab/dsh-company-kb.git plugins/dsh-company-kb
dsh plugin --profile <你的 profile> add ./plugins/dsh-company-kb

确认 bundle 已加载:

dsh --profile <你的 profile> --dump-config | findstr company-kb

重启 profile 并刷新页面。随后在「设置 → 插件 → 本地知识库」填写 roots,打开面板点「立即同步」完成首次建库(首次含 OCR 时可能需数分钟)。

卸载:

dsh plugin --profile <你的 profile> remove dsh-company-kb

并从 dsh.profile.bundles 移除对应行;可选删除 ~/.dsh/local-kb,原资料目录不受影响。

典型用法

  1. 配置 roots 后首次建库:面板「立即同步」,或:
node lib/cli.mjs index

(在插件目录下执行 CLI。)

  1. 对话中点名检索,例如:
  • 用知识库查一下 XX 政策的条款要求
  • 按 模板/技术方案书模板.docx 写一份 XX 项目方案

或打开输入框右侧「知识库」开关。

  1. 资料更新后手动同步:面板「立即同步」、说明「同步一下知识库」,或再次运行 node lib/cli.mjs index。

不点名且不打开开关时,模型侧不会实际检索资料。

常用配置项(运行时写在 ~/.dsh/local-kb/settings.json,热生效)包括:roots、explicitOnly、triggers、trigram、ocrEmbeddedImages、autoSync(默认 'off' 纯手动;'watch' 为事件驱动增量,仍无定时器)等;启动默认值见插件内 cordis.patch.yml。

适用场景与注意

适合:需要在 DSH 对话中引用本地公司/项目资料、希望中文检索与 Office 预览离线完成、且能接受「手动同步 + 显式点名」的团队或个人。

注意:

  • 插件以当前 DSH 进程权限读盘;roots 应只指向你允许被索引的目录。安装前请阅读 GitHub 仓库 源码与 MIT 许可证。
  • 大文件本地解析受 maxFileBytes(默认 256MB)限制;PDF/图片 OCR 另有页数与宽度上限。
  • 重建索引期间结果可能变少,宜在非检索高峰操作;可随时中止,下次同步续做。

结尾

dsh-company-kb 把「本地资料目录 → 中文混合检索 → 按需引用」收进 DSH 插件:手动同步、显式门禁、零外部检索服务,并带面板预览与 OCR 内嵌图。社区目录页:SkillHub - dsh-company-kb;源码与完整说明:github.com/wu81313-lab/dsh-company-kb。

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

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

Xiaoye