前言¶
DeepSeek Harness (DSH) 的对话会话通常是临时的。随着轮次增加,历史记录会消耗上下文窗口。该插件将成功的轮次冻结为文档,而不是将所有内容都注入到提示词中。
插件简介¶
名称:dsh-knowledge-sync
维护者:liugu2023
许可证:MIT
该插件将 DSH 会话的每一轮冻结为知识库文档,并允许后续对话查找它们。会话结束时,提出的问题、得出的结论以及运行的工具都会被记录为一个 Markdown 文件,且不会发送给模型进行处理。
核心功能¶
插件提供以下核心能力:
- Markdown 文档与 YAML Front Matter:每个文档为一个 Markdown 文件,包含 YAML front matter,记录元数据(如 ID、标题、会话、轮次、类型等)。
- 显著性过滤:只有通过显著性过滤的轮次才会被保存。根据配置,过于简短或无实质内容的轮次(如仅状态报告)会被丢弃。
- 凭证脱敏:在写入磁盘前,会自动移除工具参数中的敏感信息(如 token、密码、PEM 密钥等),支持配置额外的脱敏正则表达式。
- 全文搜索:基于内存中的 BM25 索引实现全文搜索,支持搜索文档正文(不仅仅是标题)。
- 工作区隔离:知识库作用域限定在当前目录,确保不同项目的知识不会相互干扰。
- 工具与 UI:提供
knowledge_search和knowledge_read工具,并在 Web UI 的设置页面提供知识管理和配置界面。
安装与启用¶
在终端中执行以下命令以安装该插件:
dsh plugin --profile web add dsh-knowledge-sync
安装完成后,可通过 Web UI 访问设置页面的 Knowledge 部分查看状态。
典型用法¶
文档存储位置:文档默认保存在 ./knowledge 目录下,或由环境变量 DSH_KNOWLEDGE_ROOT 指定的位置。文件路径通常为 <root>/<session>/<id>-<slug>.md。
文档类型:
* raw:通过显著性过滤的原始轮次。
* note:智能体在执行过程中手动调用的 knowledge_note 工具生成的记录。
* distilled:通过可选的蒸馏功能压缩后的轮次总结。
工具使用:
在对话中,智能体可以通过以下工具操作知识库:
* knowledge_search:在文档库中搜索,支持按类型、标签或工具过滤。
* knowledge_read:读取特定 ID 的完整文档。
配置方式:
在 Web UI 的设置页面进入 Knowledge 部分,在 Config 标签页中可实时修改配置,包括根目录路径、脱敏规则、显著性阈值、蒸馏开关等。
注意事项¶
- 搜索机制:当前实现为基于 BM25 的词法搜索,不支持语义搜索(Embedding)。这意味着无法搜索从未出现过的短语。
- 目录隔离:知识库的召回限制在当前目录内。位于记录知识的工作区子目录中的会话无法访问该知识库。
- 依赖版本:开发该插件需要与 DSH 安装包中发布的
@deepseek-ai/*包版本保持一致,建议使用确切版本而非范围版本,以避免引入过时的包。
结语¶
dsh-knowledge-sync 通过将对话轮次结构化为可搜索的文档,解决了 DSH 会话上下文管理的问题。它提供了基于目录的隔离机制和内存中的高效检索,适合需要在长期会话中维护知识库的开发场景。
该插件位于社区目录:https://www.skillhub.cn/plugins/liugu2023/dsh-knowledge-sync
源代码仓库:https://github.com/liugu2023/dsh-knowledge-sync