前言¶
在 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,例如
webprofile - 核心對象:跨會話持久化的任務、模型可見工具、瀏覽器端面板和
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。
需要注意:
dagsurface 不繪製定位圖,僅渲染節點 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
webprofile 中需要長期維護一個跨會話任務列表。 - 主 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