前言¶
在 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