前言¶
在 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 里注册。步骤如下。
-
将插件包放到 DSH profile 的 node_modules(
lib/已含构建产物lib/index.js、lib/client.js):
- 拷贝到~/.dsh/profiles/node_modules/dsh-task-control/,或
- 对本目录建立 junction 链接(本地开发常用)。 -
在
~/.dsh/profiles/web/cordis.patch.yml中插入:
- insert:
- id: task-control
name: 'dsh-task-control'
- 重启 DSH web,硬刷新页面(Ctrl+Shift+R)。
从源码重新构建时使用:
node build.mjs
生成 lib/index.js(宿主半)与 lib/client.js(客户端 bundle)。
典型用法¶
安装并刷新 Web 界面后,任务控制相关按钮会出现在 DSH Web 的插槽中(具体位置以当前 DSH 客户端 UI 为准)。
- 下载卡住:点「急停」→ 阅读警告并勾选确认 → 确认终止;再换源或重新发起安装。
- 不确定是否在跑:点「检测」→ 根据弹窗区分正常、出错、下载中(含进度或 pip 等待提示)、疑似卡死;必要时在弹窗内强制终止。
- 任务跑了一半要改约束:点「追加条件」→ 输入补充说明 → 按插件设计的隐形重跑流程继续,界面不堆用户气泡。
自定义按钮与检测输出文案:设置 → 通用设置 → 任务控制,共 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 为准。
相关资源¶
- 问题缘起讨论:task stuck in download/install cannot be stopped
- 社区手册专题:Stop a DeepSeek Harness tool that will not cancel
插件目录页:https://www.skillhub.cn/plugins/ningmengxr/dsh-task-control
GitHub 仓库:https://github.com/ningmengxr/dsh-task-control