dsh-tool-call-guard: 中和無效 JSON 參數的工具調用

前言

在 DeepSeek Harness (DSH) 的調試與測試流程中,模型生成的工具調用參數有時會包含無效的 JSON(例如未轉義的內部引號)。這類問題在流式傳輸路徑下可能被寬容處理,但在使用 vLLM 等嚴格服務器進行歷史記錄回放時,會觸發 400 錯誤,導致整個會話被“破壞”。本文介紹 dsh-tool-call-guard 插件,用於在傳輸前中和這些無效的工具調用,防止會話損壞。

插件簡介

dsh-tool-call-guard 是 DSH 的一個管理安全類插件,由 alchemistwu 維護。它攔截 DSH 的 llm/stream 水瀑布,對參數無法通過 JSON.parse 驗證的工具調用進行中和處理,確保會話的連續性。

  • 插件名: dsh-tool-call-guard
  • 維護者: alchemistwu
  • 分類: admin-security
  • 許可證: MIT

核心功能

  1. 攔截與中和: 攔截 DSH 的 llm/stream 水瀑布,對無效 JSON 參數的工具調用進行中和。
  2. 純文本記錄: 將被中和的工具調用記錄爲純文本,保留原始內容,以便模型在上下文中重新發出修正後的調用。
  3. 協議平衡: 將匹配的工具結果重寫爲純用戶消息,避免出現孤立的 tool_calls 或 role:"tool" 條目,防止因協議不平衡導致的後續請求失敗。
  4. 零開銷: 對於乾淨的歷史記錄,僅增加一次 JSON.parse 操作,消息數組對象保持不變。
  5. 追加-僅日誌: 尊重 DSH 的追加-僅日誌機制,不重寫持久化的會話日誌,僅在傳輸層進行中和。
  6. 提供商無關: 基於 llm/stream 接口,覆蓋所有適配器(DeepSeek、社區適配器等)。
  7. Fail-open: 如果 Guard 本身出錯,原始請求會通過,不影響正常流程。
  8. 零配置: 安裝即用。

安裝與啓用

使用官方安裝命令添加插件:

dsh plugin add dsh-tool-call-guard

安裝完成後,必須重啓 DSH 主機(dsh web 或 DSH Desktop)才能使插件生效。

典型場景

當模型發出類似以下格式的無效 JSON 參數時:

{"queries": [""The Idiots" trailer youtube official"]}

插件會執行以下操作:
1. 攔截該工具調用塊。
2. 將其轉換爲文本記錄,提示模型其參數無效。
3. 將對應的工具結果轉換爲用戶消息,保持對話協議平衡。

這使得會話能夠繼續運行,避免了因參數無效導致的 400 錯誤阻斷後續請求。

注意事項

  • 重啓依賴: 插件安裝後必須重啓 DSH 主機才能生效。
  • Fail-open 行爲: 插件設計爲 Fail-open,如果 Guard 內部邏輯出錯,原始請求會原樣通過,不會阻斷請求。
  • 許可證: 代碼遵循 MIT 許可證。

總結

dsh-tool-call-guard 爲 DSH 提供了在傳輸層修復無效工具調用參數的能力,特別適用於需要與嚴格 OpenAI 兼容服務器(如 vLLM)交互的場景。它以零配置和 Fail-open 的特性,在不改變現有日誌結構的前提下,增加了會話的魯棒性。

查看插件目錄
查看源碼

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

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

小夜