前言¶
在 DeepSeek Harness(DSH)里让智能体跑一轮任务,模型往往会顺手打开记事本、浏览器、资源管理器、安装向导或播放器。任务结束后若没有人收尾,桌面上会堆满窗口,干扰下一轮工作或人工操作。手动逐个最小化或关闭既费时,也容易误关你本就在用的窗口。
下面介绍社区插件 清场(dsh-window-sweeper):在每个任务开始时记录当时已有窗口的基线,只在任务收尾时处理基线之后新出现的窗口;你自己原先开着的窗口默认不会被收。插件由维护者 Yyhy110421 发布,归类为工作流,仅支持 Windows。
这是什么¶
清场是面向 DSH 的收尾插件:任务做完,把 AI 自己在本轮任务中新开的窗口收掉。 默认动作为最小化(可恢复),也可在设置中改为直接关闭。子任务(subagent)不自动清场,避免把主会话刚开的窗口提前收掉;内置浏览器标签页不在此硬关,文档提示模型使用 dsh_browser_reset_session,以免误关 DSH 主窗口。
核心功能¶
自动基线与收尾¶
每个任务开始时自动拍基线快照;任务收尾时通过 agent/turn-stopping 钩子自动清场。即使模型没有主动调用工具,也会执行收尾逻辑。
工具 window_sweep¶
除自动清场外,提供手动兜底:
mark:重拍基线list:查看候选窗口minimize:最小化(默认行为)close:关闭窗口
设置界面¶
在 DSH 设置 → 清场 中可修改动作、进程排除名单、标题关键词黑名单。
安全边界(README 原文要点)¶
- 只处理基线之后出现的窗口(hwnd 和 pid 均不在基线中)。
- 系统外壳相关进程默认排除。
- 最小化使用
ShowWindow(SW_MINIMIZE);关闭只发WM_CLOSE,不杀进程。 - 仅支持 Windows。
安装与启用¶
在 DSH 中打开 设置 → 插件管理器,安装下列任一来源:
github:Yyhy110421/dsh-window-sweeper
file:<本仓库的绝对路径>
装完后重启 DSH 方可生效。
注意:file: 安装为实体拷贝,改完源码需卸载再装才会更新;update 只支持 npm 注册表插件。本插件不发布到 npm。
插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与许可证(MIT)。
配置¶
设置文件路径:$DSH_HOME/data/window-sweeper.json;未设置 DSH_HOME 时使用 ~/.dsh。
{
"action": "minimize",
"excludeExe": ["explorer", "ShellExperienceHost", "StartMenuExperienceHost", "SearchHost", "TextInputHost", "LockApp"],
"excludeTitleKeywords": []
}
action:minimize|closeexcludeExe:按进程名(不带.exe)排除excludeTitleKeywords:窗口标题包含任一关键词则跳过
典型用法¶
- 通过插件管理器安装并重启 DSH后,正常发起任务即可;开始时会自动拍基线,回合结束时会自动清场。
- 若需在任务中途刷新基线或手动处理窗口,让模型调用
window_sweep的mark/list/minimize/close。 - 若任务期间你也会新开窗口,这些窗口可能被当作候选;用
excludeExe或excludeTitleKeywords排除。
在 Windows 桌面上做本地验证时,仓库提供:
node test/manual.mjs
用于在真实桌面上跑一遍 list / minimize / close。
适用场景与注意¶
适合谁: 经常在 Windows 上用 DSH 跑长任务、且模型会启动各类 GUI 程序的开发者。
已知限制(资料原文):
- 单实例程序(如记事本)若在旧进程里开新窗口,可能被判定为任务前已存在而不被收,这是为避免误伤用户自有窗口的取舍。
- 任务期间用户自己新开的窗口也会进入候选,需靠排除名单或标题黑名单规避。
DSH 生态以「一切皆插件」为思路;社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文所述安装与能力均以仓库 README 与 package.json 为准。
结尾¶
清场用「基线 + 收尾钩子」把 AI 本轮新窗口的收拾做成默认行为,并保留手动工具与可配置排除规则。需要安装说明与源码时,可访问 SkillHub 目录页 与 GitHub 仓库。