`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
羽毛球分组比赛记分
小程序二维码

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

小夜