dsh-client-masquerade:爲 DSH 的 llm-pi-ai 路由增加 Claude Code / Codex 客戶端僞裝

前言

在 DeepSeek Harness 中通過 llm-pi-ai provider 接入中轉網關時,有些網關會按請求頭識別客戶端,也有些網關會進一步校驗請求體。DSH 側顯式配置的 user-agent 如果不被適配器原樣發送,可能會被剝離並覆蓋爲 deepseek-harness/...

dsh-client-masquerade 是一個 DeepSeek Harness 插件:把已配置的 llm-pi-ai provider 僞裝成 Claude Code、Codex 或自定義請求頭客戶端。它把僞裝頭寫入 provider 配置,並在每次請求時發送;對需要請求體指紋的場景,也可以按需向 Anthropic 協議請求體注入 Claude Code 指紋。

這是什麼

dsh-client-masqueradeymh0000123 維護,許可證爲 MIT,Node 要求 >=18

它面向已經使用 DSH Web profile、並且已經通過 llm-pi-ai 路由配置自定義模型 provider 的場景,主要解決兩類問題:

  1. 客戶端身份頭沒有按預期發到上游網關。
  2. 僅靠請求頭還不夠,需要請求體指紋校驗。

核心功能

  • 爲任意已配置的 llm-pi-ai provider 一鍵應用、清除或切換 Claude Code、Codex 或自定義請求頭僞裝。
  • 將僞裝頭寫入 provider 配置的 headers 字段,並由 pi-ai 適配器在每次請求中原樣發送。
  • 按需向 Anthropic 協議請求體注入 Claude Code 指紋,包括 metadata.user_id、身份 system 塊和哨兵工具定義。
  • 提供設置頁、模型工具 mask_client 以及動態模式下的 Run 卡片面板入口。
  • 提供 User-Agent、請求體和 vision-toolkit 變體三個補丁。
  • test 動作會真實發起一次最小流式調用,並報告網關實際收到的請求頭、模型回覆或報錯。
  • 界面支持中英雙語,並跟隨 Harness 語言設置切換。

安裝與啓用

前提

先在 DSH 中配置好自定義 provider。

Settings → Models → 配置自定義 provider(llm-pi-ai 路由)

沒有可用的 llm-pi-ai provider 時,插件無法寫入目標 provider 的僞裝配置。

安裝

執行官方安裝命令:

dsh plugin --profile web add github:ymh0000123/dsh-client-masquerade

安裝後需要應用補丁。否則 profile 顯式配置的 user-agent 可能被剝離,並覆蓋爲 deepseek-harness/...

應用補丁

可以在設置頁點 User-Agent 補丁 → 應用,也可以執行模型工具動作:

mask_client action=patch

也可以在 profile 目錄中逐個執行補丁腳本:

node node_modules/dsh-client-masquerade/patches/apply-pi-ai-useragent-patch.mjs
node node_modules/dsh-client-masquerade/patches/apply-pi-ai-body-patch.mjs
node node_modules/dsh-client-masquerade/patches/apply-variant-retry-patch.mjs

這三個補丁都會修改第三方包文件,需要重啓 dsh web 生效,並且補丁冪等:

dsh web

pnpm install 或升級被打補丁的包後,需要重新應用補丁。

動態插件方式

如果不使用持久安裝,也可以使用動態插件:

code.host:粘貼 host.body.js 全文
code.client:粘貼 client.body.js 全文

動態模式沒有文件系統權限,設置頁只顯示補丁狀態,仍需手動執行補丁命令。

如果之前用動態插件方式運行過同一份代碼,需要先停用或刪除動態版本,避免設置頁入口重複註冊。

典型用法

應用僞裝

設置頁入口:

Settings → Client Masquerade → User-Agent 補丁 → 應用

模型工具入口:

mask_client action=patch

清除僞裝頭

設置頁入口:

Settings → Client Masquerade → Off

模型工具入口:

mask_client action=off provider=<id>

測試請求

test 動作會真實發起一次最小流式調用,並報告網關實際收到的請求頭、模型回覆或報錯:

mask_client action=test

還原補丁

設置頁入口:

Settings → Client Masquerade → 運行時補丁 → 全部還原

模型工具入口:

mask_client action=unpatch

還原補丁後也需要重啓 dsh web

dsh web

卸載插件

執行卸載命令:

dsh plugin --profile web remove dsh-client-masquerade

卸載插件不會自動還原三個補丁。已經寫入 provider 的僞裝 headers 也會保留,需要逐個執行 off 或手動清除。

排錯與狀態判斷

test 動作給出的結果適合用來確認網關實際收到了什麼。

遇到 429 / 503 時,不能只看狀態碼。它可能代表渠道池真忙,也可能代表請求體指紋校驗未通過。建議按下面順序檢查:

  1. 請求體僞裝是否開啓。
  2. 請求體補丁是否已應用。
  3. 是否已重啓 dsh web
  4. 是否重新應用過 Claude Code 預設。

按設計不僞裝 x-claude-code-session-id

claude-code 預設的取值來自實測抓包。升級插件後建議重新應用 Claude Code 預設,避免繼續使用舊預設。

適用場景與注意

適合這類使用方式:

  • 使用 DSH Web profile。
  • 通過 llm-pi-ai provider 接入自定義模型或中轉網關。
  • 網關按 Claude Code、Codex 客戶端身份識別請求。
  • 需要請求體指紋,而不只是請求頭僞裝。

使用前注意:

  • 插件以當前 dsh 進程權限運行。安裝前應檢查源碼與許可證。本插件許可證爲 MIT。
  • 三個補丁都會修改第三方包文件,需要重啓 dsh web 生效,且補丁冪等。
  • pnpm install 或升級被打補丁的包後,需要重新應用補丁。
  • 卸載插件不會自動還原補丁,已寫入 provider 的僞裝 headers 也會保留。
  • engines.node 要求 >=18
  • peerDependencies 包含 @deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-settings@deepseek-ai/dsh-tools;後三者標記爲 optional。

鏈接

GitHub 倉庫:

https://github.com/ymh0000123/dsh-client-masquerade
羽毛球分组比赛记分
小程序二维码

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

小夜