dsh-todos:爲 DeepSeek Harness 補上跨會話的 Plan / Backlog 待辦

前言

用 DeepSeek Harness(DSH)做智能體開發或日常協作時,會話裏的任務往往有兩層含義:這一輪具體怎麼推進,以及關掉窗口、換一天之後還要不要繼續做。官方自帶的 todo_write 回答的是前者——當前這一輪的執行清單,在 turn/start 時會清空,並不承擔「明天還要做什麼」。

若把後續工作只留在對話記錄裏,重啓 Host、新開會話後很難找回;若和會話內臨時清單強行雙向同步,又容易兩邊搶着當唯一真相而失真。dsh-todos(npm 包名 dsh-plugin-todos,倉庫 zhihuz123/dsh-todos)由維護者 zhihuz123 發佈,分類爲工作流類社區插件,在 workspace 層持久化 Plan 與 Backlog,並通過側邊欄、Agent 工具與 /todo 命令寫入。下文按定位、功能、安裝與用法說明如何接入。

這是什麼

dsh-todos 是 DeepSeek Harness 的持久工作區待辦面板:把「這次怎麼做」留在會話裏,把「接下來做什麼」留在工作區。

它與官方 todo_write 的關係可以概括爲三層,且彼此不自動同步(README 明確爲有意設計):

Session todo_write   這次怎麼做(當前輪,臨時)
Workspace Plan       已經決定接下來做什麼(持久,用戶明確承諾)
Workspace Backlog    值得以後做什麼(持久,暫未承諾)

當前 npm 版本爲 0.2.0,許可證 MIT;要求 DSH >= 0.2.1-rc.1 < 0.3.0(engines.dsh)。README 記載早期版本已在 Desktop 0.2.2-rc.1(macOS)上驗證。插件目錄頁:skillhub.cn/plugins/zhihuz123/dsh-todos。

核心功能

下面介紹 README 中已列出的能力,均可在倉庫文檔中核對。

  • 側邊欄 Overview:未完成 / 已完成兩個 tab;未完成分 Plan / Backlog,已完成按 workspace 分組並按完成時間倒序。
  • Plan / Backlog 語義:Plan 爲已承諾的下一步,支持優先級 high / medium / low(默認 high),列表按 priority → order 排序;Backlog 爲發現但暫不執行的事項,無優先級字段。
  • Workspace 級持久化:數據落在 storageDomain: workspace_todos,不依賴某次會話是否仍打開,Host 重啓後仍在。
  • 三種寫入方式:Overview UI、Agent 的 todo_add / todo_update、會話內 /todo 命令。
  • 完成與清理:完成只改狀態不刪除,可恢復;支持單條永久刪除與按 workspace 批量清理已完成。
  • 來源追溯:Agent 寫入可記錄 sourceSessionId,便於從條目回到來源會話。
  • 鑑權與請求路徑:HTTP 走 DSH Connection 的 owner Peer、cookie 與 Host/Origin 約束,插件不單獨引入鑑權 token。
  • 輪詢策略:Overview 掛載且頁面可見時約 4.5s 刷新一次;頁面 hidden 時停止;focus / visibility 變化時立即刷新(當前無 SSE,見已知限制)。

安裝與啓用

安裝前請確認本機 DSH 版本滿足 engines.dsh,並知悉:插件在當前 DSH 進程權限下運行,安裝前應自行查閱 GitHub 源碼 與 MIT 許可證。社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

Web profile

在已配置 DSH Web 的環境中執行:

dsh plugin --profile web add dsh-plugin-todos

刷新 DSH Web 後,側邊欄會出現「待辦」;可在 設置 → 插件 中啓停。

Desktop

方式 A(推薦,無需退出 Desktop):在側邊欄 插件 → Add plugin 中輸入 dsh-plugin-todos,由 Host 讀取包清單後安裝並啓用,再刷新頁面。

方式 B(完全退出 Desktop 後):

"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop add dsh-plugin-todos

README 強調:desktop profile 由 Electron 管理,應使用 Desktop 自帶 CLI,不要用外部全局 dsh;安裝會寫入 ~/.dsh/profiles/desktop/package.json 的依賴與 bundle 配置,重新打開 Desktop 後生效。

倉庫名是 dsh-todos,安裝用的包名是 dsh-plugin-todos(npm 上 dsh-todos 已被佔用)。

典型用法

Overview 手動添加

頂部 composer 支持選擇標題、位置(Workspace / 收件箱 Inbox)、類型(Plan / Backlog)後添加。手動創建的 Plan 默認 high;Inbox 只能放 Backlog。

/todo 命令

在會話裏直接輸入,不經過模型,也不會開啓新一輪對話:

/todo <text>              → Backlog
/todo add <text>          → Backlog(標題以 plan/backlog 開頭時用)
/todo backlog <text>      → Backlog
/todo plan <text>         → Plan(默認 high)

示例:

/todo Fix authentication bug
/todo plan Implement SSE
/todo backlog Investigate flaky test
/todo add plan the migration

結果以命令卡片顯示;只負責記錄,不會讓 Agent 自動執行。Inbox 裏使用 /todo plan 會直接報錯,而非靜默降級。

Agent 工具

todo_add({ title, bucket?, description?, priority? })
todo_update({ id, status?, bucket?, title?, description?, priority? })

todo_add 不接受 workspaceId:Host 從當前 session 的 workspace membership、父 session、cwd 最長前綴到 Inbox 依次解析。README 約定:Agent 自主發現的後續工作默認寫 Backlog;Plan 僅在用戶明確承諾(如「加到 plan」「接下來做」)時寫入;用戶說「記住」時,僅當是可執行工作才應寫 todo。

狀態流轉

pending / in_progress
        │ complete
        ▼
    completed ── restore ──▶ pending
        │
        ├─ delete           單條永久刪除
        └─ clear completed  按 workspace 批量永久刪除

適用場景與注意

適合誰:需要在多個 DSH 會話、甚至重啓 Host 之後,仍保留「已承諾的 Plan」與「暫留的 Backlog」的開發者;希望 Agent 在對話中發現後續工作時能落入 workspace,而不是隻留在聊天記錄裏。

設計取捨:不要期待它與 session 的 todo_write 自動對齊;若你需要的是「僅本輪執行清單」,繼續用官方能力即可,與本插件並列使用。

已知限制(摘自 README):無 SSE,依賴可見時輪詢;單用戶 / 單 Host 語義,多窗口同時編輯爲最後寫入者勝;無拖拽排序、Overview 暫無標題編輯 UI(todo_update 已支持);workspace 刪除後相關 todo 會顯示爲 “Removed workspace”;Desktop 上完整增刪改與 /todo 的逐項 smoke test 尚未全部完成。升級 DSH 大版本前,應重新驗證 connection.fetch、storageDomain 等 API 面。

結尾

經過上面的步驟,可以把跨會話待辦從「散落在對話裏」收束到 workspace 的 Plan / Backlog,並與本輪 todo_write 分工清晰。進一步瞭解與安裝:

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜