前言¶
在 DeepSeek Harness(DSH)的日常開發中,修改宿主側插件(host 半邊)通常需要重啓 DSH 應用才能生效。重啓宿主會直接中斷當前所有正在運行的會話,包括髮起這次重啓操作的 agent 自身,導致工作流中斷。
comer2031/dsh-desktop-auto-restart 插件旨在解決這個痛點。它提供了一套機制,將“重啓宿主”封裝爲可調用的工具或側邊欄操作,並在新進程啓動後,利用清單機制自動喚醒指定的會話,使 agent 能夠繼續工作。
核心功能¶
插件主要包含以下功能:
- 工具
dsh_restart:默認關閉,測試性質。調用參數包括reason(原因)、sessionIds(待喚醒清單)和可選的delaySeconds。若不傳delaySeconds,默認等待 10 秒以等待回執落盤;若傳 0 則立即重啓。模型調用該工具需在設置中開啓開關。 - 側邊欄按鈕:在 DSH 界面側邊欄底部提供操作入口。當宿主處於空閒狀態時,點擊直接重啓;當宿主繁忙時,會彈出一個紅色確認層,確認後纔會執行重啓。
- 自動喚醒機制:重啓後,插件會讀取待喚醒清單,通過官方通道嘗試喚醒會話,並注入“已重啓完成,請繼續”的通知。若喚醒失敗,清單會保留,等待下次啓動重試。
- 防自殺機制:腳本優先使用宿主自身的 PID(進程樹)來定位和終止進程,而不是通過進程名批量殺戮。這避免了在多實例或特定環境下誤殺其他同名進程。
安裝與啓用¶
插件通過 DSH CLI 安裝:
dsh plugin --profile <profile 名> add dsh-desktop-auto-restart
安裝完成後,需重啓 DSH 應用使插件生效。若需在設置頁面調整配置,則無需重啓,但若要開啓 Agent 調用工具的權限,必須重啓 DSH。
配置項¶
插件配置位於 <profile>/cordis.patch.yml 中,可通過定向 patch 修改默認值。核心配置如下:
agentToolEnabled:默認false。控制dsh_restart工具是否註冊給模型調用。設爲true後需重啓 DSH 才生效。wakeOnStart:默認true。控制插件啓動時是否讀取清單並執行喚醒。wakeDelayMs:默認3000。啓動後等待多久開始喚醒,避免過早獲取不到會話對象。pendingTtlMs:默認1800000(30分鐘)。待喚醒清單的過期時間。scriptPath:默認''。自定義重啓腳本路徑。留空則使用插件自帶的腳本。dryRun:默認false。設爲true時僅落清單、不執行實際重啓,用於演練。installRoot:默認''。宿主安裝目錄。留空時自動探測(讀取當前進程 exe 所在目錄),探測失敗才使用內置默認路徑。
兼容性與注意事項¶
- 平臺限制:僅支持 Windows 平臺的 DSH 桌面端(宿主版本 ≥ 0.2.0-rc.1)。非 Windows 平臺插件會拒絕重啓操作。
- 依賴環境:依賴 PowerShell 和 WMI。PowerShell 執行策略需允許本地腳本(
RemoteSigned)。若執行策略爲Restricted,腳本可能不會被執行,但工具會誤報成功。 - 安全軟件:火絨等安全軟件可能會攔截 WMI 操作,在日誌中記錄
WmiPrvSE.exe的敏感動作。這屬於預期行爲,需放行。 - 工具註冊:工具默認不註冊,必須通過設置頁面開啓
agentToolEnabled並重啓 DSH,模型才能看到並調用該工具。 - 執行結果:工具的回執只覆蓋“腳本是否被拉起”或“腳本頭幾秒是否拒絕”。腳本中途的失敗(如強殺進程超時)只會記錄在日誌文件中,不會反映在工具返回值裏。
- 忙碌判定:宿主繁忙時(有運行中的會話、排隊消息、後臺任務等)會拒絕重啓。特別地,調用方自己所在的會話不計入繁忙判定。
結語¶
該插件爲 DSH 宿主的重啓提供了一種可控的自動化方案。通過配合會話恢復能力,它能在重啓宿主後儘量減少業務中斷。使用前請確保環境滿足 PowerShell 和 WMI 的運行條件,並留意安全軟件的攔截策略。
插件目錄與源碼:
* SkillHub 目錄頁
* GitHub 倉庫