前言¶
在 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)。插件只读你配置的目录,永不写入原文件夹。
核心功能¶
索引与检索¶
- 在「设置 → 插件 → 本地知识库」配置
roots(可多个本地目录)。 - 手动同步后,插件遍历文件、抽取正文并写入
%USERPROFILE%\.dsh\local-kb\下的index.sqlite(与settings.json同目录;Linux 上为~/.dsh/local-kb/)。 - 检索为全离线:中文分词 BM25 + CJK 二字组合 + trigram → RRF,无外部服务。
- 显式调用门禁(
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,原资料目录不受影响。
典型用法¶
- 配置
roots后首次建库:面板「立即同步」,或:
node lib/cli.mjs index
(在插件目录下执行 CLI。)
- 对话中点名检索,例如:
用知识库查一下 XX 政策的条款要求按 模板/技术方案书模板.docx 写一份 XX 项目方案
或打开输入框右侧「知识库」开关。
- 资料更新后手动同步:面板「立即同步」、说明「同步一下知识库」,或再次运行
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。