前言¶
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。 - 投影读取:发布
todoTreeprojection,供 UI 读取当前整树,由下一个turn/start清空。 - 并行控制:支持
allowParallelInProgress配置。true允许多个节点同时in_progress,false则全树只允许一个。 - 状态约束:父节点只有在全部子节点
completed时才可为completed。 - 数据归一化:同层兄弟节点
content去重;空children归一化为省略该字段。 - 深度控制:支持
maxDepth配置,默认 3,上限为协议常量SCHEMA_DEPTH。 - Web 侧:注册
conversation.input.dock计划条,读todoTreeprojection,并按深度缩进列出节点。 - 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 的 standard、code、cordis 三个 preset 各自都有一行 - id: tool-todo,minimal 没有。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