前言¶
在 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-masquerade 由 ymh0000123 維護,許可證爲 MIT,Node 要求 >=18。
它面向已經使用 DSH Web profile、並且已經通過 llm-pi-ai 路由配置自定義模型 provider 的場景,主要解決兩類問題:
- 客戶端身份頭沒有按預期發到上游網關。
- 僅靠請求頭還不夠,需要請求體指紋校驗。
核心功能¶
- 爲任意已配置的
llm-pi-aiprovider 一鍵應用、清除或切換 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 時,不能只看狀態碼。它可能代表渠道池真忙,也可能代表請求體指紋校驗未通過。建議按下面順序檢查:
- 請求體僞裝是否開啓。
- 請求體補丁是否已應用。
- 是否已重啓
dsh web。 - 是否重新應用過 Claude Code 預設。
按設計不僞裝 x-claude-code-session-id。
claude-code 預設的取值來自實測抓包。升級插件後建議重新應用 Claude Code 預設,避免繼續使用舊預設。
適用場景與注意¶
適合這類使用方式:
- 使用 DSH Web profile。
- 通過
llm-pi-aiprovider 接入自定義模型或中轉網關。 - 網關按 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