前言¶
在使用 DSH(DeepSeek Harness)开发时,你可能会在主任务中途发现一个 Bug、想到配套功能,或者意识到当前实现缺少某个步骤。此时继续做主任务会打断思路,而中断去处理旁支又会丢失上下文。等你下次回来时,往往需要重新调查一遍,甚至要向 AI 重新解释来龙去脉。
DSH Todo Assistant(Dhsh-todo-assistant)就是为此设计的插件。它把会话中暂时不处理但需要记住的任务保存成卡片,并在需要时把上下文交接给未来的会话。它不只是记录“还有什么没做”,还保留“为什么要做、之前已经知道什么、下一步该做什么”。
插件定位¶
- 名称:Todo Assistant
- 维护者:zangoose335
- 分类:记忆
- GitHub:https://github.com/zangoose335/dsh-todo-assistant
- 核心价值:为 DSH 会话中的旁支任务保存上下文,并在需要时交接给未来的会话
核心功能¶
1. 记录旁支任务¶
插件使用标记语法捕获任务。标记内容表示开发者已同意记录,AI 不需要再次询问是否创建。
#MEMO 会议记录完成后需要支持修改标题。先完成当前主功能,之后再实现标题编辑,并确认修改后的标题能正确保存和显示。
#/MEMO
#DB 和 #MEMO 是相同的待办标记:DB 是“待办”的拼音首字母,MEMO 是更易被国际用户理解的写法。标记不区分大小写,使用 #DB … #/DB 或 #MEMO … #/MEMO 成对包住内容即可。结束标记可以省略,此时记录到消息末尾。代码围栏和行内代码中的标记会被忽略。
2. 任务卡片结构¶
每张卡片是一份任务简报,附带来源与现场信息:
- 目标(goal):要解决什么问题、实现什么需求
- 背景(why,可选):为什么需要它
- 已确认事实与决定(confirmed):每条都标出可信度
- 约束(constraints):实现时不能违反的条件
- 线索(leads):文件、符号或文档路径,只作辅助
- 下一步(nextAction):开始执行时先做什么
- 待确认(openQuestions,可选):尚未确认、可能影响执行的问题
简单任务可以只有 goal + nextAction,不要求填满其他字段。每条 brief 信息必须标明来源类型:requirement(开发者要求)、decided(已确认决定)、verified(已验证事实)、inferred(AI 推断)、unknown(未知)或 superseded(已被替代)。
3. 上下文读取与提醒¶
- 分层读取:先看任务简报,再按需查看必读信息、文件和补充记录;原始会话先看目录,再选择指定片段读取。
- 相关性提醒:插件根据当前会话访问的文件路径与该会话创建的未完成卡片做粗略相关性匹配。如果文件路径完全相同,或共享足够长的目录前缀,侧栏可能显示“相关”标记,并在后续步骤提醒 AI。
4. 处理任务与交接¶
打开卡片后,你可以选择:
- 新会话中处理:创建一个新会话,并将卡片整理成开场上下文。开场会要求先读代码/资料并给出方案,不直接改文件;确认方案后再实现。处理中需要你决定时,会在任务过程中使用 DSH 的提问面板,而不是等到最后才问。
- 插入当前会话:将一条处理提示插入当前输入框。它只会预填,不会自动发送;需要你决定时,同样会在处理过程中提问。
处理完成后,AI 应询问你是否将卡片标记为完成;得到确认后才更新状态。卡片也支持追加 note,以记录新证据、进度或补充事实,而不是悄悄覆盖原始记录。
5. 项目计划(Project Plan)¶
右侧栏的第二个入口“计划”用来放跨会话的项目计划,与“待办”页并存。
- 项目列表:项目名、目标、状态、当前阶段、阶段数和待处理提议数。
- 导入 Markdown:粘贴一份计划,先解析成预览:识别出的阶段、需要你确认的推断(依赖绑定、自动编号)、没认出来的段落(不会保存)。确认后再保存;有推断但没确认时保存会被拒绝。
- 阶段:支持阶段与子阶段、依赖、验收、必须保留的上下文、决策、相关文件、状态和执行结果;可以新增、编辑、拆分、删除(被其他阶段依赖或有子阶段时会拒绝)、改状态、记录结果、设当前阶段。
- 阶段结果与证据:AI 只能“提出结果”(做了什么、改了哪些文件、测试命令和结果、遗留问题),不能直接标记完成;插件会把 AI 说的测试和当前会话真实跑过的工具结果核对——真跑过的标“工具结果”,没跑过的仍是“AI 声称”,实际跑过但漏说的会补进来。你在计划页点“应用”才写入结果,勾“我确认这些测试结果”可把无工具证据的测试记为“开发者确认”。
- 计划变化:AI 还可以提“新增阶段、拆分阶段、改依赖、改验收”四种提议;程序自己算出字段级 diff 和受影响阶段(改动阶段 + 下游依赖 + 共享验收/决策的阶段),AI 只解释原因。版本不一致时提议会被直接拒绝,应用时再拦一次。
- 项目级修改与审计:AI 还能提项目名字、目标、状态、当前阶段、项目决策、项目风险六项修改,但同样只能提议。计划页“应用”要再点一次“确认应用”才写入;已应用/已拒绝的提议能在“提议历史”里查,变更历史会标出“提议应用/直接编辑”和类型;diff 的新增用绿色、删除用红色。
- 版本与决策历史:变更历史可点开看该版前后差异,也能看“初始计划”和“初始 vs 当前”;支持分页加载;决策历史列出项目/阶段决策和风险的增删,提议结果留在提议历史。历史只存结构化摘要,不重建任意中间版本的完整计划。导出默认只带变更摘要(版本/类型/原因/影响阶段),需要时可选带完整 diff。
- 阶段交接:“开始阶段”为该阶段开一个新会话,开场包含项目目标、阶段目标/下一步、直接前置阶段的实际结果、决策、验收、风险、未解决项、来源指针和工作区规则;“插入交接”只把同一份材料写进当前输入框,不自动发送。材料只带指针,不带历史或文档正文;超过约 4000 字时保留关键项,并提示用
todo_plan_read补看。 - 导出:把当前计划导出为 Markdown,写进项目所在工作区的文件夹;文件名取项目名,重名自动加
-2,不覆盖同名文件。收件箱里的计划需要先放进一个工作区。 - 只读工具:AI 可以用
todo_plan_read查看项目/阶段/依赖/验收/结果,用todo_plan_context生成阶段交接;两者都不会改计划。
最小 Markdown 语法:# 项目名 加首段作为总体目标;## Phase 4: 标题 为阶段,### Phase 4a: 标题 为子阶段(也接受 A、B2 这类编号);阶段内用 Goal:/目标:、Acceptance:/验收:、Depends on:/依赖:、Context:/上下文:、Decisions:/决策:、Risks:/风险:、Next:/下一步:、Result:/结果: 加条目。代码围栏会被忽略,认不出的内容只出现在预览里,不会写进计划。
安装与启用¶
所有安装方式都通过 plugin_manager install_bundle,并且需要审批。
从 GitHub 安装:
plugin_manager install_bundle target = https://github.com/zangoose335/dsh-todo-assistant.git
安装后需要重启 DSH。也可以从本地仓库安装,或按需固定到某个 Git commit。
安装完成后,在右侧栏点击 +,选择 Todo Assistant(卡片)或 计划(项目计划)即可使用。
适用场景¶
- 发现 Bug,但暂时不修:在实现大功能时顺手发现另一个模块的问题,先把问题和相关线索记下来,继续完成当前主任务;之后再单独处理。
- 想到配套功能,不想打断主线:实现过程中发现还需要一个设置项、编辑入口或补充流程,先记录想法,等当前阶段完成后再回来处理。
- 把任务交给另一个会话:准备处理一张卡片时,可以让插件新建一个会话,并把卡片内容作为开场上下文;也可以将提示插入当前会话的输入框,由你决定何时发送。
- 减少重复调查和重复说明:卡片可以保留开发者的原始请求、任务相关信息、文件路径、下一步、必读内容和补充记录。必要时还可以按需回读原始会话中的指定片段,而不是一开始就把整段历史全部塞进上下文。
注意事项¶
插件以当前 DSH 进程权限运行。安装前请检查源码与许可证。
当前版本已完成 P0-BASE、T1–T4 的基础实现,T5/Gate 1 于 2026-10-19 通过严格复核与真实运行验收,Stage 4(B1–B5、C1–C4)于 2026-10-20 完成并验证。仍未实现的功能包括卡片/阶段拖拽交接、卡片步骤与编号等。
旧版本写回会丢掉 brief/sources,也会丢掉 projects/plan_proposals/plan_changes 三张表,升级前请备份 ~/.dsh/storages/todo_assistant.json。
总结¶
Todo Assistant 通过标记语法、任务简报、分层读取和项目计划,为 DSH 开发者提供了一个跨会话的旁支任务工作台。它让你在主任务进行时可以放心地捕获旁支任务,并在需要时通过新会话或输入框直接开始处理,无需重新调查或重复说明情况。
- 目录页:https://www.skillhub.cn/plugins/zangoose335/dsh-todo-assistant
- GitHub:https://github.com/zangoose335/dsh-todo-assistant