前言¶
在 DSH 裏跑 agent,常見的問題不是「模型答錯了」,而是回合在不該結束的地方結束:API 因限流或網關錯誤中斷、工具失敗被框架當成正常收尾、模型只輸出思考沒有正文就停住。會話日誌一旦被寫壞,歷史往往整段打不開。單靠換模型或手動重試,很難在每次異常點都留下可解釋的原因。
下面介紹社區插件 dsh-harden(維護者 thissensen)。它在 agent 生命週期的關鍵節點做防護,目標是讓停止有明確原因,而不是靜默變成「正常結束」。插件分類爲工作流,npm 包名 dsh-harden,當前資料中版本爲 0.0.2,許可證 MIT,要求宿主 DSH >= 0.1.7-rc.1。
這是什麼¶
dsh-harden 自定位爲「DSH 運行時看護層」。它不替換 DSH 核心,而是通過 Cordis patch 與設置頁能力,在 API 失敗、工具失敗、空回合、上下文膨脹、子代理並行通知、會話落盤異常等場景上補一層兜底與修復。
目錄頁:SkillHub — thissensen/dsh-harden
源碼與說明:GitHub — thissensen/dsh-harden
核心功能¶
資料中列出的能力如下,按設置頁卡片與 README 用途對應說明。
API 與回合續跑¶
- 網絡請求中斷續跑(設置頁可開關):在官方重試耗盡後,按配置再補試;可設 網絡重試次數(0–99,0 表示不兜底)和 觸發重試的失敗特徵(錯誤碼
SERVER/RATE_LIMIT/TIMEOUT/TRANSPORT與 HTTP 狀態碼502/429;留空則不重試任何失敗)。 - 工具調用失敗續跑(需開關,且必須配置 失敗提示前綴):當工具調用失敗被吞、框架仍把回合當作正常結束時,注入提示讓模型重新發起。前綴默認爲空時,該規則不生效;需粘貼平臺警告的固定開頭,整段匹配開頭、區分大小寫。例:
⚠ Could not execute tool;前綴以<開頭時,正文裏成對出現該標記也算失敗。 - 回合無正文收尾(可開關):最後一步只有思考、既沒有回覆也沒有工具調用時,拉回再走一步,應對「只輸出思考直接中斷」類問題。
上下文與子代理¶
- 上下文自動壓縮(可開關):會話超過 觸發閾值(插件默認
200K,也支持如1M、100000等形式)後,較早歷史被濃縮成摘要,界面沿用平臺自帶的「上下文已壓縮」提示。壓縮範圍三檔:全部壓縮 / 僅主代理 / 僅子代理(默認全部壓縮);可自定義 摘要指令。 - 子代理通知聚合(可開關,默認關閉):多個子代理並行結束時,中間通知先壓住,全部結束後合併成一條送達,避免逐個喚醒主代理。
- 子代理會話異常自動修復(常駐開啓,無開關):平臺即將寫入不合規的重試事件時,在落盤前修正,減少會話無法打開;修正時回合尾部有一行淺色提示,痕跡寫入會話日誌,重啓後仍可見。
工具與會話修復¶
- 後臺任務工具(可開關):開啓後模型可使用
job_background啓動後臺命令,並用job_list/job_output/job_kill管理;對接 pwsh,用於緩解僅 Git Bash 時難以創建超過約 120 秒後臺任務的限制。關閉後相關工具從模型側消失。 - 修復損壞會話:設置頁提供掃描按鈕,掃描全部會話日誌並修復已知損壞形態,使「stored session is corrupt」類歷史重新可加載。
設置入口在 DSH 界面 「DSH優化」 分區下,共八張卡;截圖可能與舊版文案略有差異,以實際界面爲準。
安裝與啓用¶
安裝只是把包放到位,還必須註冊到 profile,DSH 啓動時纔會加載。
安裝包(三選一)¶
從 npm:
npm install dsh-harden
從 GitHub Releases: 下載 dsh-harden-<版本>.tgz 後:
dsh plugin --profile web add file:<tgz 文件的絕對路徑>
從源碼構建: 需在首次啓動 DSH 之前完成構建(client 殼受啓動快照約束)。步驟見倉庫 README:依賴安裝、node scripts/link-deps.mjs、pnpm build(tsc host + vite client)。
註冊到 profile¶
Web 端(link 路徑示例,npm 安裝時改用對應 link 或版本範圍):
dsh plugin --profile web add link:<克隆目錄的絕對路徑>
桌面端:編輯 ~/.dsh/profiles/desktop/package.json 兩處——在 dependencies 增加 "dsh-harden": "link:<目錄>/dsh-harden"(npm 安裝則用版本範圍);在 dsh.profile.bundles 數組增加 "dsh-harden"。在該目錄執行 pnpm install 並 重啓桌面端。
典型用法與配置順序¶
- 按上面路徑安裝並完成 profile 註冊,重啓 DSH。
- 打開 DSH優化 設置,至少按需打開:網絡續跑、回合無正文、上下文壓縮、後臺任務等開關。
- 務必填寫「失敗提示前綴」(若需要工具失敗續跑):不填則工具失敗被吞時的規則不會生效。將你在界面裏看到的平臺警告原文固定開頭粘貼進去。
- 網絡續跑:設置重試次數與失敗特徵;留空失敗特徵表示不對任何失敗做額外重試。
- 上下文壓縮:確認閾值與壓縮範圍(主代理 / 子代理 / 全部),必要時改摘要指令。
- 若歷史無法打開,在 修復損壞會話 卡執行掃描修復。
插件以當前 DSH 進程權限運行;安裝前建議閱讀 倉庫源碼 與 MIT 許可證,確認符合你的環境與合規要求。SkillHub 爲社區插件目錄,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-harden 把 API 中斷、工具失敗被吞、空思考回合、日誌損壞、長上下文與子代理通知等「莫名停住」收斂到可配置、可掃描的看護邏輯。裝完後記得註冊 profile,並在設置頁補全 失敗提示前綴 等關鍵項。
- 目錄頁:https://www.skillhub.cn/plugins/thissensen/dsh-harden
- GitHub:https://github.com/thissensen/dsh-harden