dsh-relaycheck:用 relay_check 校驗 LLM API 中轉是否名副其實

前言

在 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 的場景——插件設計上不允許。

使用前請知悉:

  1. 插件以當前 dsh 進程權限運行;安裝前應閱讀倉庫源碼與 MIT 許可證,確認行爲可接受。
  2. 每次檢測會消耗中轉側的 token 與配額,默認需人工批准後再跑。
  3. 結論爲統計 verdict,出現 inconclusive 時需結合 probe 摘要自行判斷,不宜當作唯一合規依據。
  4. 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
羽毛球分组比赛记分
小程序二维码

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

小夜