dsh-knowledge-base:DSH 本地 Markdown 资料库

前言

在 DeepSeek Harness(DSH)里做多轮、跨会话的开发或协作时,常见做法是往技能目录里塞说明,或每次把长文档贴进上下文。前者检索不直观,后者既占 token,又难复用。DSH 里能长期保留、又可被 Agent 按需取用的载体,主要是技能目录与插件注册的工具。

dsh-knowledge-base 把资料做成插件:同一份本地 Markdown 既能在 GUI 里浏览编辑,也能通过 kb_search、kb_read 在会话里检索,而不必整篇塞进 prompt。下面介绍它的定位、安装方式与典型用法。

这是什么

dsh-knowledge-base 是维护者 gaoheng980610 发布的 DSH 插件,在社区目录 SkillHub 中归类为「记忆」。源码与说明见 GitHub 仓库。

插件本体不含任何预设资料:安装后只在本机维护一份 Markdown 树,Host 半边用 node:fs 读写目录并注册 Agent 工具,Browser 半边在侧边栏提供「资料库」面板(搜索、分类树、阅读与在线编辑)。

架构与核心能力

插件拆成两个半边,职责在 README 中有明确对照:

半边 入口 作用
Host lib/index.js 读写 $DSH_HOME/knowledge-base/;webServer 注册同源 HTTP 路由;向 ctx.tools 注册 kb_search、kb_read
Browser lib/client.js 经 __ModuleLoader__ 装载;侧边栏「资料库」与中栏面板

会话侧(Agent 工具)

工具 说明
kb_search 参数 { query?, limit? }。query 按空格分词,需全部命中;不传 query 时列出全部资料目录
kb_read 参数 { id },返回该资料全文 Markdown

人机侧(HTTP,前缀 /knowledge-base,POST + JSON)

浏览器面板通过 list、read、save、delete、search、stats 等端点管理资料;list 不返回正文,避免一次性把整库灌进前端或上下文。具体入参与返回字段以仓库 README 为准。

资料放在哪、怎么组织

默认根目录为 $DSH_HOME/knowledge-base/(常见为 ~/.dsh/knowledge-base/):

$DSH_HOME/knowledge-base/
  <分类>/<名称>.md          ← 目录即分类;id = 相对路径去掉 .md
  .trash/                   ← 删除的资料(可恢复)

文件头可使用 YAML frontmatter(title、tags、category、updated、source);没有 frontmatter 时标题可取文件名。正文单份上限 4MB;delete 为软删除(移入 .trash),可手工恢复。

安装与启用

插件要求 DSH 版本 >=0.2.0-rc.2(见 package.json 的 dsh.engines)。当前 README 推荐的锁定版本为 v0.1.1。

推荐按 tag 从 GitHub 安装,便于重复安装与升级:

dsh plugin --profile <你的 profile> add "github:gaoheng980610/dsh-knowledge-base#v0.1.1"

也可使用 Release 预构建包:

dsh plugin --profile <你的 profile> add "https://github.com/gaoheng980610/dsh-knowledge-base/releases/download/v0.1.1/dsh-knowledge-base-0.1.1.tgz"

README 注明:在 pnpm 11 上,同一压缩包直链再次安装或升级可能触发 ERR_PNPM_MISSING_TARBALL_INTEGRITY;需要反复安装或升级时,应使用上面的 github: 方式。

dsh plugin add 会把 dsh-knowledge-base 写入 profile 的 package.json 中 dsh.profile.bundles。装完后必须重启 DeepSeek Harness,宿主侧的 HTTP 路由与 Agent 工具、以及浏览器侧的 UI 才会一并生效。

卸载:

dsh plugin --profile <profile> remove dsh-knowledge-base

若 dsh.profile.bundles 里仍留有该条目,需一并删除。

典型用法

1. 人工维护资料

安装并重启后,在 DSH 侧边栏打开「资料库」,按分类新建或编辑 Markdown。资料只存在本机,由你自行写入插件目录。

2. 会话中按需检索

在 Agent 对话中调用插件注册的工具,例如先搜索再精读:

  • 使用 kb_search:带 query 做关键词检索(分词需全部命中),或不传 query 浏览目录列表。
  • 使用 kb_read:传入资料的 id(相对路径去掉 .md)读取全文。

这样可以把长篇说明留在资料库,会话里只拉取相关片段,而不是默认塞进系统或用户消息。

3. 开发与自测(维护者路径)

仓库提供离线冒烟测试,不依赖正在运行的 DSH 实例:

node --check lib/index.js
node --check lib/client.js
node test/smoke.mjs

test/smoke.mjs 覆盖路由、frontmatter、搜索计分、路径穿越防护、.trash 删除及两个 Agent 工具等断言(README 记为 36 项)。

安全与运行边界

  • 资料 id 经归一化,拒绝 ..、绝对路径与非 .md 扩展名,不能越出资料根目录。
  • 插件不引入第三方依赖(浏览器侧使用宿主内置 react);读写仅本机,README 写明插件不发起外部网络请求。
  • 插件以当前 DSH 宿主进程权限运行,可读写 $DSH_HOME/knowledge-base/。安装前宜自行查看源码与 MIT 许可证,确认符合你的环境与合规要求。

维护者在 README 中还记录了 cordis inject 声明不全会导致 Host 路由未注册、面板出现 405 等踩坑;二次开发或 fork 时应阅读「开发与自测」「踩坑记录」两节。

适合谁用

  • 需要在 DSH 里沉淀项目说明、接口备忘、流程文档,并希望在任意会话里用工具检索的开发者。
  • 希望「人看 GUI、Agent 看工具」共用同一份 Markdown、且数据完全本地的团队或个人。

不适合把插件当作云端同步或多人协作知识库:没有内置远端存储与权限模型,协作需自行用 Git 或别的同步方式管理 knowledge-base 目录。

结尾

dsh-knowledge-base 把本地 Markdown 资料库接进 DSH 的插件体系:GUI 负责浏览与编辑, kb_search / kb_read 负责会话侧按需取用。安装命令与版本以仓库 README 为准;社区条目见 SkillHub 目录页,源码与 Release 见 GitHub。

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

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

小夜