前言¶
DeepSeek Harness 的 Web GUI 运行在浏览器客户端,底层服务器是 node 进程。智能体在执行任务时,常通过 shell 命令(如 Get-Process chrome | Stop-Process -Force)清理临时进程。这种“按名称批量杀进程”的模式极易误伤 DSH 自身进程,导致 GUI 窗口消失、连接中断,会话被标记为 interrupted。dsh-process-guard 旨在拦截这些危险的命令模式,确保智能体只能通过显式 PID 或受控的 PassThru 句柄来终止进程。
核心功能¶
此插件作为 DSH 的一个 bundle,在 shell 工具调用执行前进行拦截检查。
- 拦截危险模式:拒绝通过镜像名称、通配符、进程组或未过滤枚举来终止进程的命令。这防止了智能体通过
taskkill /IM chrome.exe /F或killall chrome等方式误杀 DSH 服务器或浏览器。 - 保留安全操作:允许显式指定 PID 的终止命令(如
Stop-Process -Id 42),也允许通过-PassThru获取的进程对象调用.Kill()方法。 - 系统提示注入:自动贡献一段简短的系统提示,让模型在生成代码前就知晓该约束。
- 零依赖:插件本身没有运行时依赖。
安装与启用¶
插件安装通过 DSH 的 profile 管理工具完成。
dsh plugin --profile web add dsh-process-guard
安装后,需要重启 dsh web 使配置生效。可以通过以下命令确认 layer 已正确叠加:
dsh --profile web --dump-config # 查找 "# == dsh-process-guard" layer
如果本地开发,也可以直接安装目录或 git URL,无需构建步骤:
# 安装本地目录
dsh plugin --profile web add /path/to/dsh-process-guard
# 安装 git 仓库
dsh plugin --profile web add git+https://github.com/CetOeil/dsh-process-guard.git
前置要求:当前 harness 的 dsh-tools 必须暴露 ctx.tools.guard() 方法。本插件已验证与 dsh 版本 0.1.5-rc.3 兼容。
典型用法¶
插件通过拒绝或允许特定的命令模式来运行。
允许的操作:
* 直接通过 PID 终止:
Stop-Process -Id 42
- 通过
-PassThru获取并终止自己启动的进程:
$p = Start-Process chrome -PassThru
# ... 其他操作
$p.Kill()
拒绝的操作:
* 通过名称批量终止:
Get-Process chrome | Stop-Process -Force
- 使用通配符或工具别名:
taskkill /IM chrome.exe /F
killall chrome
pkill -f chrome
配置说明¶
插件默认配置是安全的,位于 cordis.patch.yml 中。你可以通过覆盖该配置来调整行为。
默认模式为 deny(直接拦截)。若需改为询问模式,可在 profile 的 cordis.patch.yml 中添加配置:
- id: process-guard
name: dsh-process-guard
config:
mode: ask # 'deny' (默认) 或 'ask'
announce: true # 是否添加系统提示
enabled: true
主要配置项说明:
| 配置项 | 默认值 | 说明 |
|---|---|---|
mode |
deny |
deny 直接拦截命令;ask 将命令发送到审批流程。 |
enabled |
true |
设置为 false 可完全禁用检查。 |
tools |
common shell tool names | 需要检查的 shell 工具名称列表。 |
protectedImages |
cross-platform browsers + harness/terminal hosts | 必须被保护的镜像名称列表。 |
safeFilterAllows |
false |
默认拒绝通过 CommandLine 过滤器允许的命令。 |
注意:tools 和 protectedImages 会替换默认列表,使用 additionalTools 和 additionalProtectedImages 来追加。
适用场景与注意¶
此插件适合需要在浏览器环境中运行、且智能体可能需要清理临时进程的 Harness 项目。它特别适用于使用 headless Chrome 或 Edge 进行自动化截图验证的场景。
注意:
* 插件以当前 DSH 进程的权限运行,因此必须确保 Harness 版本支持 ctx.tools.guard()。
* 使用 sudo killall 或 wmic 等命令也会被拦截。
* 该插件采用 MIT 许可证。
总结¶
dsh-process-guard 是一个针对 DSH 生态的安全加固插件。它通过在 shell 工具层面对命令进行预检,解决了智能体因“杀错进程”导致会话中断的常见痛点。配合 dsh 0.1.5-rc.3 及以上版本使用,可以显著提升智能体在复杂环境中的稳定性。