`dsh-tool-todo-tree`:爲 DSH 提供樹形 `todo_write` 的互斥替代

前言

DSH 已有扁平列表式的 dsh-tool-todo 工具插件,用於維護 todo_write 任務清單。如果部署側需要按父子層級組織任務,而不是把任務鋪成一個扁平列表,就需要一個能保持 DSH 工具註冊形態、但把數據形狀改爲樹形的替代方案。

下面介紹 dsh-tool-todo-tree。它是扁平 dsh-tool-todo 的互斥替代品:兩者註冊同一個工具名 todo_write,一個部署只能掛載其中一個。

這是什麼

倉庫爲 Chinesezjc/dsh-tool-todo-tree,許可證爲 MIT。

該插件用於 DeepSeek Harness(DSH),定位是嵌套樹形 todo_write 工具插件。它把 todo_write 的寫入內容從扁平列表換成由 children 嵌套的任務樹,並在 Web 側提供對應的計劃條和工具行展示。

該包是可獨立構建的 DSH bundle,依賴全部取自已發佈的 @deepseek-ai/* npm 包,不需要 DSH 源碼樹。

核心功能

  • todo_write:整棵任務樹全量替換寫入,節點通過 children 嵌套。
  • 事件寫入:每次調用向所屬 agent 的 session 追加一條 todo/tree 事件快照,回放爲 last-write-wins。
  • 投影讀取:發佈 todoTree projection,供 UI 讀取當前整樹,由下一個 turn/start 清空。
  • 並行控制:支持 allowParallelInProgress 配置。true 允許多個節點同時 in_progressfalse 則全樹只允許一個。
  • 狀態約束:父節點只有在全部子節點 completed 時纔可爲 completed
  • 數據歸一化:同層兄弟節點 content 去重;空 children 歸一化爲省略該字段。
  • 深度控制:支持 maxDepth 配置,默認 3,上限爲協議常量 SCHEMA_DEPTH
  • Web 側:註冊 conversation.input.dock 計劃條,讀 todoTree projection,並按深度縮進列出節點。
  • Web 側:註冊 tool.call.toolview 行,以 priority: -1 遮蔽內置扁平行,並逐層統計。
  • 瀏覽器端產物:爲 closure-factory 形態,CSS Module 編譯進包並注入樣式表。

安裝與啓用

先使用 DSH 插件命令安裝到指定 profile:

dsh plugin --profile <名字> add dsh-tool-todo-tree

這一步會把包寫進 profile 依賴,並把 cordis.patch.yml 註冊爲一層 bundle。

示例 bundle 配置如下。它掛載樹形工具,同時禁用扁平工具:

- id: tool-todo
  disabled: true

- insert:
  - id: tool-todo-tree
    name: dsh-tool-todo-tree
    config:
      maxDepth: 3
      allowParallelInProgress: true

如果從本地 tarball 安裝,可以使用 pnpm pack 產出的包。

如果從 git ref 安裝,可使用:

github:Chinesezjc/dsh-tool-todo-tree#<sha>

git 安裝時 pnpm 會跑 prepare,需要在 profile 的 pnpm-workspace.yaml 放行。

典型用法

啓用樹形工具不能只安裝本包,還要從 agent preset 中移除扁平工具那一項。

1、複製一份現有 agent preset,避免直接改動共享預設。
2、從副本里移除 - id: tool-todo 條目及其 config 子鍵。
3、創建 session 時使用這份修改後的 preset。

不要把 tool-todo-tree 加進 preset。本工具有意拒絕 scoped context,加進去會讓 session.create 直接失敗;它只掛 host 層,靠繼承到達 session。

已覈實的 preset 影響包括:shipped 的 standardcodecordis 三個 preset 各自都有一行 - id: tool-todominimal 沒有。preset 層的同名工具會遮蔽 host 層的同名工具,所以僅執行 dsh plugin add 的部署仍可能拿到扁平行爲。

適用場景與注意

適合需要在 DSH 中使用樹形任務計劃、替代扁平 dsh-tool-todo 的部署。使用前確認以下限制:

  • 與扁平 dsh-tool-todo 互斥:兩者都註冊 todo_write,一個部署只能掛載其中一個;必須顯式禁用扁平工具。
  • allowParallelInProgress 是必填配置,無默認值。
  • maxDepth 默認 3,上限爲 SCHEMA_DEPTH
  • 計劃條只按深度縮進,不折疊;較寬的樹依賴計劃條自身滾動。
  • 0.2.0 的瀏覽器產物是 ESM、被 shell 拒絕,已 deprecate;使用 0.2.1 起的版本。
  • 本包 peer 範圍統一釘在 ^0.1.0-rc.6
  • @deepseek-ai/dsh-session 聲明瞭未發佈的 peer @deepseek-ai/dsh-type-meta,因此 autoInstallPeers 開啓時安裝會失敗。
  • 該包會在當前 dsh 進程內運行,安裝前應檢查源碼與許可證;許可證爲 MIT。

鏈接

  • 社區目錄頁:https://www.skillhub.cn/plugins/Chinesezjc/dsh-tool-todo-tree
  • GitHub:https://github.com/Chinesezjc/dsh-tool-todo-tree
羽毛球分组比赛记分
小程序二维码

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

小夜