前言¶
在 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。