dsh-opencode-doctor:为 DSH 预探测 OpenCode 模型路由并在名称中标注可用性

前言

在 DeepSeek Harness(DSH)里接 OpenCode Go / Zen 网关时,模型列表往往来自 /models 接口:它只说明网关能提供哪些模型,不说明你的账号能否实际调用。地区封锁、余额不足、仅限官方客户端的免费层等问题,通常要等到你选好模型、发出请求之后才会暴露。

社区插件 dsh-opencode-doctor 的做法是把可用性探测提前做完:对 79 个模型逐个真实发请求,把结论写进 DSH 模型选择器里显示的模型名;对在中国大陆被封锁的 15 个模型,则通过按模型分流的本机代理自动绕行。下面介绍它的定位、能力与安装用法。

这是什么

dsh-opencode-doctor 由维护者 fffcodefox 发布,归类为模型推理相关 DSH 插件,许可证为 MIT,当前资料中的版本为 0.2.2,要求 Node >= 20.18。

一句话定位:给 DSH 装上「已经实测过可用性」的 OpenCode Go / Zen 模型路由,可用性注解(地区封锁已由代理处理、需充值、限官方客户端等)体现在模型名称里;同时作为依赖自动带上官方配套插件 dsh-opencode-go 与 dsh-model-proxy 的配置能力。

插件在 DSH 生态里属于纯配置插件:行为写在 cordis.patch.yml 中,lib/index.mjs 的 apply 为空,仅为符合插件规范,不执行自定义运行时代码(安装后仍会激活依赖里的 dsh-opencode-go,以便额度查询等能力可用)。

解决什么问题

网关列出的模型与「当前环境、当前 key、当前协议」下能跑通的模型并不总是一致。同一模型在不同协议(Anthropic Messages、OpenAI 兼容、OpenAI Responses)下的结果也可能不同。

本插件在发布时完成探测,并按实际能跑通的协议生成路由;DSH 选择器只渲染模型名、不显示描述字段,因此把探测结论直接写在名字里,并支持用模糊搜索筛选(例如输入 ★、需充值、限官方客户端)。

已修复的问题不再在名称里重复标注:15 个因地区限制需代理的模型由插件走 model-proxy 分流,名称里不再出现「地区限制」字样。

核心功能

预探测路由与名称标注

发布时合计 67 个无标注 / 79 个模型 下发(探测日期见仓库内 models.catalog.json),覆盖 Claude、GPT、Grok、DeepSeek、GLM、Qwen、Kimi、MiniMax 等系列。路由示例(资料中的实测统计):

路由 id 协议 可用 / 总数
opencode-go-doctor-anthropic Anthropic Messages 2 / 2
opencode-go-doctor-openai OpenAI 兼容 30 / 31
opencode-go-doctor-responses OpenAI Responses 4 / 4
opencode-zen-doctor-anthropic Anthropic Messages 7 / 8
opencode-zen-doctor-openai OpenAI 兼容 11 / 21
opencode-zen-doctor-responses OpenAI Responses 13 / 13

选择器中的名称示例(资料原文):

★ Claude Opus 5.5
★ Claude Sonnet 5.5
★ Grok 4.7
★ DeepSeek V4.1 Flash
★ GPT-5.3 Codex
Claude Fable 5(需充值)
Cat Jam Free(限官方客户端)

标注含义(资料中的词汇表):

标注 含义
(需充值) 账户余额不足
(限官方客户端) 免费层,仅 OpenCode 官方客户端可用
(需授权训练数据) 需先授权用数据训练
(暂不可用) 其它失败
无标注 探测时可用

地区限制模型的按模型代理

探测记录中有 15 个模型在中国大陆返回 unsupported_country_region_territory。插件让这些模型走本机 HTTP 代理(默认 http://127.0.0.1:7897),其余模型直连;出口规则限定 opencode.ai;fallbackToDirect: true 时代理不可用时回落直连。清单使用精确模型 id,不做全局代理。

常用模型筛选

10 个常用模型名称带 ★ 前缀,在选择器里输入 ★ 可只显示这批模型(资料列出的包括 Claude Opus/Sonnet/Haiku 5.5、GPT-5.3 Codex、Grok 4.7、DeepSeek V4.1 Flash、GLM-5.3、Kimi K3、Qwen3.8 Max、MiniMax-M3 等)。

额度查询与官方插件联动

安装时 dsh-opencode-go 作为依赖自动安装并由本插件 patch 激活,无需再单独安装或加入 dsh.profile.bundles,额度胶囊与账号设置页随之可用。命令行可查 Go 套餐额度:

npx dsh-opencode-doctor usage

支持 --json 输出;key 仅以打码形式显示。

CLI 与自检

安装后可用 dsh-opencode-doctor(或 npx dsh-opencode-doctor):

npx dsh-opencode-doctor list      # 离线查看目录与标注
npx dsh-opencode-doctor usage     # Go 额度
npx dsh-opencode-doctor check     # 凭证、网关、patch 冲突(装完建议先跑一次)
npx dsh-opencode-doctor probe     # 重新探测,重写 catalog 与 patch
npx dsh-opencode-doctor render    # 仅从 catalog 离线生成 patch

check 会报告例如自定义 patch 覆盖本插件路由、model-proxy / opencode-go 被重复插入等静默失效问题。0.2.2 起支持 --proxy 与环境变量 OPENCODE_DOCTOR_PROXY 自定义代理地址。

安装与启用

安装命令须带版本 tag,避免安装浮动的 main:

dsh plugin --profile web add github:fffcodefox/dsh-opencode-doctor#v0.2.2

装完后重启 dsh,在 设置 → 模型 中查看新增路由。

若不需要自动激活的 dsh-opencode-go,可在 profile patch 中禁用:

- id: opencode-go
  disabled: true

凭证通过 refs.OPENCODE_API_KEY 解析,顺序为:环境变量 OPENCODE_API_KEY / OPENCODE_GO_API_KEY / OPENCODE_ZEN_API_KEY → $DSH_HOME/.credentials.yaml(默认 ~/.dsh/.credentials.yaml)的 refs → OpenCode 的 auth.json。patch 中只引用变量名,不把 key 写入仓库。

典型用法

1. 装完自检

npx dsh-opencode-doctor check

第一行会显示当前生效的代理配置(若已设置)。

2. 代理端口不是 7897 时重新生成 patch(推荐)

npx dsh-opencode-doctor render --proxy http://127.0.0.1:7890

或设置环境变量后执行 render / probe:

OPENCODE_DOCTOR_PROXY=http://127.0.0.1:7890 npx dsh-opencode-doctor render

3. 网关模型更新后重新探测

npx dsh-opencode-doctor probe --proxy http://127.0.0.1:10809

probe 会对每个模型真实请求,写回 models.catalog.json 与 cordis.patch.yml;日常一般不必运行。

4. 在 DSH 里选模型

依赖名称中的标注与 ★ 前缀做模糊搜索,避免选到需充值或限客户端的条目;地区受限且已进代理清单的模型名称与普通可用模型一致,若连不上可先核对代理端口与 check 输出。

适用场景与注意

适合已经在 DSH 中使用或打算使用 OpenCode Go / Zen 推理、希望在选择模型前就知道可用性、并在中国大陆环境下减少地区限制试错成本的开发者。

请注意:

  • DSH 插件以当前 dsh 进程的权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证,确认可接受其 patch 与依赖行为。
  • 若 profile 的 dsh.profile.bundles 中单独启用了 dsh-model-proxy,可能与本插件插入的 model-proxy 配置串联重复,应删掉 bundle 中的重复项并用 check 确认。
  • 与本插件同时保留官方 dsh-opencode-go 路由时,同一模型可能在选择器中出现两份;可用官方插件的 modelVisibility 隐藏其中一份。
  • 社区插件目录 SkillHub 上的条目 为独立站点,与 DeepSeek / 幻方无官方从属关系;星标等元数据以你访问时页面为准,写作时 GitHub 显示为 0 star。

结尾

dsh-opencode-doctor 把 OpenCode 模型「能不能用」从试错后置改为安装前/发布时已探测的结论,并配合按模型代理与额度命令,降低在 DSH 里接 OpenCode 时的选择成本。进一步了解可访问目录页 skillhub.cn/plugins/fffcodefox/dsh-opencode-doctor 与源码 github.com/fffcodefox/dsh-opencode-doctor。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye