前言¶
在 DSH(DeepSeek Harness)裏走 Perplexity API 的路線,常見的問題不是模型本身不可用,而是請求格式對不上:Anthropic 系模型(Claude Opus 5.5、Claude Sonnet 5.5)要求帶 output cap,DSH 的工具名可能和 Perplexity 內建工具撞名,工具 schema 少了 properties 或 description 也會被拒。GPT-6.1 Sol 又對 stop、temperature、reasoningEffort 的取值範圍更敏感。這些錯誤都是 HTTP 400,從 DSH 側看只是請求失敗,不好定位。
下面介紹 Kinfxhk 維護的社區插件 DSH Perplexity Guard。它在請求發往 Perplexity provider 前做修正,並提供一鍵修復 provider 設置的入口。插件包名是 @local/perplexity-guard,倉庫名 dsh-perplexity-api-fix-plugin 是歷史原因。
這個插件是什麼¶
一個 DSH Host + Web 插件,當前版本 1.0.3,MIT 許可證,不屬於 Perplexity、Anthropic、OpenAI 或 DeepSeek 官方。
它面向一個具體場景:DSH 通過 Perplexity 的 API 使用 Claude Opus 5.5、Claude Sonnet 5.5 和 GPT-6.1 Sol 時,請求經常因格式問題失敗。插件在每次發往 perplexity provider(可在配置裏改)的請求上做補正,並把導致失敗的 provider 設置修好。
要求:
- DSH 版本
>= 0.2.1-rc.5。 - 配置好
llm-pi-aiprovider,provider id 爲perplexity(或在插件配置裏改providerId)。 - 該 provider 裏已填好 Perplexity API key。
插件官方說明裏強調兩件事:它不修改消息內容,Perplexity 返回 finish_reason=refusal 屬於上游內容審覈決定,插件只記錄日誌;它也不存儲或讀取 API key。
核心功能:請求修正¶
每次請求發往被守護的 provider 時,插件按下面這張表處理:
| 原問題 | 修正方式 |
|---|---|
| Anthropic 模型拒絕不帶 output cap 的調用 | 補上 maxTokens(線上發送爲 max_output_tokens),並按剩餘上下文窗口封頂 |
DSH 工具名與 Perplexity 內建工具(web_search、fetch_url、sandbox 等)撞名,返回 HTTP 400 |
在請求裏改名爲 dsh_<name>,流式返回的 tool call 裏再改回原名 |
工具 schema 爲 type: "object" 但沒有 properties,或 description 爲空,返回 HTTP 400 |
補 properties: {} 或默認 description,不觸碰 argument 本身 |
出現 stop、超範圍的 temperature、不受支持的 reasoningEffort |
移除或夾到合法範圍 |
可以做的配置項如下,默認值來自插件配置表:
| Key | 默認值 | 含義 |
|---|---|---|
enabled |
true |
打開或關閉實時請求修正 |
providerId |
perplexity |
要守護的 provider id |
defaultMaxTokens |
32768 |
調用未帶 output cap 時使用的默認值 |
contextWindow |
200000 |
拿不到模型信息時的兜底上下文窗口 |
headroomTokens |
4096 |
封頂時保留的安全餘量 |
核心功能:Provider 設置修復¶
插件帶一個 Web 側欄入口(叫做 “Perplexity”)和一個 agent 工具 perplexity_guard,工具的 action 有兩個取值:status 和 repair。
側欄頁面展示 provider route、設置檢查結果,以及最近 40 條改寫記錄或錯誤。status 用於看當前檢查結果。
repair 只針對上面提到的三個模型補齊以下字段:
api: openai-responsesbaseURL:僅在缺失時寫入,默認https://api.perplexity.ai/v1,不會覆蓋已有的自定義 baseURLmaxTokens、contextWindowreasoningEfforts(低/中/高/xhigh)compat.supportsMaxOutputTokens- 15 分鐘的流式空閒超時
約束也寫明瞭:repair 不會刪除其他模型,也不會替換已自定義的 baseURL。也就是說,修的只是三個目標模型缺的字段,不會大改你的 provider 配置。
安裝與啓用¶
README 提供的安裝路徑是一個本地 bundle 安裝,不走包管理器。先 clone 或下載倉庫,然後執行:
plugin_manager(action: "install_bundle", target: "C:\\path\\to\\dsh-perplexity-api-fix-plugin")
把 target 換成你本機實際放置插件目錄的路徑。然後:
- 重啓 DSH。
- 打開側欄的 Perplexity 頁面。
- 如果頁面裏顯示檢查項,按 Repair settings 修復 provider 設置。
安裝前建議先讀一遍源碼和 LICENSE。插件以當前 DSH 進程的權限運行,且 install_bundle 這個入口本身也是執行任意目錄的腳本註冊,傾向先審後裝。
已知限制¶
當請求需要改寫(工具別名或 schema 修復)時,因爲公開的 middleware API 沒有提供替換 options 的 next(),插件會帶着副本重新進入 ctx.llm.stream()。重新進入的這一次調用使用的是當前 adapter,所以如果在流進行當中改了 provider 配置,這一次調用可能讀到新配置。
實際影響不大:隻影響被改寫的那一次請求。
適用場景¶
適合正在用 DSH 接 Perplexity,並在用 Claude Opus 5.5、Claude Sonnet 5.5 或 GPT-6.1 Sol,且遇到 requests 直接 400 或模型對參數過於挑剔的場景。如果 provider 設置本來就完整,裝完後主要價值在於請求改寫和側欄的狀態檢查。
不適合:不使用 Perplexity API 的,不涉及上面三個模型的,或者不打算接受”插件會改寫線上請求參數”這點的。
結尾¶
這個插件的價值在於把一類格式層面的 400 從”要自己排查”變成”裝好後自動補齊”,並且把 provider 設置裏的常見缺口集中到一個按鈕裏修。它是社區維護的非官方插件,功能邊界寫清楚了,限制也寫清楚了。
- 插件目錄頁:https://www.skillhub.cn/plugins/Kinfxhk/dsh-perplexity-api-fix-plugin
- GitHub:https://github.com/Kinfxhk/dsh-perplexity-api-fix-plugin