前言¶
DeepSeek Harness(DSH)的默认全文搜索(unicode61)无法匹配中文子串,导致在需要跨会话记忆的场景下检索效率低下。dsh-knowledge-sqlite 旨在解决这个问题,它基于 V1.11 社区提案,为 DSH 提供了一套跨会话知识管理方案,支持中文子串检索和查询扩展。
是什么¶
这是一个由 NinjaSln-labs 维护的插件,核心是 ctx.knowledge 服务接口和 knowledge_* 模型工具。它将知识存储在 SQLite 文件中,利用 FTS5 trigram 索引实现中文分词检索,并集成了 L1 查询扩展机制。中文版 README(README.zh.md)为权威版本。
核心功能¶
插件提供以下核心能力:
- 知识管理工具:支持
knowledge_write(写入)、knowledge_update(更新)、knowledge_list(列表)、knowledge_delete(删除)以及knowledge_probe(探针/实验)。 - 中文检索:基于 SQLite FTS5 trigram,支持中文子串检索,解决传统全文搜索无法匹配中文的问题。
- 查询扩展:默认开启 L1 查询扩展,通过一次小模型调用提升召回率。
- 数据持久化:支持 TTL 过期机制、Tombstone(墓碑)机制和 DedupeKey 去重。
- 事件发射:在数据写入、更新、删除时发射
knowledge/written、knowledge/updated、knowledge/deleted事件。 - 权限与隔离:基于
session.header.cwd实现工作区隔离;默认开启 Ask-gated 权限控制,写入和删除需用户批准。
安装与启用¶
使用官方安装命令即可添加插件:
dsh plugin add dsh-knowledge-sqlite
典型用法¶
在 DSH 的配置文件(如 cordis.patch.yml)中配置插件参数。
- 配置权限:默认开启 Ask-gated,需要用户批准。若需跳过审批,可设置为
gating: 'none'。 - 配置数据库路径:自定义 SQLite 数据库文件位置。
- 配置检索:调整检索的候选数量和扩展超时时间。
# cordis.patch.yml / profile row
- id: knowledge-sqlite
name: 'dsh-knowledge-sqlite'
config:
gating: 'ask'
databasePath: '/custom/data/knowledge.sqlite'
queryExpansion:
enabled: true
timeoutMs: 3000
retrieval:
topN: 20
maxCandidates: 200
authorization:
allowedGlobalWriters: []
适用场景与注意¶
- 适用场景:需要构建具备长期记忆和精确中文检索能力的 DSH 智能体。
- 注意事项:
- 该插件基于 V1.11 社区提案,非 DeepSeek 官方功能。
- 身份验证基于
session.header.cwd,确保不同工作区的数据隔离。 - 安装前请检查源码与许可证(MIT)。
- 默认开启 Ask-gated,在无头部署中需注意审批逻辑。
结语¶
该插件通过 SQLite FTS5 技术解决了 DSH 中文检索的痛点,适合需要长期记忆和精确检索的智能体开发。更多细节可参考 GitHub 仓库。