dsh-personal:基于 SQLite 的个人数据管理与回顾 Bundle

前言

DeepSeek Harness (DSH) 的插件化架构允许开发者通过 Bundle 扩展核心能力。dsh-personal 是一个 Bundle,旨在为 dsh 提供记录、查询和回顾个人数据的能力。它将经历、项目、任务、博客、想法等结构化数据存储在 SQLite 中,并提供 LLM 辅助的总结与回顾工具。

核心定位

dsh-personal 是一个个人助理 Bundle,提供结构化个人数据的 SQLite 存储、捕获、查询与回顾工具。LLM 仅负责理解和总结,所有事实数据持久化在 SQLite 中,重启后依旧可查。

安装与配置

安装命令如下:

pnpm dsh plugin --profile web add /path/to/dsh-personal

安装后可验证配置是否生效:

pnpm dsh --profile web --dump-config

配置文件(cordis.patch.yml)可设置时区:

- id: personal
  name: dsh-personal
  config:
    timezone: Asia/Shanghai

核心功能

该插件提供 22 个工具,覆盖记录、查询、纠错与回顾四个维度:

  1. 记录与创建:支持记录经历(电影、书、专辑、展览等)、创建项目与日志、创建任务、更新任务、创建与更新博客、记录想法与网站、每日记录。
  2. 查询与检索:支持查询各类记录,以及基于 Jieba 中文分词和 BM25 算法的全文检索。
  3. 纠错与维护:提供获取、更新、删除记录的工具,以及生成日/周回顾功能。
  4. 数据存储:数据存储在 SQLite 文件(~/.dsh/personal/personal.db)中,当前 Schema 版本为 4。

典型用法

在对话中直接使用自然语言即可完成操作:

  • 记录经历:今天看了《灵媒》,7.5 分
  • 记录阅读:读了半本《失控》
  • 项目日志:Forge 今天定位了中文错位问题
  • 维护操作:周末检查博客证书
  • 查询任务:我有哪些事情没做?
  • 生成回顾:本周回顾

搜索与检索机制

搜索功能使用 Jieba 中文分词和 SQLite FTS5,支持中文复合词的子词匹配,但不支持向量检索或自动语义扩展。权重可在配置中调整:

searchTitleWeight: 5
searchTagWeight: 3
searchBodyWeight: 1

搜索索引只存在于连接的内存 TEMP 表中,不改变 v4 数据库格式。首次搜索会从现有记录建立索引,后续写入通过 TEMP trigger 同步。

数据一致性与修改

为了保证数据一致性,修改和删除操作必须传入 revision 以防止并发冲突。

  • 获取记录:使用 get_personal_record 获取完整行及 revision。
  • 修改记录:使用 update_personal_record 时需传入 expected_revision。模型会先查询定位,用户确认后再执行。修改使用行字段的 camelCase 名称。
  • 删除记录:删除是永久删除,没有撤销入口。若记录被其他记录引用(如任务引用来源),则阻止删除并返回引用列表。

注意事项

  1. 旧版本数据库:当前 Schema 版本为 4,旧版本(v1-v3)数据库无法直接打开。如不需要旧数据,需手动移走或删除旧 personal.db。
  2. 删除限制:不支持级联删除,仅移除显式关联的 relations。
  3. 并发写入:大量记录或频繁跨进程写入时,首次搜索重建索引会增加延迟。
  4. 许可证:插件详情未明确标注许可证,安装前请检查源码。

总结

dsh-personal 通过 SQLite 将个人数据结构化,利用 LLM 辅助进行自然语言交互与回顾。它适合需要持久化记忆、定期回顾和结构化知识管理的 DSH 用户。

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

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

小夜