Preface¶
In DSH plugin-based workflows, session tasks are often scattered across prompts, tool calls, and background jobs: the model can create tasks, but users cannot see a unified list; after sub-agent tasks complete, users need to query again; progress and status also lack a persistent visualization entry point.
dsh-global-task-list addresses these issues by providing a set of task CRUD model tools, a persistent floating panel, background job terminal state synchronization, and a generative UI rendering surface based on the surface field. The following sections introduce it by capabilities, installation, usage, and precautions.
What is it¶
dsh-global-task-list is a plugin for DeepSeek Harness, positioned as a “Global Task Library + Persistent Interaction Panel”.
- Repo URL:
https://github.com/sgzxs/dsh-global-task-list - License: MIT
- Installation: Add to a specified profile via the DSH plugin command, e.g.,
webprofile - Core Objects: Cross-session persistent tasks, model-visible tools, browser-side panels, and
surfacedocuments
It does not solve individual to-do records within a single chat, but rather establishes a consistent state for tasks across DSH sessions, background jobs, and panels.
Core Capabilities¶
1. Task CRUD & Cross-session Persistence¶
The plugin provides task-related model tools:
task_add: Create tasks, carrying fields liketitle,description,parentId,dependsOn,surface,progress, etc.task_list: List tasks, output format like- [status] title (id, job=...).task_update: Update tasks, and link to background jobs viajobId.task_delete: Delete tasks.
Additionally, taskui_probe can be used to probe the plugin state and current task count.
Tasks are stored in a cross-session storageDomain unit and survive restarts. This means tasks exist not only within a single session but can also be viewed and modified as part of a long-term workflow.
2. Persistent Floating Panel¶
The panel is located in the bottom right corner and is a persistent floating panel. It subscribes to SSE channels to refresh on task changes, supports modifying status and deleting tasks, and triggers generative splitting.
The panel uses --dsw-* theme tokens and is localized to zh/en. For users, it places the task list, status, and surface content within a persistent viewport, eliminating the need to repeatedly refer to conversation text to check status.
3. Sub-agent Task Terminal State Sync¶
Tasks can be associated with background jobs via task_update(id, { jobId }). After association, the plugin synchronizes terminal states like completed, failed, and killed according to JOB_STATUS_MAP.
This capability suits the workflow where a “main agent creates tasks and sub-agents/background jobs execute them”: task creation is explicit, and status synchronization is handled by the plugin after association.
4. surface Generative UI¶
Tasks can carry a surface field. surface is rendered as a whitelist recursive component tree. Supported components include:
section, metric, statusBadge, progress, table, list, timeline, dag, disclosure.
Please note:
- The
dagsurface does not draw a bitmap, only renders node chips and edges list. surfaceis saved as unverified JSON on the host side.- Illegal component types are ignored during rendering, not during loading.
Installation and Enablement¶
npm Installation (Recommended)¶
npm installation uses pre-built artifacts, suitable for most use cases:
dsh plugin --profile web add dsh-global-task-list
The plugin declares dsh.bundle, and dsh automatically adds it to the profile bundles.
GitHub Installation (Source Code + prepare Build)¶
If installing from GitHub, it pulls the source code and executes prepare build:
dsh plugin --profile web add github:sgzxs/dsh-global-task-list#v0.1.4
Fixing the tag helps maintain commit stability, thereby making subsequent allowBuilds configuration more stable.
GitHub Installation allowBuilds¶
When installing from GitHub, pnpm blocks git dependencies from executing builds by default. allowBuilds needs to match the exact commit. When the first add fails, the error message prints the required key. You can write it to the profile’s pnpm-workspace.yaml and run the installation again:
allowBuilds:
dsh-global-task-list@git+https://github.com/sgzxs/dsh-global-task-list.git#<commit>: true
The <commit> here is a specific commit and cannot be replaced by an entry with just the package name.
Dependencies and Runtime Environment¶
Verified runtime requirements include:
- DeepSeek Harness compatible with
0.1.0-rc.6. - Host side resolves
@deepseek-ai/dsh-tools,@deepseek-ai/dsh-llm,@deepseek-ai/dsh-storage-domain, andzodfrom profilenode_modules.
If the plugin fails to load, prioritize checking if these dependencies are resolvable in the profile and if the installation method triggered build restrictions.
Typical Usage¶
1. Probe Status¶
taskui_probe
Used to return plugin status and current task count.
2. Create Task¶
task_add(title, description?, parentId?, dependsOn?, surface?, progress?)
Create a task. title is required; other fields should be filled according to task needs.
3. View Tasks¶
task_list
Output format:
- [status] title (id, job=...)
4. Associate Background Task¶
task_update(id, { jobId })
Associate an existing task with a background job. Afterward, task status can be updated based on the terminal state synchronization logic.
5. Delete Task¶
task_delete(id)
Delete a specified task.
Impact on Prompts and Cache¶
The plugin injects tool schemas into the model tools directory. Based on verified information:
- Tool schema is a fixed cost.
- Task list content does not enter the prompt.
- Plugin version changes replace the schema, invalidating KV cache reuse.
Therefore, displaying task content in surface / the panel is usually more suitable for controlling prompt inflation than repeatedly stuffing task body text into the conversation.
Use Cases¶
Suitable for the following scenarios:
- Need to maintain a cross-session task list in the DSH
webprofile. - Main agent needs to create tasks and track status of background sub-agents or background jobs.
- Need to view task status, progress, or structured
surfacein the browser. - Want to use a unified panel to perform operations like changing status, deleting, and generative splitting.
Precautions¶
- The plugin runs with the current
dshprocess permissions; check source code and license before installing. This plugin’s license is MIT. sync-profile.mjsis a local development helper, not published viafiles; usedsh plugin addfor official installation.- Installing from GitHub requires handling pnpm
allowBuilds, and the key must match the exact commit. surfaceis unverified JSON saved on the host side; illegal component types are ignored during rendering.dagdoes not render a bitmap, only renders node chips and edges list.
Conclusion¶
The value of dsh-global-task-list lies in putting “Global Task Library, Persistent Panel, Background Job Status, and Structured surface” into a single DSH plugin: the model can maintain tasks, users can view and modify them in the panel, and background job terminal states can be synchronized back to tasks.
Directory Page: Refer to the page displayed in the DSH plugin directory for this plugin to avoid using unverified URLs.
GitHub: https://github.com/sgzxs/dsh-global-task-list