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 用戶。