DeepSeek Harness(DSH)采用插件化架构,扩展性强。但在实际使用中,如果在一个会话里同时推进多个任务,容易遗漏进度。dsh-session-todos 针对这一场景,提供了一个会话内待办事项插件,帮助用户在一个对话窗口内管理并发任务。
功能说明¶
界面与交互
- 悬浮面板:在聊天窗口右上角悬浮待办面板,支持收起、滑入滑出动画。
- 📌 钉住:点击面板标题栏的 📌 图标可钉住面板,防止自动收起。
- 移动端适配:点击面板外任意区域自动收起,支持手势操作。
任务操作
- 勾选保存:勾选任务行即时保存状态,文字置灰。
- 原地编辑:双击任务文字进入多行编辑模式(textarea),按 Enter 保存,Esc 取消,Shift+Enter 换行。
- 拖动排序:长按任务文字上下拖动,实时预览落点,松手提交。
- 追加发送:点击任务行的 ↗ 图标,将任务文本追加到消息发送框。
- 删除:支持删除任务,带确认弹窗。
数据与同步
- 服务器端存储:任务数据存储在服务器端,文件位于 ~/.dsh/dsh-session-todos/<sessionId>.json。跨设备登录同一 DSH 环境可同步数据。
- 侧边栏徽章:左侧会话列表中,有未完成任务的会话会显示 🎯 徽章。
安装与启用¶
本插件为 Host 和 Client 两半的 bundle 插件,要求 DSH Web 端环境。
dshpm install https://github.com/seeingrain/dsh-session-todos.git --profile web
安装后重启 dsh-web,或强制刷新浏览器(Ctrl+Shift+R)。
使用方法¶
- 打开任意会话,点击聊天窗口右上角的 🎯 图标展开面板。
- 点击底部的
+按钮新建任务。 - 双击任务文字进行编辑。
- 长按任务文字上下拖动调整顺序。
- 点击 📌 钉住面板,防止点击外部时自动收起。
实现原理与限制¶
- 架构:插件分 Host(
lib/index.js)和 Client(lib/client.js)两半,均为独立自包含,不修改 DSH 源码。 - 存储:Host 半边在
webServer注册路由,将任务持久化为 JSON 文件;Client 半边将面板挂载至shell.overlay插槽。 - 依赖:会话列表徽章依赖 React 18 fiber 结构,若 DSH 或 React 升级导致结构变化,插件会优雅降级(不显示徽章)。
- 本地状态:面板的展开/收起状态及钉住状态存储在浏览器
localStorage,不随服务器端数据同步到其他设备。
总结¶
dsh-session-todos 提供了一套轻量级的会话任务管理方案。它利用服务器端存储保证数据同步,利用悬浮面板和侧边栏徽章提供直观的进度反馈。适合需要在同一对话中管理多任务流的 DSH 用户。