DeepSeek Harness plugin

dsh-global-task-list

Global task library with a persistent interactive panel: task CRUD tools, linked-subagent terminal-status sync, and a generative-UI surface renderer for the DeepSeek Harness

Jump to install

Source facts

Repository
sgzxs/dsh-global-task-list
Latest update
Aug 21, 2026
Category
Workflow & Automation
GitHub stars
2
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

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

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-global-task-list

A global task library for the DeepSeek Harness: five model-facing CRUD tools, a persistent browser panel, subagent job status synchronization, and a generative-UI surface renderer. Tasks persist across sessions in a storageDomain unit and survive restarts.

> 全局任务列表插件:为 DeepSeek Harness 提供一个跨会话持久化的任务库,附右下角常驻面板(轨迹等非对话界面自动隐藏)。主 agent 用 task_add 创建任务(带描述与进度),spawn 子 agent 后关联 jobId 自动同步终态;面板支持手动改状态、删除、拆分,并实时(SSE)刷新。任务可携带 surface 结构化文档渲染生成式 UI(进度条、时间线、表格、DAG 等)。

What it does

  • Global task librarytask_add / task_list / task_update / task_delete model tools over a cross-session storageDomain unit (task_ui). Tasks carry a title, status (pending / running / done / blocked / failed), description, parentId, dependsOn, an optional progress ({ text, percent? }), and an optional surface document.
  • Persistent panel — a bottom-right floating panel (mounted in the session-scoped conversation.input.dock slot) subscribes to a Server-Sent Events channel (/task-ui/events) and refreshes on every task change, letting the user change status, delete (with confirmation), and trigger a generative split loop. Styled with --dsw-* theme tokens and localized zh/en. It disappears on non-conversation views (e.g. trajectory).
  • Subagent job sync — a task linked to a background job via task_update(id, { jobId }) auto-advances its terminal status through the JOB_STATUS_MAP (completeddone, failedfailed, killedblocked). Tasks are created explicitly by the master agent, never auto-registered from arbitrary background jobs.
  • Generative UI surface — a task's surface field renders a whitelisted, recursive component tree: section, metric, statusBadge, progress, table, list, timeline, dag, disclosure.

Install

Installing from npm is the recommended path — the package ships prebuilt lib/, so no build step runs at install time. The GitHub alternative pulls source and builds on install (see below).

# npm (recommended, prebuilt — no build step at install)
dsh plugin --profile web add dsh-global-task-list

# GitHub (alternative: source + prepare build)
dsh plugin --profile web add github:sgzxs/dsh-global-task-list#v0.1.4

The package declares dsh.bundle, so dsh adds it to the profile's bundles automatically. Requires a DSH installation with @deepseek-ai/dsh-base and the client surface (dsh-web-app) present.

GitHub install: allowBuilds

Installing from GitHub pulls source, so pnpm must run the package's prepare script to build lib/. pnpm blocks that by default for git-hosted packages, and its allowBuilds key matches the exact commit (a package-name-only entry does not match — see pnpm#12367). The first add therefore fails with an ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED message that prints the exact key to allow. Copy that exact key into the profile's pnpm-workspace.yaml, then re-run:

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

Pin a tag (e.g. #v0.1.4) in the install command so the commit hash — and therefore the allowBuilds key — stays stable.

Requirements

  • DeepSeek Harness (@deepseek-ai/dsh), version compatible with 0.1.0-rc.6.
  • The Host half resolves @deepseek-ai/dsh-tools, @deepseek-ai/dsh-llm, @deepseek-ai/dsh-storage-domain, and zod from the profile's node_modules.
  • The client bundle is prebuilt (lib/client.js) and ships with the package; no build step runs at install time.

Build (development)

npm install
npm run build:host    # tsdown bundles src/index.ts → lib/index.js
npm run build:client  # tsdown bundles src/client → lib/client.js

Both halves are TypeScript: the Host half (src/index.ts) compiles to plain ESM, and the client half (TSX) compiles with CSS Modules (lightningcss) into a __ModuleLoader__ closure-factory bundle.

Model Experience

Request context and condition

The package contributes five model-facing tools to the agent's tool catalog.

#### What the model sees

  • taskui_probe — reports the plugin's host-alive status and current task count.
  • task_list — lists every task as - [status] title (id, job=...).
  • task_add(title, description?, parentId?, dependsOn?, surface?, progress?) — creates a task (initial pending).
  • task_update(id, title?/status?/description?/parentId?/dependsOn?/surface?/progress?/jobId?) — patches one task; progress is { text, percent? }, surface accepts a structured generative-UI document, and jobId links the task to a background job for terminal-status sync.
  • task_delete(id) — deletes one task.

The surface document is a recursive, whitelisted component tree (section / metric / statusBadge / progress / table / list / timeline / dag / disclosure) rendered by the browser panel. Unknown kinds are ignored by the renderer; the Host stores the document as opaque JSON.

#### Token effect

Five tool schemas plus their descriptions are injected into the system-prompt tool catalog. Fixed cost; no per-task or data-dependent prompt growth.

#### KV Cache effect

Independent of the agent's request-context assembly. The tool schemas are static, so the prompt prefix is stable across requests; task-list content does not enter the prompt. A plugin version change replaces the tool schemas and invalidates reuse.

Known Limitations and Deferred Work

  • No graph layout — the dag surface renders nodes as chips plus an edges list, not a positioned graph.
  • Surface is opaque — the Host stores surface as unvalidated JSON (z.record); malformed kinds fall back to "ignored" in the renderer rather than a load-time error.
  • sync-profile.mjs is a local dev helper — it is not published (excluded via files); use dsh plugin add for installation.

Acknowledgements

Inspired by HomeRail — its generative-UI (A2UI) idea of "the agent emits a bounded, whitelisted component tree that a host renders into a glanceable view" shaped this plugin's surface document and component catalog (section / metric / statusBadge / progress / table / list / timeline / dag / disclosure), as well as the principle of preferring built-in rendering over dumping raw logs.