前言¶
用 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.json 的 dsh.bundle.patch 指向 cordis.patch.yml),安装后不需要单独运行知识库容器,安装或更新后重启对应 DSH profile 即可。
核心功能¶
双后端:本地 SQLite 与远程中央服务¶
本地后端基于 SQLite,使用 WAL、FTS5 全文搜索、原子事务、完整版本历史和幂等提取任务。远程后端是认证 HTTP API 的中央知识库,可作为其他 DSH 客户端和未来桌面端的接入点。本地与远程 Provider 使用同一接口。
模式切换在 DSH「设置 → 插件」的「知识库连接」卡片完成:选择本地来源,或填写中央服务地址和只写客户端令牌,保存后实时验证并切换 Provider。
需要明确的是,远程模式不做隐式双向同步:创建、修改工具不会自动挂载知识库,也不会回退、双写或同步到另一端,结果会明确返回实际写入的 local 或 remote。
回写由独立提取调用完成¶
主模型不暴露 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