dsh-self-preserve:防止模型會話停止運行 Harness

前言

DeepSeek Harness (DSH) 運行模型會話,智能體有時需要通過 SSH 或 shell 命令控制宿主機服務。如果命令處理不當,模型可能會發出停止 Harness 自身的指令,導致服務崩潰。由於是正常退出,Restart=on-failure 不會觸發重啓。

dsh-self-preserve 是一個插件,用於攔截此類操作,確保 Harness 自身不會被模型會話意外終止。

插件定位

這是一個 DeepSeek Harness hook 插件。它由 n8guru 維護,旨在防止模型會話停止其所在的 Harness 進程。

核心功能

  1. 攔截自毀命令
    在 Linux 環境下,通過讀取 /proc/self/cgroup 獲取當前 Harness 的 systemd 單元名稱。任何匹配 systemctl stop/kill/restart 目標爲自身單元的命令都會被攔截並返回拒絕策略。

  2. 支持 macOS launchd
    在 macOS 環境下,通過設置環境變量 DSH_SELF_PRESERVE_TARGET,可以攔截對特定服務標籤的 launchd 停止、移除、卸載等命令。

  3. 保留只讀權限
    插件僅攔截對自身服務的控制操作,允許對其他服務進行只讀查詢。

  4. 日誌記錄
    保護激活時會記錄 [dsh-self-preserve] armed for <target>。如果無法發現或配置目標,會記錄明確的不活動警告。

安裝

將插件作爲本地包安裝到 DSH profiles 目錄:

git clone https://github.com/n8guru/dsh-self-preserve ~/.dsh/local-mods/dsh-self-preserve
cd ~/.dsh/profiles/web      # 以及 profiles/headless(如果使用)
# 在 package.json 的 "dependencies" 和 "dsh.profile.bundles" 中添加:
#   "dsh-self-preserve": "file:../../local-mods/dsh-self-preserve"
pnpm install --ignore-workspace

安裝後,必須由外部機器或外部 supervisor 發起重啓。

典型用法

防止 SSH 中的命令注入

在 SSH 命令中調用 systemctl stop 時,如果命令位於雙引號字符串中,本地 shell 可能會提前解析該命令。插件會阻止對自身 Harness 的停止操作:

ssh peer "cat > RUNBOOK.md <<'EOF'
1. `systemctl --user stop deepseek-harness.service`
5. `systemctl --user start deepseek-harness.service`
EOF"

運行測試

插件包含獨立的測試文件,可直接運行:

node --test guard.test.mjs

適用場景與注意

  • 權限依賴:插件以當前 DSH 進程的權限運行。安裝前應檢查源碼與許可證。
  • 重啓限制:插件無法自我重啓。重啓必須由外部機器或外部 supervisor 發起。
  • 配置要求:如果無法發現或配置目標,會記錄不活動警告。這是預期行爲。

總結

dsh-self-preserve 通過在 tools/pre-execute 階段進行策略攔截,解決了模型會話意外停止 Harness 的問題。它保留了其他服務的只讀訪問能力,確保了工作流的穩定性。

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

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

小夜