前言¶
在 DeepSeek Harness(DSH)裏接第三方 LLM API 中轉時,常見風險是:對外宣稱的模型與實際不一致、協議字段不符、usage 與真實 token 對不上、上下文被截斷,或響應裏混入隱藏提示詞。人工逐條抓包對比成本高,也不適合交給 agent 隨意指定任意 URL 和密鑰。
dsh-relaycheck 是維護者 YanYunCY 發佈的 DSH 插件(社區分類:模型推理)。它在 agent 工具集中增加 relay_check,底層調用 relaycheck,對已在 profile 裏登記的中轉做統計化檢測,並返回 consistent、inconsistent 或 inconclusive 結論。說明文檔強調:這是統計檢驗,不是數學意義上的「證明」。
這是什麼¶
插件全名 dsh-relaycheck,倉庫 YanYunCY/dsh-relaycheck,當前 package 版本 0.1.0,許可證 MIT。它不改變 DSH 核心,只在 Cordis 配置中掛載一個工具,讓模型在受控目標列表內發起檢測。
中轉的 baseUrl 與密鑰環境變量名寫在 profile 裏;agent 只能按名稱選擇 已配置 的 target,避免提示詞注入把密鑰指到別的主機。密鑰僅從環境變量讀取,不會出現在工具返回或錯誤信息裏。
核心功能:relaycheck 測什麼¶
relaycheck 對指定中轉跑四組檢查,並與參考指紋對比:
| 組別 | 檢測內容 |
|---|---|
| identity | 模型調包:24 個 probe × N 次採樣,每個 probe 做置換 χ²,再用 Cauchy 合併 p 值 |
| protocol | 宣稱 API 類型下協議字段錯誤或缺失 |
| billing | 上報 usage 與真實 token 是否一致;是否存在隱藏 prompt 注入 |
| context | 上下文窗口是否被截斷(needle test) |
默認探測組爲 identity,protocol,billing,context,可在配置或單次調用裏裁剪。可選 --deep(配置項 allowDeep)會額外消耗約 10 萬 input token 量級,默認關閉。
工具 relay_check({ target?, model?, probes?, deep? }) 返回結構化 JSON(含 verdict、headline、pValue、groups、usage、durationMs 等);模型還會看到同事實的短文本摘要。無 p 值或注入 token 時,對應字段會省略。
安裝與啓用¶
環境要求與 DSH 一致:Node ≥ 24.9。README 註明在 dsh 0.2.1-rc.5 上測試過。
官方安裝命令:
dsh plugin --profile web add dsh-relaycheck
安裝後需在 web profile 的 patch 裏聲明可檢測的中轉,並導出密鑰環境變量,再啓動 dsh web:
# $DSH_HOME/profiles/web/cordis.patch.yml
- id: relaycheck
config:
targets:
myrelay:
baseUrl: https://relay.example.com
model: claude-sonnet-4-5 # optional; empty = the model of the calling session
api: auto # auto | anthropic | openai | responses
keyEnv: RELAY_KEY # name of the env var holding the key
provider: myrelay # dsh provider id this relay backs (optional)
samples: 16
requireApproval: true # ask before each run; a run spends relay tokens
allowDeep: false # --deep costs about 100k extra input tokens
export RELAY_KEY=sk-...
dsh web
常用配置項含義如下(默認值以 README 爲準):
| 選項 | 默認 | 含義 |
|---|---|---|
targets |
{} |
agent 允許檢測的命名中轉 |
defaultTarget |
— | 未指定 target 且 provider 不匹配時使用 |
samples |
16 |
每個 identity probe 的採樣次數 |
probes |
identity,protocol,billing,context |
要運行的組 |
allowDeep |
false |
是否允許 agent 請求 --deep |
requireApproval |
true |
每次運行前詢問(會消耗中轉 token) |
lang |
en |
摘要語言:en 或 zh |
timeoutSeconds |
600 |
超時終止 |
當某個 target 的 provider 與當前會話 provider 一致時,agent 可無參調用 relay_check,檢測「當前正在用的中轉」,並使用會話模型。
典型用法與返回示例¶
在對話中讓 agent 對命名 target 執行檢測,或在上文條件下無參檢測當前中轉。一次默認運行會發出數百次短請求(24 probes × samples,外加 protocol、billing、context),耗時數分鐘;因此 requireApproval 默認開啓。
返回結構示例(摘自 README):
{
"target": "myrelay", "host": "relay.example.com", "model": "claude-sonnet-4-5", "api": "anthropic",
"verdict": "inconsistent", "headline": "...", "pValue": 0.0003, "calibrated": true,
"exitCode": 1,
"groups": [{ "id": "identity", "status": "fail", "summary": "..." }],
"usage": { "inputTokens": 41200, "outputTokens": 3900, "requests": 412 },
"durationMs": 95000
}
開發側可在插件倉庫內運行 npm install 與 npm test(單元測試及對 relaycheck 本地 mock 中轉的端到端測試,無需真實 API 或密鑰)。
適用場景與注意¶
適合:已在 DSH web profile 中固定使用某一或多個 LLM 中轉、需要在 agent 工作流裏快速得到「是否一致」結論的開發者或運維。不適合:未配置 target、希望 agent 臨時填入未知 URL 的場景——插件設計上不允許。
使用前請知悉:
- 插件以當前 dsh 進程權限運行;安裝前應閱讀倉庫源碼與 MIT 許可證,確認行爲可接受。
- 每次檢測會消耗中轉側的 token 與配額,默認需人工批准後再跑。
- 結論爲統計 verdict,出現
inconclusive時需結合 probe 摘要自行判斷,不宜當作唯一合規依據。 - DSH 生態主張「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-relaycheck 把 relaycheck 的 identity、protocol、billing、context 四組檢測封裝進 DSH agent 工具,在 profile 白名單與環境變量隔離密鑰的前提下,回答「這個中轉是否真的在提供它聲稱的模型與服務」。需要安裝命令、配置字段與返回格式的完整說明時,以 GitHub README 爲準:
- 目錄頁:https://www.skillhub.cn/plugins/YanYunCY/dsh-relaycheck
- 倉庫:https://github.com/YanYunCY/dsh-relaycheck