dsh-session-repair:DSH 會話診斷與安全修復

前言

在 DSH 環境中,當 DeepSeek 網關在工具調用增量中發出空的 id 或 name 時,已持久化的歷史記錄會被“污染”,導致後續加載會話時拋出 message must have tool source 錯誤。dsh-session-repair 是一個 DSH Web 插件,提供會話診斷、受信檢查點、修復前備份和安全修復能力,旨在修復這些被污染的歷史記錄。

插件定位

dsh-session-repair 是一個 DSH Web 插件,用於會話診斷、受信檢查點、修復前備份和安全修復。
* 維護者: Zn-Dk
* 分類: session
* 許可證: MIT

核心功能

該插件提供以下能力:
* 會話診斷: 通過 Session Health Check 生成診斷報告。
* 安全修復: 提供確定性的修復計劃,修復前自動創建備份。
* 備份管理: 支持修復前備份、回滾至修復前狀態、手動清除備份。
* Agent 工具集成: 註冊 dsh_session_repair 模型可調用工具,用於只讀診斷。
* 報告導出: 支持診斷 JSON 導出和報告文件下載。

安裝與啓用

通過 npm 安裝該插件(推薦):

dsh plugin --profile web add dsh-session-repair

安裝完成後,重啓 dsh web 服務並刷新 Web 界面。

使用方式

1. Web 界面操作

打開任意會話,在 Chat 頭部點擊 Session Health Check。
* 如果診斷報告狀態爲 repairable(可修復)且存在確定性修復計劃,面板將顯示 Backup & Repair 按鈕。
* 點擊該按鈕會確認目標序列和修復前備份,然後執行批量修復並重新驗證。
* 如果會話處於模糊、活躍、文件已變更或被阻塞狀態,將不會顯示可寫修復按鈕。
* 面板還提供 Refresh(刷新報告)、Copy Report(複製 JSON)、Export Report(導出文件)、Restore Pre-Repair(回滾)和 Clear Backups(清除備份)功能。

2. Agent 工具調用

插件註冊了一個模型可調用的工具 dsh_session_repair。
* 用途: 這是一個只讀診斷工具,用於診斷會話健康狀態。
* 典型用法: 在當前會話中告訴 Agent “health-check the current session”,Agent 會調用該工具。在歷史會話中,可指定 sessionId 進行診斷。
* 注意: 工具僅用於診斷,實際的修復操作仍需通過 Web 界面的 Session Health Check 面板執行。

安全邊界與注意事項

  • 權限控制: 插件以當前 dsh 進程權限運行,Host 會先讀取原始存儲再決定是否調用引擎 API。客戶端無法直接觸碰 ~/.dsh 目錄,也不能提交任意的 JSON 補丁。
  • 修復機制: 修復操作使用 batchId 和工件指紋,每次修復前強制創建預修復備份,並在重新驗證後才原子性地替換舊數據。
  • 會話狀態: 活躍會話通過 ctx.get('sessions') / ctx.get('agents') 檢測,其未閉合的回合/步驟被視爲正常追加狀態,不會觸發修復。
  • 數據存儲: 插件自身數據存儲在 ~/.dsh/session-repair/ 目錄。外部的 ~/.dsh/backup-sessions-* 目錄僅作爲遺留的法醫/對比源使用,默認不會被自動恢復。

總結

dsh-session-repair 提供了一套在 Web 界面下安全修復 DSH 會話歷史損壞的方案,特別是針對工具調用 ID 丟失導致的污染問題。它通過強制備份和確定性修復計劃,降低了手動干預的風險。

  • 插件目錄: https://www.skillhub.cn/plugins/Zn-Dk/dsh-session-repair
  • GitHub: https://github.com/Zn-Dk/dsh-session-repair
羽毛球分组比赛记分
小程序二维码

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

小夜