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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye