前言¶
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 及以上版本使用,可以顯著提升智能體在複雜環境中的穩定性。