DSH Task Map:把一次 DSH 會話回放成任務地圖

前言

用 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。

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

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

小夜