dsh-personal
Manifest validPersonal assistant bundle for DeepSeek Harness: natural-language capture, query, and review tools over one SQLite file
dsh-personal
https://github.com/ChengqianHuang/dsh-personal · topic: dsh-plugin
个人助理 bundle:让 dsh 用自然语言记录/查询/回顾你的个人数据(经历——电影/书/专辑/展览等任意类别、项目日志、任务、博客、网站、想法、每日记录),全部落在一个 SQLite 文件(~/.dsh/personal/personal.db)里。LLM 只负责理解和总结,事实全部来自 SQLite,重启后依旧可查。
安装与使用见 dsh 用户文档 docs/user/develop/basic/publish.md。设计决策见 DESIGN.md。
安装(dsh 源码运行模式下)
本仓库 clone(或 link)到任意位置后,在 dsh 仓库根目录安装进 profile:
# 从本仓库的本地 clone 安装(link 模式,源码即生效)
pnpm dsh plugin --profile web add /path/to/dsh-personal
pnpm dsh --profile web --dump-config # 验证出现 "# == dsh-personal" 层
pnpm dsh web # 启动后直接对话
卸载:pnpm dsh plugin --profile web remove dsh-personal。
配置(可选,写进 profile 的 cordis.patch.yml 或由 bundle 默认值兜底):
- id: personal
name: dsh-personal
config:
timezone: Asia/Shanghai # 日期分桶时区,默认进程时区
# databasePath: ~/.dsh/personal/personal.db
# enableDailyReview: true
# enableWeeklyReview: true
构建 / 测试
(cd dsh-personal && pnpm install --ignore-workspace --config.auto-install-peers=false)
(cd dsh-personal && pnpm exec tsdown) # 产出 lib/index.mjs
pnpm exec vitest run --config dsh-personal/vitest.config.ts
pnpm exec tsc -p dsh-personal/tsconfig.json --noEmit
修改源码后重新 pnpm exec tsdown 即可(profile 里是 link,指向本目录)。
类型检查读取 DSH 各依赖包的声明文件;首次运行前需先构建上层 DSH 仓库。
当前数据库 schema 版本为 4。旧 v1–v3 数据库无法直接打开;如不需要旧数据,移走或删除旧 personal.db 后再启动。插件不会自动删除数据库文件。
工具(22 个)
- 记录:
record_experience(类别可新增,如 movie/book/album/exhibition)create_projectrecord_project_logcreate_taskupdate_taskcomplete_taskcreate_blog_postupdate_blog_postcreate_idearecord_daily_logregister_website - 查询:
query_experiencesquery_tasksquery_project_logsquery_blog_postsquery_websitessearch_personal_data - 纠错:
get_personal_recordupdate_personal_recorddelete_personal_record - 回顾:
generate_daily_reviewgenerate_weekly_review
用法示例:直接说「今天看了《灵媒》,7.5 分」「读了半本《失控》」「Forge 今天定位了中文错位问题」「周末检查博客证书」「我有哪些事情没做?」「本周回顾」。
关键词检索
search_personal_data 使用 Jieba 中文分词和 SQLite FTS5,跨八类记录按 BM25 相关性统一排序。标题、名称、域名默认比备注和正文权重更高;标签也参与检索。比如「博客证书」可以找到「检查博客的 HTTPS 证书」,「streaming 中文错位」可以组合中英文关键词。
text:主题关键词。模型从问题中提取关键词,把时间和类型分别填进日期窗口与types。match:默认all,要求全部关键词;any返回至少命中一个词的记录。types、from、to、period:按记录类型与日期过滤;项目、网站也使用创建日期过滤。limit:跨类型的总条数,默认 20,上限 200。返回{ terms, hits },每条 hit 包含type、score和完整row,保持相关性顺序;分数只在本次查询内可比。同分时按日期倒序、类型、id 排列。query_experiences的text和match使用同一检索引擎,还能组合类别、动作、日期和标签。不带text时仍按日期列出经历。
搜索索引只存在于连接的内存 TEMP 表中,不改变 v4 数据库格式。首次搜索从现有记录建立索引,本连接的写入、修改和删除通过 TEMP trigger 同步;其他连接提交变更后,下次搜索在一致的读取事务里重建。关闭连接会释放索引,重启后从数据库恢复。大量记录或频繁跨进程写入时,重建会增加首次搜索延迟。
权重可在插件配置中调整,均须为正的有限数:
searchTitleWeight: 5
searchTagWeight: 3
searchBodyWeight: 1
这是词法检索,支持中文复合词的子词,但不保证任意字符片段或同义词匹配;「看展」与「参观展览」仍可能需要模型换关键词查询。没有向量检索或自动语义扩展。
修改与删除已有记录
直接说「刚才那部电影评分改成 8 分」「这条记重复了,删掉」「证书检查已经完成」「把那个想法关联到博客项目」。模型使用会话中的记录 id 或先查询定位;多个候选都符合时先询问,不用相关性排名代替用户选择。记录与查询结果显示 id,get_personal_record 按精确类型和 id 返回完整行及 revision。
update_personal_record 和 delete_personal_record 必须传入读取结果的 expected_revision。服务在 BEGIN IMMEDIATE 事务里核对内容指纹再写入;其他连接或工具已改动记录时拒绝操作,模型需重新读取并核对意图。指纹不是历史版本序号:内容完全恢复后可恢复同一指纹。任务和博客的专用修改工具,以及 complete_task,也要求该参数。updateTask、completeTask 和 updateBlogPost Service API 同样要求传入读取到的 revision。
修改使用行字段的 camelCase 名称,只提交需要改变的字段;省略保留原值,空字符串清空允许为空的文本,[] 清空标签。null 可清空评分、任务截止日期、可空项目/网站链接及任务来源字段。项目和网站引用使用已有精确 id;任务的 sourceType 与 sourceId 在修改时必须同时有值或同时为 null。任务进入 DONE 自动记录完成日期,再次标记完成保留原日期,改成其他状态则清空完成日期。经历的类别、动作、评分和发生日期沿用记录时的校验;id 和创建时间不可修改。相对截止日期可使用 dueIn,显式 dueAt 优先(包括 null)。
删除是永久删除,没有撤销入口。项目日志、任务、博客和想法的外键引用,以及任务中类型/id 精确匹配的来源引用,会阻止删除并返回引用记录列表。用户决定解除或重新关联这些引用后再删;不级联删除其他记录。只移除目标自身及其两端的显式 relations,整个操作失败时一起回滚。修改、删除和回滚同步到检索索引;schema 保持 v4,现有数据无需迁移。
Comments
Loading…
Similar plugins
by zsspub
SQLite-backed personal todo tools and Web panel for DeepSeek Harness
★ 0
MIT
TypeScript
Sep 21, 2026
dsh plugin --profile web add dsh-personal-todoby shengsheng90
Native local Taskboard plugin for DeepSeek Harness. SQLite-backed projects, Agent claim/review, and a native Web UI — no iframe, no second chat runtime.
★ 330
↓ 335/wk
Apache-2.0
TypeScript
Sep 30, 2026
dsh plugin --profile web add @shengsheng/dsh-taskboardby dondai44423
First-class DonSeTch plugin for DeepSeek Harness: fetch, search and crawl as native dsh tools with an auto-updating verified binary
★ 1
AGPL-3.0
TypeScript
Sep 4, 2026
dsh plugin --profile web add @dsh-external/donsetchby cui-stack
DeepSeek Harness bundle: workspace_digest tool that lists files in a directory.
★ 0
MIT
JavaScript
Aug 14, 2026
dsh plugin --profile web add dsh-workspace-digestby Qingzhou-Joshua
DeepSeek Harness plugin—a simple toolkit for developers.
★ 0
MIT
TypeScript
Aug 14, 2026
dsh plugin --profile web add dsh-dev-toolboxby dsh-so
Find DeepSeek Harness plugins from the dsh.so registry — like find-skill, but for dsh plugins.
★ 0
Apache-2.0
JavaScript
Sep 11, 2026
dsh plugin --profile web add @dsh-so/dsh-plugin-advisor