dsh-process-guard:防止 DSH 主机与浏览器被误杀的进程防护插件

前言

DeepSeek Harness 的 Web GUI 运行在浏览器客户端,底层服务器是 node 进程。智能体在执行任务时,常通过 shell 命令(如 Get-Process chrome | Stop-Process -Force)清理临时进程。这种“按名称批量杀进程”的模式极易误伤 DSH 自身进程,导致 GUI 窗口消失、连接中断,会话被标记为 interrupted。dsh-process-guard 旨在拦截这些危险的命令模式,确保智能体只能通过显式 PID 或受控的 PassThru 句柄来终止进程。

核心功能

此插件作为 DSH 的一个 bundle,在 shell 工具调用执行前进行拦截检查。

  1. 拦截危险模式:拒绝通过镜像名称、通配符、进程组或未过滤枚举来终止进程的命令。这防止了智能体通过 taskkill /IM chrome.exe /F 或 killall chrome 等方式误杀 DSH 服务器或浏览器。
  2. 保留安全操作:允许显式指定 PID 的终止命令(如 Stop-Process -Id 42),也允许通过 -PassThru 获取的进程对象调用 .Kill() 方法。
  3. 系统提示注入:自动贡献一段简短的系统提示,让模型在生成代码前就知晓该约束。
  4. 零依赖:插件本身没有运行时依赖。

安装与启用

插件安装通过 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 及以上版本使用,可以显著提升智能体在复杂环境中的稳定性。

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

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

小夜