dsh-zen-spoof:直连 OpenCode Zen 免费模型的 DeepSeek Harness 插件

前言

OpenCode Zen 的免费档仅对官方客户端开放,服务端通过特定的 HTTP Headers 判断请求来源。DeepSeek Harness(DSH)内置的 dsh-llm-pi-ai 适配器虽然理论上支持注入这些 headers,但由于其 requestHeaders() 方法会覆盖用户自定义的 User-Agent,导致 opencode 检测永远失败,headers 永远不被注入。

dsh-zen-spoof 插件直接注册为 opencode provider,完全绕过 pi-ai,自行控制所有请求 headers。它不依赖任何补丁或特定版本,适用于任何 DSH 版本。

安装与配置

执行以下命令安装插件:

dsh plugin --profile web add dsh-zen-spoof

安装后,由于插件注册了 opencode 路由,与 pi-ai 的同名路由冲突,必须手动编辑配置文件以避免 DUPLICATE_ADAPTER 错误。

  1. 找到 settings.yaml 文件位置:
    • Windows: <dsh安装目录>\.dsh\settings.yaml
    • macOS / Linux: ~/.dsh/settings.yaml
  2. 注释掉 llm-pi-ai 下方的 opencode provider 配置:
    llm-pi-ai:
      providers:
        # opencode: 已由 dsh-zen-spoof 插件接管
        opencode-go:
          # ... 其他 provider 配置保持不变 ...

功能特性

  • 完全自包含:不依赖 pi-ai 补丁或特定版本,不依赖 dsh 安装器提供的补丁。
  • 模型自动发现:启动时从 Zen API 获取最新免费模型列表,失败时回退到内置列表。
  • 思考模式:自动透传 reasoning_effort 参数,并解析 reasoning_content 字段,在 DSH UI 中展示思考过程。
  • 自动 fallback:遇到 429 或 5xx 错误时,在候选池内轮换模型,支持指数退避和 Retry-After 响应头。
  • 凭据热更新:逐请求解析 API Key,无需重启即可更换 Key。
  • 错误码对齐:错误处理与 DSH 自带重试机制兼容。
  • 多 block 输出:正确处理流式响应中 reasoning -> text -> tool-call 的组装顺序。

使用方法

启动 DeepSeek Harness Web UI:

dsh web

在会话设置中选择 provider: opencode,并选择以下任意免费模型:

模型 ID 说明
mimo-v2.5-free MiMo V2.5(默认)
deepseek-v4-flash-free DeepSeek V4 Flash
ling-3.0-flash-free Ling 3.0 Flash
nemotron-3-ultra-free Nemotron 3 Ultra

插件启动时会自动获取模型列表,上表仅供参考。

API Key 默认复用 DSH 凭据库中 OPENCODE_API_KEY 的值。

配置项

字段 默认值 说明
apiKey 空 留空则自动读取 dsh 凭据库
apiKeyRef OPENCODE_API_KEY 凭据引用名
baseURL https://opencode.ai/zen/v1 网关地址
providers ["opencode"] 注册的路由名
spoofClient cli x-opencode-client 值
project dsh x-opencode-project 值
userAgent opencode/1.18.30 User-Agent,须含版本号
enableAutoFallback true 受限时自动换模型
maxFallbackAttempts 5 单次最多换几个
initialBackoffMs 1000 退避起点(毫秒)
maxBackoffMs 30000 退避上限(毫秒)
timeoutMs 120000 空闲超时(毫秒),0 不限

通过 cordis 配置覆盖时须重述全部键。

注意事项

  • 伪装风险:伪装客户端头属于灰色手段,官方可能收紧策略或标记非官方流量。建议使用小号 Key。
  • 手动配置:安装后必须手动编辑 settings.yaml 注释掉 opencode provider,否则会报错。
  • 凭据查找:可在 dsh web UI「设置」页或执行 dsh config 命令查找 settings.yaml 位置。
羽毛球分组比赛记分
小程序二维码

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

小夜