前言¶
在 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 + ReactuseSyncExternalStore;Host 通过changes流 Remote 推送刷新(非轮询),多窗口保持一致。连接断开后以 0.5~10 秒指数退避重连。 - 支持 JSON 完整导入/导出:导出为 version 2,导入接受 version 1 与 2;重复 ID 跳过,仅对带旧版 running 记录的新导入项重置为 pending;备份不包含实时执行状态,导入不会启动 Agent。
- 聊天输入框
@仅列出 pending 与 in_progress 待办,Tab 进入列表、关键词搜索,发送时拉取最新详情(需 DSHui-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 等旧工具。
任务流要点¶
- 创建待办或手动标为进行中:不会创建 Session、不会发消息。
- 用户选择「Dispatch to Agent」后才开始执行;问题、回复与结果留在原会话。
- 从首页点「待办」时,优先用当前会话;无当前会话则按宿主最近工作区规则创建普通空会话,待原生右栏挂载后打开待办标签。无可用工作区时提示先选工作区。该方案可能多出一个空会话,不提供全局右侧宿主能力,不修改 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;开发构建使用 pnpm11.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