前言¶
在 DeepSeek Harness(DSH)里长时间跑会话时,任务往往散落在对话、终端和脑子里:模型能帮你写代码,却未必替你记住「下午要改配置」「这条需求明天截止」。外部待办 App 可以记,但和当前 workspace、Agent 上下文是两套系统,来回切换成本高。
社区插件 dsh-todo(维护者 Mappedinfo,npm 包名 @mappedinfo/dsh-todo)把待办清单嵌进 DSH 客户端:侧栏多一个面板,支持列表与 Markdown 两种视图;新建条目时自动补齐创建时间、提醒时间与提醒模式。面板、浏览器 RPC 与 Agent 工具 todo_board 共用同一份 Host 端数据,没有两套业务逻辑。本项目为非官方社区插件,独立维护,未经 DeepSeek 官方审核;生态目录见 SkillHub 插件页,讨论可参考 DSH Show Your Plugins!。
这是什么¶
dsh-todo 是 DSH 客户端类插件:在 Harness 里提供待办清单 UI,并把同一份状态暴露给模型通过 todo_board 读写。数据默认落在 ~/.dsh/dsh-todo/state.json,可用配置项 stateFile 改路径。运行期依赖 @deepseek-ai/dsh-tools(用于注册 todo_board);若该包解析失败,插件仍提供面板与 RPC,仅记一条 warn 日志,Agent 侧工具不可用。
核心功能¶
双视图与同一份数据¶
- 列表视图:顶部输入框回车新建;支持筛选(全部 / 待办 / 今天 / 已完成);每行可展开编辑标题、备注(Markdown)、提醒模式、提醒时间、提前分钟、截止时间、优先级、标签等。
- Markdown 视图:预览模式下任务复选框可直接勾选并写回列表;源码模式下编辑 Markdown 文本后解析回条目;支持复制当前 Markdown 到剪贴板。
两个视图切换的是同一份数据:列表新建的条目立刻出现在 Markdown 里,Markdown 里改的标题与勾选状态保存后也立刻反映到列表。
自动时间字段与提醒模式¶
新建条目时插件会自动写入:
| 字段 | 说明 |
|---|---|
createdAt |
创建时刻,永远存在 |
| 提醒时间 | 按提醒模式计算;默认向上取整到最近 5 分钟刻度(可配置) |
| 提醒模式 | 默认来自 defaultReminderMode(默认 once) |
提醒模式含义:
| 模式 | 含义 |
|---|---|
none |
不提醒 |
once |
一次性提醒(默认提醒时间常为「现在 + 提前量」) |
daily |
每日在指定 HH:mm 提醒 |
lead |
在截止时间前按「提前分钟」提醒 |
到点后插件在 Host 记账(remindedAt),面板上出现「待提醒」标记与顶部提示;不注入会话、不打断正在跑的 turn,也不自动勾选或延后条目。
多处入口(可配置)¶
装好后侧栏出现待办图标。此外还有:
- 面板左上角「← 返回对话」:从待办面板回到当前对话。
- New Session 行右侧紧凑按钮(默认开):显示
待办 N · 今日 M,点开完整面板。 - 侧栏底部 Settings 旁入口(默认开):展开侧栏时显示未完成计数。
- 输入框下方待办摘要条(默认关):与 activity、用量、上下文指示器同一行,窄屏易拥挤,需在设置中打开。
Settings → 插件 → 待办清单 可分别开关上述三处入口,偏好保存在 prefs.surfaces,与 state.json 一起持久化。
Agent 工具 todo_board¶
模型通过同一 Host 方法操作清单:
action: list | add | update | toggle | remove | clear_done | markdown
title / id / done / note / mode / remind_at / remind_time / lead_minutes / due / priority / tags
add 不带 mode / remind_at 时,与面板新建一样走「自动创建时间 + 提醒时间 + 提醒模式」路径。
安装与启用¶
将 <你的 profile> 换成实际 profile 名(例如 web);Electron 桌面版的 desktop profile 由应用自身管理。
# npm(推荐,支持版本解析与更新)
dsh plugin --profile <你的 profile> add @mappedinfo/dsh-todo
# 或直接从仓库装最新 main
dsh plugin --profile <你的 profile> add github:Mappedinfo/dsh-todo
也可在 DSH 插件页用 Add 填入上述地址之一。装完侧栏应出现待办图标;若未出现,刷新一次页面即可。
package.json 要求 Node ^22.19.0 || >=24,DSH >=0.1.5-rc.2;当前发布版本为 0.1.4,许可证 MIT。
典型用法¶
在面板里记一条待办¶
- 点击侧栏待办图标,或 New Session 行右侧的
待办 N · 今日 M。 - 在列表视图顶部输入框输入标题,回车新建(创建时间、提醒时间、提醒模式按配置自动补齐)。
- 点击该行展开编辑器,按需改备注、截止时间、优先级、标签或提醒模式。
用 Markdown 批量整理¶
- 切换到 Markdown 视图,在「源码」里编辑整份清单文本。
- 点「已写回清单」,解析回列表条目(保留 id、备注与提醒设置)。
- 或在「预览」里直接点复选框切换完成状态。
让 Agent 读写清单¶
在支持 todo_board 的会话中,模型可 list / add / update / toggle 等同面板操作;状态变化与失败原因与 UI 一致。
配置¶
写在 cordis.patch.yml 的 config 里:
| 键 | 默认 | 含义 |
|---|---|---|
stateFile |
null |
状态文件路径;null 表示 ~/.dsh/dsh-todo/state.json |
defaultReminderMode |
once |
新建条目的默认提醒模式 |
defaultReminderDelayMinutes |
60 |
once / lead 模式默认提前多少分钟 |
defaultReminderTime |
'09:00' |
daily 模式的默认每日时刻(本地 HH:mm) |
reminderGranularityMinutes |
5 |
默认提醒时间向上取整的刻度,0 表示不取整 |
defaultLeadMinutes |
10 |
lead 模式的默认提前分钟 |
reminderScanSeconds |
30 |
提醒扫描间隔(秒) |
持久化使用「临时文件 + rename」原子替换;文件缺失或损坏时回落到空清单,不阻塞宿主启动。
适用场景与注意¶
适合:在 DSH 内长期开发、希望待办与 Agent 共用一份 JSON 状态;需要列表精细编辑与 Markdown 互导;希望模型通过 todo_board 同步任务而不另开笔记软件。
注意:
- 插件以当前 dsh 进程权限运行,状态文件在本地磁盘;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。
- 提醒仅做 Host 内标记与面板提示,不替代你的操作习惯或外部日历系统。
@deepseek-ai/dsh-tools不可用时失去 Agent 工具,面板与 RPC 仍可用。
结尾¶
dsh-todo 把待办、提醒与双视图编辑收进 DSH 客户端,并与 todo_board 共用 Host 存储,适合把「会话里产生的任务」留在 Harness 里闭环管理。