DSH Task Map: Replay a DSH Session as a Task Map

前言

用 DSH 跑多代理任务板,会话结束后手里通常只剩事件日志。想回答“哪个任务卡在等谁”“计划里这个任务后来被拆成了哪几个”“那段时间是在审批还是人工空闲”,只能手工翻日志。DSH Task Map 要解决的就是这件事:它把一次 DSH 会话读出来,派生成一张只读的任务地图,包含 SVG 流程图、甘特时间轴、回放时钟、等待拆解和计划与执行的变更对比。它由 xiaohui-zhangxh 维护,在社区目录里分类为「工作流」,当前版本 1.2.0。

这是什么

一句话定位:DSH 的只读可观测性插件。它消费会话事件日志,输出任务流程图、甘特时间轴和导航式回放,并给出等待分析、计划与执行差异;同时提供只写关系记录的只读任务关系工具。插件不改任务状态、不写会话日志、不联网。

  • 仓库:https://github.com/xiaohui-zhangxh/dsh-task-map
  • 目录页:https://www.skillhub.cn/plugins/xiaohui-zhangxh/dsh-task-map
  • 维护者:xiaohui-zhangxh,分类:工作流,星标:0
  • 版本:1.2.0(CHANGELOG.md 记录完整变更)
  • 许可证:MIT
  • 运行环境:DeepSeek Harness 0.2.1-rc.5(engines.dsh: >=0.2.1-rc.5 <0.3.0)、Node.js ≥ 20

插件分两半,都无构建链:Host 半 index.js 负责投影(stateVersion=4)并提供两个 Agent 工具与 health 路由;Client 半 client.js 是单文件 CJS factory,只 require('react'),用纯 SVG 手绘界面。

核心功能

任务流程图

按执行顺序做 S 形布局,用 blockedBy 依赖曲线表示阻塞关系;支持关系分叉(支线)、轨迹生长、状态色、负责人色条、NEW 标记,以及计划里尚未创建任务的 Ghost 占位。卡片标题最多两行,超长用省略号,不再被 16 字硬截断。

流程图交互

连线有流动方向动画,用于标识执行顺序、依赖和关系。悬停任一连线只聚焦该线两端节点;点击卡片聚焦自身与所有直连节点,其余节点灰度显示、其余连线淡出,再次点击取消。点击卡片不再出现浏览器焦点外框。

甘特时间轴

提供任务、代理、事件、热度四类行,含会话前空闲带、播放头拖动和视口窗口化。会话规模过大时自动降级,200 任务是上限参考。

导航式回放

单一回放时钟配合 requestAnimationFrame,支持 60×/120×/300×/600× 倍速,播放、暂停、拖动和键盘操作(空格、←→、Esc)。任意时刻的状态都可复现,未来事件不会提前剧透。

任务详情与回放总览

任务详情按回放时刻推导状态,展示状态区间、执行、排队、依赖阻塞、就绪延迟、交接、依赖与写入范围、按时间窗推断的执行过程以及变更历史。回放总览汇总完成度、活跃代理、token,以及等待拆解(会话前空闲 / 任务排队 / 依赖阻塞 / 等待代理 / 审批 / 人工空闲 / 最长交接),并对比累计耗时与墙钟时间。

会话计划与计划基线 vs 变更

会话 todo_write 清单与团队任务并存展示(计数 + 清单 + 更新时间,只读),两者不做自动映射。插件对计划取基线快照,标出新增、移除、依赖变更和拆分;每条变更可点击跳转到对应回放时刻。

关系记录

插件提供 task_map_record_relation 工具,在只读校验任务 id 后记录父子、拆分关系,用于在图上渲染支线。父任务完成但子任务未完成时只提示,不改状态。关系数据由会话日志中的 tool/call 事件重建,因此插件本身不额外写日志。

单图模式与无障碍

面板可一键放大流程图或甘特图,大屏一次只看一个图,窗口 resize 或最大化时自适应。键盘支持 Tab 焦点、Enter/Space 选择、aria-*,并适配 prefers-reduced-motion(连线流向动画自动关闭)和暗/亮主题。

安装与启用

从源码 link 安装,官方命令如下:

git clone https://github.com/xiaohui-zhangxh/dsh-task-map.git
cd dsh-task-map

# 安装到日常 DSH(desktop profile)
./scripts/install.sh

# 或指定 profile / 隔离 DSH_HOME 演练
PROFILE=web ./scripts/install.sh
DSH_HOME=/tmp/dsh-lab PROFILE=web ./scripts/install.sh

安装后需要重启 DSH(桌面端退出重开,或重启 dsh web)。然后在任一使用过 Agent Teams 任务板(或 todo_write 清单)的会话里,打开会话头部页签中的「任务地图」。

卸载命令同样来自官方脚本:

./scripts/uninstall.sh            # 清理 profile bundles / dependencies / node_modules 链接

典型用法

安装并重启后,按下面三步看图和复盘。

1、打开任务图或甘特图,点节点或甘特条查看任务详情;
2、拖动时间轴或点「▶ 回放」复盘,右侧总览与详情随回放时刻同步;
3、大屏想只看一个图时,点面板右上角「⤢ 放大流程图」或「⤢ 放大甘特图」,之后点「⇲ 恢复双栏」还原。

数据在 Host 侧由 lib/derive.js 的 foldEvent/buildClientView 从会话事件日志投影成客户端视图,再经 wire.view 传到客户端页签:

会话事件日志 ──► Host 投影 ──► wire.view ──► Client 页签
                     ├─ 计划基线 + 变更流
                     ├─ todo 计划
                     └─ 关系(tool/call 参数解析,只记录)

适用场景与注意

适合需要复盘多代理会话执行过程的开发者:想确认等待花在哪、计划和实际执行差在哪、任务之间依赖和拆分长什么样。它只读派生视图,不改变原任务,因此可以放心加载用于观察。

几点需要注意:

  • 插件以当前 DSH 进程权限运行,安装前应先检查源码与许可证(MIT);
  • 需要 DeepSeek Harness 0.2.1-rc.5 及以上且低于 0.3.0,Node.js ≥ 20;
  • 超长会话(约 60 任务以上)视图会自动降级,详情里的「共 N 条」是累计口径;
  • 「对话建任务 → 面板实时出现」尚未在隔离 web profile 端到端验证(无 Agent Teams),关系工具已用真实模型调用验证;
  • 连线流向动画只对 ≤64 任务的流程图开启;关系分叉连线与依赖连线共用同一套悬停/聚焦逻辑;
  • P1/P2(全局会话目录页、跨会话只读查询 task_map_query)尚未实现,属于 Roadmap。

结尾

DSH Task Map 的价值在于把「会话结束后只剩日志」变成「一张可以拖动时间轴的可回放地图」,等待拆解和计划与执行差异是它最有用的地方。它只读、不联网、无构建链,适合作为会话复盘的观察工具。目录页见 https://www.skillhub.cn/plugins/xiaohui-zhangxh/dsh-task-map,源码见 https://github.com/xiaohui-zhangxh/dsh-task-map。

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

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

Xiaoye