dsh-personal-todo:SQLite 持久化的个人待办与 Web 面板

前言

在 DeepSeek Harness(DSH)里做智能体开发,任务往往跨会话、跨项目散落:对话里记一笔、Markdown 里列清单,换工作区或重启进程后很难对齐进度。若把「待办生命周期」和「Agent 是否在跑」绑死,还会出现一轮对话结束就误以为任务已完成的情况。

下面介绍社区插件 dsh-personal-todo(维护者 zsspub)。它用 SQLite 持久化待办,提供 Web 右栏面板与 Agent 工具,让用户自行管理待办,或在需要时再派发给 Agent;待办进度与 Agent 执行状态相互独立。

这是什么

  • 名称:dsh-personal-todo(npm 包名同目录名)
  • 分类:客户端(Web profile 自动加载 UI)
  • 简介:SQLite-backed personal todo tools and Web panel for DeepSeek Harness(版本 0.1.0,见仓库 package.json)
  • 来源:SkillHub 目录页、GitHub 仓库

插件通过 Cordis bundle patch 挂载 Host 服务与工具;Web manifest 会在支持的 profile 下自动注入客户端模块。

核心功能

数据与状态模型

  • 待办主进度为 pending、in_progress、completed;cancelled 为次要状态,归档与进度分离。
  • Agent 执行信息单独展示;executionStatus 仅被动观察 agent/status、agent/error 等事件,在内存中投影为 running、idle、failed 等,不会在回合结束时推断「已完成」。
  • 持久化使用 SQLite:含 schema 版本、WAL、外键、busy timeout,以及仅属主可访问的文件权限。
  • 派发给 Agent 的每条待办关联一个持久的 root Session,后续问答与权限确认仍在原会话中进行;支持自动发现委派产生的子 Session(含嵌套)作为关联对话。服务重启后通过只读 sessionQuery.readSession 读取 Session 状态,不激活 Agent、不发送恢复消息。

Web 客户端

  • 右栏使用宿主原生 Sidebar Tab:主标签为待办、进行中、已完成;「更多」含已取消与已归档,「数据」为独立菜单。可按负责人分组、手动改状态、跳回关联 Session。面板不含回复框与 review 流程。
  • 任意生命周期状态的待办可进入归档视图,再恢复至对应列表或永久删除。
  • 侧栏显示未归档的 pending + in_progress 合计数量(无单独的「需要关注」筛选)。
  • 对话内只读请求(如「显示我的待办」)走 personal_todo_show:工具区保留宿主紧凑记录,回合末尾渲染可交互待办卡片(非 Markdown 表),支持滚动、侧栏定位等操作。
  • 历史卡片、右栏、侧栏计数与输入框 @ 引用共用 Nanostores + React useSyncExternalStore;Host 通过 changes 流 Remote 推送刷新(非轮询),多窗口保持一致。连接断开后以 0.5~10 秒指数退避重连。
  • 支持 JSON 完整导入/导出:导出为 version 2,导入接受 version 1 与 2;重复 ID 跳过,仅对带旧版 running 记录的新导入项重置为 pending;备份不包含实时执行状态,导入不会启动 Agent。
  • 聊天输入框 @ 仅列出 pending 与 in_progress 待办,Tab 进入列表、关键词搜索,发送时拉取最新详情(需 DSH ui-input-trigger >= 0.1.2-rc.1)。
  • 中英客户端文案字典。

Agent 工具

工具 用途
personal_todo_add 创建并保存待办(不执行);支持备注、负责人、优先级、截止时间、标签,默认优先级 medium
personal_todo_show 只读展示,在回合末渲染实时卡片
personal_todo_list 返回完整 JSON,供后续编辑、删除或处理
personal_todo_update 更新可变字段;null 清空备注/负责人/截止时间,[] 清空标签
personal_todo_delete 按 UUID 永久删除
personal_todo_export 返回 { filename, json } 供宿主文件工具保存
personal_todo_import 接受 { json },增量导入并返回 imported / skipped / execution-reset 数量

列表默认返回 pending 与 in_progress,不含已归档。Agent 工具仅覆盖增删改查与导入导出,不强制同步进度、不代用户确认完成;已移除 personal_todo_progress、personal_todo_block、personal_todo_submit_review 等旧工具。

任务流要点

  1. 创建待办或手动标为进行中:不会创建 Session、不会发消息。
  2. 用户选择「Dispatch to Agent」后才开始执行;问题、回复与结果留在原会话。
  3. 从首页点「待办」时,优先用当前会话;无当前会话则按宿主最近工作区规则创建普通空会话,待原生右栏挂载后打开待办标签。无可用工作区时提示先选工作区。该方案可能多出一个空会话,不提供全局右侧宿主能力,不修改 DSH 宿主本体。

环境与依赖

安装或开发前请对照 README 要求:

  • 支持右栏 Sidebar Tabs、sessionQuery、Agent 生命周期通知的 DSH Web profile(实现目标接口 0.2.1-rc.2)。
  • @deepseek-ai/dsh-client-ui-tool 0.2.1-rc.2、@deepseek-ai/cordis ~4.0.5。
  • Node.js ^22.19.0 || >=24.0.0;开发构建使用 pnpm 11.7.0。

安装与启用

官方建议固定 GitHub 修订版,直接使用仓库内已提交的 lib/ 产物:

pnpm dsh plugin --profile web add github:zsspub/dsh-personal-todo#<commit-sha>

将 <commit-sha> 换为你要固定的 commit(在 GitHub 仓库 提交历史中选择)。

本地开发可指向绝对路径:

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

bundle patch 会挂载 Host 服务与工具;Web manifest 会自动加载客户端,无需额外手动注册 UI 入口。

典型用法

在对话里查看待办(只读)
用自然语言让 Agent 展示列表即可;模型应调用 personal_todo_show,你在回合末尾看到可交互卡片,而不是长 Markdown 表。

让 Agent 写入待办但不立刻执行
说明标题、备注、负责人、截止时间等,由 Agent 调用 personal_todo_add;之后可在右栏面板手动改状态,或自行点击派发给 Agent。

备份与迁移
让 Agent 调用 personal_todo_export,用宿主文件工具保存 JSON;在新环境用 personal_todo_import 增量导入。注意重复 ID 会被跳过。

在输入框引用进行中的项
在 composer 输入 @,Tab 进入待办列表并搜索;仅 pending / in_progress 会出现(需满足 ui-input-trigger 版本要求)。

更细的 GUI 边界、首页打开待办、10 秒挂载等待等说明见仓库 README.zh.md。

适用场景与注意

适合

  • 需要在多个 DSH 会话、项目间共享同一份个人待办,且希望进度与 Agent 是否在跑解耦的开发者。
  • 已在用 Web profile,并依赖右栏、Session 查询与 Agent 生命周期能力的团队。

注意

  • 插件以当前 DSH 进程权限运行,待办数据落在本地 SQLite;安装前请阅读源码与 LICENSE,确认数据路径与权限符合你的环境。
  • 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,本插件为社区维护的客户端扩展。
  • 删除待办、对运行中待办做危险状态变更等操作在 UI 侧需要确认;Agent 不能代替用户确认完成或强行改进度。

结尾

dsh-personal-todo 把个人待办做成 DSH 内一等公民:SQLite 持久化、Web 右栏与对话卡片、Host 推送的多端同步,以及按需派发 Agent 的执行模型。若你正在 Web profile 上整理长期任务清单,可按上文命令固定 revision 安装,并对照中文 README 完成面板与 @ 引用配置。

  • 目录页:https://www.skillhub.cn/plugins/zsspub/dsh-personal-todo
  • GitHub:https://github.com/zsspub/dsh-personal-todo
羽毛球分组比赛记分
小程序二维码

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

Xiaoye