前言¶
在 DSH 里做 Agent 开发时,模型上下文往往装不下整盘资料:把大量 PDF、Office 文档整篇塞进会话既费 token,也不利于按关键词定位。常见做法是手工整理少数 Markdown,或靠外部云盘搜索,但本机 C: / E: 里散落的历史文件很难被 Agent 稳定引用。
下面介绍的 dsh-local-kb(维护者 hql6662)把指定磁盘下的文档抽成纯文本,写入本机 SQLite FTS5 trigram 索引;通过 DSH 侧栏搜索面板人机检索,并向 Agent 暴露名为 kb 的工具,默认只返回短片段与元信息,按需才读单篇正文。插件在 SkillHub 目录分类为「记忆」,当前 GitHub 星标为 0,版本 0.2.0(MIT)。
这是什么¶
dsh-local-kb 是 DeepSeek Harness 的本地知识库插件:扫描本机盘符(README 示例为 C: / E:),支持 PDF、Markdown、TXT、Word、PPT、Excel、EPUB、MOBI、CHM、RTF、HTML、JSON、CSV 等格式的正文抽取,在 kb.sqlite 中建全文索引;索引列包含 文件名、正文、完整路径,因此即使用户不记得文件名或正文措辞,仍可按目录名、路径片段(如 Desktop、实验三)检索,或用浏览模式按修改时间翻最近文件。
设计原则写得很直白:省 token——检索在脚本与 SQLite 中完成,搜索结果只给 snippet;Agent 只有显式 action=get 时才读单篇,默认截断 8000 字(上限可配到 40000),不会把整库灌进上下文。
核心功能¶
索引与存储¶
| 项 | 路径(README 示例环境) |
|---|---|
| SQLite 索引 | C:\Users\hql\.dsh\local-kb\kb.sqlite |
| 配置 | C:\Users\hql\.dsh\local-kb\config.json |
| 构建报告 | C:\Users\hql\.dsh\local-kb\build_report.json |
| AI 标注(独立库) | C:\Users\hql\.dsh\local-kb\labels.sqlite |
| 构建脚本 | tools/build_kb.py |
| 查询 CLI | tools/kb_query.py |
重建索引可在面板「设置」中调整扫描磁盘、单篇最大字数、Python 解释器后点「重建索引」;后台重扫约 1–5 分钟,期间旧索引仍可用。README 记载示例库约 23,047 篇文档(含电子书与旧 Office 正文),并带规则预打的 useful / topic 标签。
侧栏面板¶
面板顶部展示文档数、已索引字数、索引大小、构建时间与就绪状态。搜索支持文件名、正文、路径;中文三字以上走 FTS5 trigram,短词退化为文件名加开头匹配。「浏览」在无关键词时按修改时间倒序列出全库,可叠加类型、磁盘、路径包含、时间范围(7 / 30 / 365 天)、排序等筛选。结果卡片可打开预览抽屉(默认 8000 字片段),并支持打开文件、资源管理器中显示、复制路径。
每篇文档有两类内容识别标签:useful(high / possible / low)与 topic(study / work / code / life / reference / other)。规则基线在 build_kb.py 的 classify_labels() 中零模型成本写入;拿不准的可通过面板「AI 批量识别」唤起 DSH Agent,用 kb 工具按路径与开头片段批量复核,标注存在独立的 labels.sqlite(主键为路径,重建索引不丢 AI 标注)。
Agent 工具 kb¶
常用 action 如下(完整表见仓库 README):
| action | 用途 |
|---|---|
search(默认) |
全文检索,参数含 q、limit、ext、path、days、useful、topic 等 |
browse |
无关键词按时间浏览,可叠加筛选 |
stats |
索引健康与分组统计 |
get |
按 id 读单篇正文,max 默认 8000 |
candidates / label / label-status |
AI 批量识别与写回标注 |
rebuild / rebuild-status |
后台重建与进度 |
示例(来自 README):
kb {action:"search", q:"HarnessMM", ext:"pdf"}
kb {action:"get", id:21222, max:8000}
kb {action:"browse", path:"Desktop", days:30, ext:"doc", sort:"mtime", limit:20}
kb {action:"search", q:"实验三"}
最后一条说明路径列也会被索引:正文未出现「实验三」时,目录名仍可命中。
本地 HTTP API¶
插件在本机提供前缀 /local-kb/api 的接口(由 DSH WebServer 路由),包含 health、stats、search、browse、doc、candidates、labels、config、rebuild 等;README 写明仅监听本机、无需鉴权。
命令行等价¶
不经过 GUI 时可直接调用 tools/kb_query.py,例如:
PYTHONUTF8=1 python tools/kb_query.py stats
PYTHONUTF8=1 python tools/kb_query.py search --q "知识库" --limit 20
PYTHONUTF8=1 python tools/kb_query.py browse --path Desktop --days 30 --ext doc --sort mtime --limit 20
PYTHONUTF8=1 python tools/kb_query.py get --id 21222 --max 8000
重建索引需系统 Python 带 fitz(PyMuPDF);电子书与旧 Office 部分抽取器已 vendor 在 tools/vendor/,README 称无需额外 pip。示例完整命令:
PYTHONUTF8=1 C:/Python314/python.exe tools/build_kb.py --roots "C:/,E:/" \
--db "C:/Users/hql/.dsh/local-kb/kb.sqlite"
安装与启用¶
README 给出的安装方式不是 dsh plugin add github:...,而是对本地插件目录执行 bundle 安装。示例插件目录为 E:\dsh files\local-kb:
plugin_manager action=install_bundle target=E:\\dsh files\local-kb
安装后侧栏未出现时,可先硬刷新 GUI(Ctrl+Shift+R);部分客户端模块需 DSH 完全重启后才生效。package.json 要求 Node >= 22.0.0。
典型用法¶
只记得「大概在哪个文件夹」:在搜索框或 path 过滤里输入路径片段,或用 browse 加 days、ext 缩小范围;CLI 等价如 kb_query.py browse --days 7 --ext docx。
让 Agent 查资料但控制 token:先 search 或 browse 拿 id 与 snippet,确认后再 get;批量内容识别用 candidates + label,增量模式在首次全量 full 跑完后只处理无 AI 标注的新增文件。
按价值与主题筛库:规则或 AI 合并后的 useful / topic 可叠加到 search、browse,例如 search --q 论文 --useful high --topic study。
适用场景与注意¶
适合已在 Windows 上把学习与工作文档分散在多盘符、又希望在 DSH 内统一检索、并让 Agent 以片段优先方式引用本机资料的用户。当前 README 与路径示例均围绕 Windows(C:\Users\...、盘符扫描);Linux 用户需自行对照配置与脚本是否匹配本机布局。
插件以 当前 DSH 进程权限 扫描与读取文件,安装前应阅读 仓库源码 与 MIT 许可证,确认扫描范围(默认可覆盖整盘)符合个人或组织安全策略。本地 HTTP API 无鉴权,仅应在本机可信环境使用。
SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系;插件列表里的「记忆」分类描述的是能力取向,不等同于官方产品能力。
结尾¶
dsh-local-kb 把「本机文档在哪、写了什么」拆成 SQLite 侧索引 + 侧栏面板 + kb Agent 工具三层:人机都能搜,Agent 默认只吃片段。若要查看简介与分类,可打开目录页 SkillHub · dsh-local-kb;安装细节、API 字段与格式抽取表以 GitHub 仓库 README 为准。