在 DSH 中開發 Agent 時,會話中斷(如模型返回 content_filter、限流或崩潰)會導致進度丟失。且 Agent 需要一個持久化的任務真源來承接跨輪或跨會話的工作。dida-todo 插件提供瞭解決方案,它將滴答清單作爲任務真源,支持 Agent 自動領取、執行與進度回寫,並處理 dsh 會話中斷後的自動續跑。
是什麼¶
dida-todo 是一個由 ztllll 維護的 DSH 插件。它同時是 Pi 擴展和 dsh 插件組合包,核心是將滴答清單作爲任務真源。它保留了 dsh 自帶的 todo 工具與 /todos 命令,支持雙向同步、提醒、強制人類驗收閉環,以及 dsh 會話中斷自動續跑。
核心功能¶
- 滴答清單作爲任務真源:所有任務狀態以滴答清單爲準。
- Agent 自動領取任務:Pi 空閒時自動領取未完成的任務,或通過輸入“檢查todo”立即執行。
- 強制人類驗收閉環:任務完成後自動生成“🧑🔬 待驗收”任務,防止 Agent 自作主張完成任務。
- dsh 會話中斷自動續跑:當回合以錯誤或崩潰結束且會話還有未完成工作時,插件會嘗試自動續跑。
- 保留原有工具:插件只新增
todo/todo_work兩個工具,不覆蓋、不禁用 dsh 自帶的todo_write與任務面板。 - dsh goal 復活與轉人工掛起:接管 dsh goal 驅動器,遇到中斷可嘗試復活;若連續失敗則轉爲人工掛起。
安裝與啓用¶
- 在 DSH Web 界面側欄點擊「插件 → 添加插件」,填寫:
github:ztllll/dida-todo#v0.9.1
或通過命令行安裝:
dsh plugin --profile web add "github:ztllll/dida-todo#v0.9.1"
- 安裝後刷新或重啓 dsh-web 生效。
- 卸載插件不會影響 dsh 原有功能,插件只新增一行插件和兩個工具。
典型用法¶
- 綁定清單:在 Pi 中執行
/dida-bind [清單名稱]。唯一同名清單會被直接綁定,不存在則按輸入名稱創建。 - 創建任務:人在滴答清單記錄任務並設置優先級(低/中/高),該任務不會立即執行,需 Agent 領取。
- Agent 執行:Pi 空閒時會自動領取任務;或直接輸入“檢查todo”立即執行。
- 進度與驗收:Agent 按 Checklist 執行,每步結果寫成滴答評論。全部完成後,頂層任務自動完成,並生成“🧑🔬 待驗收”任務(+3/+6 分鐘提醒)。
- 人工介入:若需人工確認,Agent 會調用
todo_work wait_for_human,將任務優先級清零,並新建🙋 需要你處理提醒。 - 恢復掛起:恢復方式爲在滴答將原任務優先級改回低/中/高,或對 Agent 說“繼續”。
適用場景與注意¶
- 適用場景:需要長期追蹤的任務、跨輪/跨會話的代碼變更、需要人工驗收的自動化流程。
- 注意事項:
- 滴答官方 API 沒有附件接口,文件請走 IM 通道。
- 滴答子項沒有“進行中”狀態,只在 Pi 面板顯示。
- 同一臺機器併發寫有跨進程鎖,多臺機器無強一致保證。
- 只針對滴答清單,不保證 TickTick 國際版。
- 與
rpiv-todo衝突,需先禁用。 - Pi
--mode rpc客戶端只渲染字符串,看不到面板。 - dsh 續跑計數在內存中,重啓後清零。
dida-todo 旨在解決 Agent 工作流中斷與任務持久化問題,通過滴答清單作爲真源,實現人機協作與任務閉環。更多詳情可查看項目主頁或源碼倉庫。