dsh-knowledge:本地与远程双后端的 DeepSeek Harness 知识库插件

前言

用 DSH(DeepSeek Harness)做日常开发,一个绕不开的问题是:项目规范、架构决策、踩过的坑都发生在具体会话里,会话结束就散了。常见的应对是把重要内容手动复制进系统提示,但上下文会越来越臃肿,也谈不上检索范围和写入权限的控制。

下面介绍的 dsh-knowledge 把这件事做成一个独立环节:不修改 DSH Agent Loop,同一个插件既可以使用本地 SQLite,也可以连接远程中央知识库,提供按需检索、受控回写与 Web 管理台。本文按功能、安装、典型用法的顺序展开。

插件简介

dsh-knowledge(npm 包 @lemoncat7/dsh-knowledge)由 lemoncat7 维护,MIT 许可证,在 DSH 插件分类中属于「记忆」。

兼容性:正式版 2.3.4 针对 DeepSeek Harness 0.1.2-rc.1 构建并完成部署验证,需要 Node.js ^22.19.0 || >=24.0.0。插件是标准 DSH profile bundle(package.jsondsh.bundle.patch 指向 cordis.patch.yml),安装后不需要单独运行知识库容器,安装或更新后重启对应 DSH profile 即可。

核心功能

双后端:本地 SQLite 与远程中央服务

本地后端基于 SQLite,使用 WAL、FTS5 全文搜索、原子事务、完整版本历史和幂等提取任务。远程后端是认证 HTTP API 的中央知识库,可作为其他 DSH 客户端和未来桌面端的接入点。本地与远程 Provider 使用同一接口。

模式切换在 DSH「设置 → 插件」的「知识库连接」卡片完成:选择本地来源,或填写中央服务地址和只写客户端令牌,保存后实时验证并切换 Provider。

需要明确的是,远程模式不做隐式双向同步:创建、修改工具不会自动挂载知识库,也不会回退、双写或同步到另一端,结果会明确返回实际写入的 localremote

回写由独立提取调用完成

主模型不暴露 knowledge_write。每轮回答完整结束后,插件用一次独立的提取调用判断是否产生知识并回写;回写结果只作为 UI 状态展示,在下一次模型请求前移除,不占用会话上下文。

回写策略全局分为「严谨 / 主动」两种,保存在权威知识库服务中,远程客户端自动跟随中央设置。

知识库可以建多个,分别设定说明、默认标签、提取要求与专用回写模型;未设定专用模型时跟随当前会话模型。

挂载只表示「可选」:未挂载知识库时,不召回、不提取、不回写;挂载也不代表每次回答都要写入。

挂载与权限

挂载分项目与会话两级,会话默认继承项目,可独立覆盖或关闭。每个挂载支持三种写入模式:仅召回、审核写入、直接写入,并可配置包含/排除标签和额外提取要求。

文档变更决策分 create / update / conflict / skip 四种。原文修订使用唯一旧文本锚点与目标版本,由服务端在完整文档上原子执行。

搜索和读取由服务端按当前会话挂载、项目范围及包含/排除标签强制限权,读取句柄带签名且仅限当前会话。

按需检索

回答前,插件通过 DSH 官方提示组装接口提供有界的挂载库地图,并自动召回最多 3 条达到相关性门槛的摘要,不自动注入完整文档。需要完整内容时,先做找库,再做搜索,最后读文档:

1、knowledge_base_search:找库
2、knowledge_search:搜索指定库
3、knowledge_read:读取文档

用户明确要求时,模型也可以调用 knowledge_base_create / knowledge_base_update 创建或修改知识库(描述、标签、回写策略与专用回写模型)。

Web 管理台与笔记工作区

插件自带响应式 Web 管理台,覆盖概览、文档树与 Markdown 编辑器、AI 候选审核、客户端令牌管理。知识库管理拆分为「知识库」和「项目与会话挂载」两个工作区,支持按名称、描述、标签和模型即时搜索。

文档界面是笔记软件式双栏布局,配套独立的笔记工作区:多级目录树、Markdown/文本文件编辑、图片和 PDF 就地浏览、页面历史与恢复、分享与导入。笔记默认不参与知识检索、自动召回或 AI 回写。

知识文档通过结构化「关联笔记」列表引用笔记或文件,关系绑定稳定编号;旧 note:// 引用会在升级时安全回填。文档可标记为「已解决」或「已收集完成」,强制封存为只读,需重新打开才能编辑或回写。

DSH 浏览器端插件会在左侧工作区下方显示「知识库」,在当前页面内打开管理面板。界面支持明暗主题、键盘操作、窄屏布局,状态标签不依赖颜色。

安装与启用

从 npm 安装正式版:

dsh plugin --profile web add @lemoncat7/dsh-knowledge

需要固定版本时,可在包名后追加 @版本号,也可以从 GitHub Releases 下载预构建包后本地安装。卸载命令如下:

dsh plugin --profile web remove @lemoncat7/dsh-knowledge

插件是标准 DSH profile bundle,安装后不需要单独运行知识库容器。安装或更新后需要重启对应的 DSH profile,Web 版的重启命令:

pnpm dsh web

典型用法

本地模式配置

默认配置使用 DSH 持久目录中的 SQLite 文件:

backend: local
databasePath: !!js dshHomePath('knowledge/knowledge.sqlite')
extractionEnabled: true
defaultScope: project
autoRecallLimit: 3
autoRecallMinScore: 0.2
recallMaxChars: 5000
exposeApi: false
exposeWeb: true

这份配置的含义:数据库位于 DSH 持久目录的 knowledge/ 下;默认作用域为项目;自动召回最多 3 条、相关性门槛 0.2、召回最大 5000 字符;认证 API 默认关闭,管理台默认开启。

创建与修改知识库

创建知识库的请求体示例:

{
  "draft": {
    "name": "DSH 项目规范",
    "description": "只匹配 DSH 插件开发、架构决策和部署规范相关对话",
    "defaultTags": ["dsh", "project-rule"],
    "extractionInstructions": "只收录已确认且可跨会话复用的结论"
  }
}

description 限定该库覆盖的主题范围,extractionInstructions 进一步限定收录规则,defaultTags 是回写时的默认标签。局部修改标签或描述使用 PATCH /knowledge-bases/:id

{"patch":{"description":"...","defaultTags":["..."]}}

部署为中央知识库

作为中央服务时,通过配置启用认证 API 与 Web:

exposeApi: true
apiToken: !!js process.env.DSH_KNOWLEDGE_API_TOKEN
apiPrefix: /knowledge-api/v1
exposeWeb: true
webPath: /knowledge

DSH_KNOWLEDGE_API_TOKEN 至少 24 个字符,数据库只保存摘要。服务端没有 TLS,非回环部署必须放在 HTTPS 反向代理之后。

客户端令牌使用 Bearer Token,仅保存 SHA-256 摘要,支持 read / propose / write / admin 权限及吊销。经过上面的配置,这台 DSH 实例的认证 HTTP API 就可以作为其他 DSH 客户端的中央知识库使用。

适用场景与注意事项

适合的场景:

  • 个人开发者:在本地积累项目规范、架构决策和经验,跨会话按需召回
  • 团队:部署一台中央知识库,多个 DSH 客户端通过令牌接入,回写策略跟随中央设置

使用前需要注意:

1、插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(本项目为 MIT)。
2、版本匹配:正式版 2.3.4 针对 DeepSeek Harness 0.1.2-rc.1 构建并完成部署验证。
3、未挂载知识库时不会有任何召回、提取、回写,挂载只表示可选。
4、本地管理台下,任何能访问 DSH Web 的用户都具有本地管理权限;把 DSH 暴露到公网时,应使用反向代理登录保护整个站点。
5、提取失败会将幂等任务标为 failed,失败任务最多可重新领取两次,不阻断下一轮;提取输出达到模型上限时用双倍预算重试一次(最高 8192 tokens)。
6、删除被知识文档引用的笔记会被拒绝;永久删除笔记必须在当前消息中明确提出,授权不会从历史消息延续。
7、分享导入保留 SSRF 防护,可通过 trustedShareOrigins 单独配置可信 Origin。

小结

dsh-knowledge 的思路是不动 Agent Loop,把长期记忆做成可挂载、可限权、可审核的知识库:本地单机开箱即用,需要共享时切换到中央服务,权限由服务端强制执行。如果你的 DSH 实例需要跨会话沉淀知识,可以按上面的步骤装一个试一试。

目录页(社区维护的插件目录,与 DeepSeek 官方无从属关系):https://www.skillhub.cn/plugins/lemoncat7/dsh-knowledge

GitHub:https://github.com/lemoncat7/dsh-knowledge

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

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

Xiaoye