dsh-session-shield:防止畸形 tool call 導致會話日誌無法加載

前言

DeepSeek Harness(DSH)在處理模型調用時,偶爾會遇到模型輸出畸形 tool call 的情況,例如 id 爲空、name 爲空或 arguments 不是字符串。DSH 在運行期校驗較寬鬆,但解碼期要求嚴格,一旦壞事件落盤,會話日誌便無法加載,側邊欄顯示 stored session ... is corrupt。

下面介紹一個插件,它在日誌落盤之前攔截並修復這些問題。

插件定位

這是一個 DeepSeek Harness 插件,由 hbgdjb 維護,許可證爲 MIT。它掛在 DSH 官方的 llm/stream waterfall 上,通過一個鉤子覆蓋全部模型調用。

核心功能

  • 壞調用自動修復:攔截並替換畸形 tool call。空 id 會生成 call-guard-<token>-<index>,空 name 會替換爲 guard_malformed_tool_call,非法 arguments 會轉成 JSON 字符串。
  • 正常調用原樣通過:對於有效的 tool call,不做任何修改。
  • 無額外依賴與零配置:無額外依賴,無客戶端代碼,不寫任何文件,安裝後即生效。

安裝

通過插件管理器 install_bundle,或 設置 → 插件的安裝入口安裝。

  1. 安裝包(推薦分發):直接給出本 .tgz 的絕對路徑。
  2. 源碼目錄:解壓源碼 zip 後給出目錄絕對路徑。
  3. Registry/Git:發佈後用包名或倉庫地址安裝。

配置與生效

安裝成功後,在 profile 的 cordis.patch.yml 中配置:

- id: session-shield
  enabled: true

驗證配置是否生效:

dsh --profile <profile> --dump-config

輸出中應包含 # == dsh-session-shield 層與 - id: session-shield 行。最後重啓 DSH 生效。

驗證與注意

  • 環境要求:需要 DeepSeek Harness 0.1.x(Web 端)。
  • 日誌行爲:插件日誌輸出到內存 buffer,不打印到 manager.log。因此啓動時看不到 “armed” 日誌是正常現象。
  • 安全性:插件以當前 DSH 進程權限運行,安裝前請檢查源碼與許可證(MIT)。

結尾

dsh-session-shield 通過在流處理階段攔截並修復畸形 tool call,解決了會話日誌損壞的問題。這是一個輕量級、零配置的插件,適合所有使用 DSH 0.1.x 的開發者。

目錄頁 | GitHub 倉庫

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

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

小夜