dsh-global-task-list:DeepSeek Harness 全局任務庫插件

前言

在 DSH 插件式工作流裏,會話中的任務常常分散在提示、工具調用和後臺作業裏:模型可以創建任務,但人看不到統一列表;子代理任務完成後還需要再查詢;進度和狀態也缺少一個常駐的可視化入口。

dsh-global-task-list 針對這些問題,提供一組任務 CRUD 模型工具、一個持久化懸浮面板、後臺作業終態同步,以及一個基於 surface 字段的生成式 UI 渲染面。下面按能力、安裝、用法和注意事項介紹。

這是什麼

dsh-global-task-list 是一個面向 DeepSeek Harness 的插件,定位爲“全局任務庫 + 常駐交互面板”。

  • 倉庫地址:https://github.com/sgzxs/dsh-global-task-list
  • 許可證:MIT
  • 安裝方式:通過 DSH 插件命令加入指定 profile,例如 web profile
  • 核心對象:跨會話持久化的任務、模型可見工具、瀏覽器端面板和 surface 文檔

它解決的不是單個聊天裏的待辦記錄,而是讓任務在 DSH 會話、後臺作業和麪板之間形成一致狀態。

核心能力

1. 任務 CRUD 與跨會話持久化

插件提供任務相關模型工具:

  • task_add:創建任務,可攜帶 title、description、parentId、dependsOn、surface、progress 等字段。
  • task_list:列出任務,輸出形如 - [status] title (id, job=...)。
  • task_update:更新任務,並可通過 jobId 關聯後臺作業。
  • task_delete:刪除任務。

另外,taskui_probe 可用於探測插件狀態和當前任務數。

任務存儲在跨會話的 storageDomain 單元中,並可存活重啓。也就是說,任務不只在一次會話裏存在,也可以作爲長期工作流的一部分被查看和修改。

2. 持久化懸浮面板

面板位於右下角,屬於持久化懸浮面板。它會訂閱 SSE 通道,在任務變化時刷新,支持修改狀態、刪除任務,並觸發生成式拆分。

面板使用 --dsw-* 主題 tokens,並本地化 zh/en。對使用者來說,它把任務列表、狀態和 surface 內容放在一個常駐視口內,不需要再依賴對話文本反覆查看。

3. 子代理任務終態同步

通過 task_update(id, { jobId }) 可以把任務關聯到後臺作業。關聯後,插件會按 JOB_STATUS_MAP 同步 completed、failed、killed 等終態。

這個能力適合“主 agent 創建任務,子 agent / 後臺作業執行任務”的流程:任務創建是顯式的,狀態同步由插件在關聯後完成。

4. surface 生成式 UI

任務可攜帶 surface 字段。surface 被渲染爲白名單遞歸組件樹,支持的組件包括:

section、metric、statusBadge、progress、table、list、timeline、dag、disclosure。

需要注意:

  • dag surface 不繪製定位圖,僅渲染節點 chips 和 edges list。
  • surface 在 host 端保存爲未驗證 JSON。
  • 非法組件類型在渲染時被忽略,而不是在加載時報錯。

安裝與啓用

npm 安裝(推薦)

npm 安裝使用預構建產物,適合大多數使用場景:

dsh plugin --profile web add dsh-global-task-list

插件聲明 dsh.bundle,dsh 會自動將其加入 profile bundles。

GitHub 安裝(源碼 + prepare 構建)

如果從 GitHub 安裝,會拉取源碼並執行 prepare 構建:

dsh plugin --profile web add github:sgzxs/dsh-global-task-list#v0.1.4

固定 tag 有助於保持 commit 穩定,從而讓後續 allowBuilds 配置更穩定。

GitHub 安裝的 allowBuilds

從 GitHub 安裝時,pnpm 默認阻止 git 依賴執行構建。allowBuilds 需要匹配 exact commit。第一次 add 失敗時,錯誤信息會打印需要允許的 key,可以把它寫入 profile 的 pnpm-workspace.yaml,再重新執行安裝:

allowBuilds:
  dsh-global-task-list@git+https://github.com/sgzxs/dsh-global-task-list.git#<commit>: true

這裏的 <commit> 是具體 commit,不能用僅包名的條目替代。

依賴與運行環境

已覈實的運行要求包括:

  • DeepSeek Harness 兼容 0.1.0-rc.6。
  • host 端會從 profile node_modules 解析 @deepseek-ai/dsh-tools、@deepseek-ai/dsh-llm、@deepseek-ai/dsh-storage-domain 和 zod。

如果插件無法加載,優先檢查 profile 中這些依賴是否可解析,以及安裝方式是否觸發了構建限制。

典型用法

1. 探測狀態

taskui_probe

用於返回插件狀態和當前任務數。

2. 創建任務

task_add(title, description?, parentId?, dependsOn?, surface?, progress?)

創建一條任務。title 必填,其餘字段按任務需要填寫。

3. 查看任務

task_list

輸出類似:

- [status] title (id, job=...)

4. 關聯後臺任務

task_update(id, { jobId })

把已有任務關聯到後臺作業。之後可以按終態同步邏輯更新任務狀態。

5. 刪除任務

task_delete(id)

刪除指定任務。

對提示詞與緩存的影響

插件向模型工具目錄注入工具 schema。根據已覈實信息:

  • 工具 schema 是固定成本。
  • 任務列表內容不進入提示詞。
  • 插件版本變化會替換 schema,並使 KV cache 複用失效。

因此,把任務內容放在 surface / 面板展示,通常比反覆把任務正文塞進對話更適合控制提示詞膨脹。

適用場景

適合以下場景:

  • 在 DSH web profile 中需要長期維護一個跨會話任務列表。
  • 主 agent 需要創建任務並追蹤後臺子代理或後臺作業狀態。
  • 需要在瀏覽器端看到任務狀態、進度或結構化 surface。
  • 希望使用統一面板完成改狀態、刪除、生成式拆分等操作。

注意事項

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼和許可證。本插件許可證爲 MIT。
  • sync-profile.mjs 是本地開發助手,未通過 files 發佈;正式安裝使用 dsh plugin add。
  • 從 GitHub 安裝必須處理 pnpm allowBuilds,且 key 需要匹配 exact commit。
  • surface 是 host 端保存的未驗證 JSON,非法組件類型會在渲染時被忽略。
  • dag 不渲染定位圖,只渲染節點 chips 和 edges list。

結尾

dsh-global-task-list 的價值在於把“任務庫、常駐面板、後臺作業狀態、結構化 surface”放進同一個 DSH 插件裏:模型可以維護任務,用戶可以在面板裏查看和修改,後臺作業終態可以同步回任務。

目錄頁:請以 DSH 插件目錄中顯示的該插件頁面爲準,避免使用未覈實的 URL。

GitHub:https://github.com/sgzxs/dsh-global-task-list

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

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

小夜