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:创建任务,可携带 titledescriptionparentIddependsOnsurfaceprogress 等字段。
  • 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 同步 completedfailedkilled 等终态。

这个能力适合“主 agent 创建任务,子 agent / 后台作业执行任务”的流程:任务创建是显式的,状态同步由插件在关联后完成。

4. surface 生成式 UI

任务可携带 surface 字段。surface 被渲染为白名单递归组件树,支持的组件包括:

sectionmetricstatusBadgeprogresstablelisttimelinedagdisclosure

需要注意:

  • dag surface 不绘制定位图,仅渲染节点 chips 和 edges list。
  • surface 在 host 端保存为未验证 JSON。
  • 非法组件类型在渲染时被忽略,而不是在加载时报错。

安装与启用

npm 安装(推荐)

npm 安装使用预构建产物,适合大多数使用场景:

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

插件声明 dsh.bundledsh 会自动将其加入 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-domainzod

如果插件无法加载,优先检查 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

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

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

Xiaoye