dsh-task-control:DSH 下载卡死急停与任务健康检测

前言

在 DeepSeek Harness(DSH)里跑智能体任务时,pip 安装大包、从 GitHub 拉大文件是常见操作。国内网络下这些下载容易卡顿或超时。DSH 原生的「停止」和任务暂停,在实现上往往要等当前卡住的工具调用返回之后才会生效——任务既下不完,也停不掉。社区在 GitHub Discussions #3400 里讨论过 session.cancel 与工具进程不同步的问题;dsh-task-control 由维护者 ningmengxr 发布,分类为联网工具,在 DSH Web 侧补上急停、进度感知检测和运行中追加条件等能力。本文介绍其定位、功能与安装方式,事实均来自项目 README 与 package.json。

这是什么

dsh-task-control 是 DeepSeek Harness 插件:针对 pip / GitHub 等下载卡住时的一键急停,配合下载进度检测、卡死识别和隐形追加条件。仓库地址:https://github.com/ningmengxr/dsh-task-control;社区目录页:https://www.skillhub.cn/plugins/ningmengxr/dsh-task-control。当前 package.json 中版本为 0.4.5,许可证 MIT,Node 要求 >=20。DSH 兼容范围在资料中写为 >=0.1.0-rc.8 <0.2.0,profile 为 web。

核心功能

界面侧提供三个主操作(默认文案可在设置里改):

操作 作用
急停(默认文案「急停」) 强制终止当前任务:按命令特征结束卡住的下载/安装进程,并停止会话;带防误触确认(需勾选「了解丢失进度」才能确认)
检测(默认文案「拍一下deepseek」) 检查任务状态:出错 / 疑似卡死 / 运行中 / 健康
追加条件(默认文案「追加条件」) 运行中追加补充条件:先中止 → 弹窗输入 → 带条件隐形重跑

下面分点说明 README 中强调的行为。

下载卡死急停

当 pip install torch 等大包、GitHub 大文件或 curl 下载卡住时,原生停止按钮可能排在卡住工具返回值之后而无反应。点「急停」后,宿主按命令特征查找并结束相关进程,任务立即停止,便于换源或重试。急停前会警告未完成下载会丢失,需勾选确认后才可执行。

下载中的检测逻辑

检测到正在执行下载/安装类命令时,会先查实际状态,而不是一律报「疑似卡死」:

  • curl 类(有输出文件):显示真实进度百分比,例如正在下载某 zip 并给出进度。
  • pip 类(无输出文件):提示正在下载、无法计算进度,不展示误导性假进度。
  • 下载进程已退出:提示下载异常中断,并可在检测弹窗内强制终止。

卡死识别

非下载类工具调用超过 10 分钟未返回时,检测会提示「疑似卡死:工具 X 已运行 N 分 N 秒」;弹窗内可直接强制终止(杀进程),README 说明 session.cancel 对此类情况能力有限。

隐形追加条件

「追加条件」的恢复/条件消息经宿主通道以插件来源消息注入会话:模型照常执行,聊天界面只显示一条低调的上下文提示行,不出现「继续」或「补充条件…」类用户气泡。

宿主路由

宿主半挂载三条路由(loopback Host 校验):/dsh-task-control/resume、/dsh-task-control/kill、/dsh-task-control/download-status;浏览器端通过同源 fetch 调用。客户端 bundle 按 window.__ModuleLoader__ 契约加载。

安装与启用

资料中的安装不是 dsh plugin add github:... 一类命令,而是把插件包放进 profile 的 node_modules,并在 cordis patch 里注册。步骤如下。

  1. 将插件包放到 DSH profile 的 node_modules(lib/ 已含构建产物 lib/index.js、lib/client.js):
    - 拷贝到 ~/.dsh/profiles/node_modules/dsh-task-control/,或
    - 对本目录建立 junction 链接(本地开发常用)。

  2. 在 ~/.dsh/profiles/web/cordis.patch.yml 中插入:

- insert:
    - id: task-control
      name: 'dsh-task-control'
  1. 重启 DSH web,硬刷新页面(Ctrl+Shift+R)。

从源码重新构建时使用:

node build.mjs

生成 lib/index.js(宿主半)与 lib/client.js(客户端 bundle)。

典型用法

安装并刷新 Web 界面后,任务控制相关按钮会出现在 DSH Web 的插槽中(具体位置以当前 DSH 客户端 UI 为准)。

  1. 下载卡住:点「急停」→ 阅读警告并勾选确认 → 确认终止;再换源或重新发起安装。
  2. 不确定是否在跑:点「检测」→ 根据弹窗区分正常、出错、下载中(含进度或 pip 等待提示)、疑似卡死;必要时在弹窗内强制终止。
  3. 任务跑了一半要改约束:点「追加条件」→ 输入补充说明 → 按插件设计的隐形重跑流程继续,界面不堆用户气泡。

自定义按钮与检测输出文案:设置 → 通用设置 → 任务控制,共 6 项(急停/检测/追加条件按钮文案,以及检测·无异常、出错 {error}、运行中三类输出模板)。文案设置存浏览器 localStorage。

适用场景与注意

适合谁:经常在 DSH Web 里用智能体执行 pip、GitHub、curl 等联网安装/下载,且遇到过「停不掉」或难以判断是真卡死还是在下大包的开发者。

能力边界(README / SECURITY 摘要):

  • 本插件属于高能力插件(命令执行、文件读写、网络请求),安装前请阅读仓库 SECURITY.md 与源码、许可证。
  • 急停/强制终止:Windows 用 taskkill,POSIX 用 kill,仅针对运行中且命令行匹配的调用;匹配不到时仅发送会话取消,不盲目杀进程。
  • 文件读写:只读下载输出文件大小/时间以算进度;写入限于插件自身目录与浏览器本地设置。
  • 网络:宿主路由仅 loopback;自动更新可查询 npm registry;资料写明无遥测、无数据上报,不使用凭据。
  • 急停会终止当前任务,未完成下载需重新开始。
  • 依赖宿主 webServer / agents;不可用时追加条件会降级为「可见消息」恢复,README 称不影响 DSH 本体。
  • 自动更新会替换插件自身 lib/(下次启动生效);junction/symlink 开发安装会跳过自动更新。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。本文不代替官方文档,使用前请以仓库最新 README 为准。

相关资源

插件目录页:https://www.skillhub.cn/plugins/ningmengxr/dsh-task-control
GitHub 仓库:https://github.com/ningmengxr/dsh-task-control

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

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

Xiaoye