dsh-safety-restart:DeepSeek Harness 安全無感重啓插件

前言

在 DeepSeek Harness (DSH) 中,修改宿主半代碼(如 index.js 或 lib/*.js)通常需要整進程重啓才能生效。Agent 沒有重啓手段時,只能依賴用戶手動操作。這個插件將重啓能力下沉到 Agent 層面,並增加了安全控制,確保重啓行爲可控。

這是什麼

dsh-safety-restart 是 DeepSeek Harness 的一個安全、無縫重啓插件,由 Dayi-Z 維護,屬於 admin-security 類別。它允許 Agent 重啓宿主並恢復,但重啓前必須通過四道安全閘門(循環熔斷、其他會話、不可解析的 bundle、不可用的拉起手段),任何閘門失敗都會拒絕重啓並說明原因。

核心功能

  1. 重啓循環熔斷:基於 loopMax 和 loopWindowMs 的計數器,防止 Agent 在配置錯誤時陷入無限重啓風暴。
  2. 會話狀態檢查:在重啓前檢查是否有其他會話處於活躍狀態(turn/start 之後未 turn/end),避免打斷他人工作。
  3. Profile Bundle 驗證:檢查 node_modules 和入口文件是否存在,拒絕 checked:false 的配置。
  4. 跨平臺拉起機制:
    • 桌面端使用 Electron app.relaunch()。
    • Web/CLI 使用 process.exit() 和分離的 helper。
  5. 會話恢復機制:重啓前寫入續作標記,重啓後恢復會話上下文。
  6. 審計日誌:記錄所有重啓決策和狀態,文件名爲 safety-restart-audit.l。

安裝與啓用

在 profiles/<name>/package.json 中添加依賴和 bundle:

// profiles/<name>/package.json
{
  "dependencies": { "dsh-safety-restart": "link:/path/to/dsh-safety-restart" },
  "dsh": { "profile": { "bundles": [ "...", "dsh-safety-restart" ] } }
}

安裝後必須重啓一次 DSH 實例,以確保插件被加載。

典型用法

Agent 側調用:

safety_restart({ reason: "改了宿主半的 index.js,讓新路由生效" })
safety_restart({ reason: "...", force: true })

UI 操作:設置 → 插件 → 「dsh-safety-restart」卡片。

HTTP API(僅接受本機請求):

GET  /safety-restart/status
POST /safety-restart/restart   { "reason": "ui" }

適用場景與注意

  • 權限與執行:插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 健康檢查機制:Web/CLI 端的健康檢查是 TCP 端口恢復,不是 HTTP 200。
  • 會話檢查範圍:busy 狀態只覆蓋本進程啓動之後的會話,更早的會話不在此列。
  • Bundle 檢查範圍:僅證明文件存在,不證明導入成功,更不證明客戶端契約正確。
  • 網絡限制:HTTP API 只接受本機請求,反代或遠程訪問會被 403。
  • 客戶端兼容性:客戶端代碼需要兼容 rc 契約(list 或 keyed)。

總結

dsh-safety-restart 將 Agent 的重啓能力從手動操作轉變爲可調用的工具,同時通過四道閘門確保環境不會因重啓而損壞。它提供了審計日誌和會話恢復機制,適合需要頻繁調整宿主代碼的場景。

目錄頁 | GitHub 倉庫

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

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

小夜