DeepSeek Harness 插件:dsh-opencode-go

前言

DeepSeek Harness(DSH)采用插件化架构,允许开发者针对不同的后端模型服务注册自定义路由。在集成 OpenCode Go 等第三方模型时,往往需要处理会话一致性、客户端标识规范以及凭证管理等问题。dsh-opencode-go 是一款适配 DeepSeek Harness 的 LLM provider 插件,它注册了 zen-go 路由,并确保每次出站推理请求都携带每会话稳定的 x-opencode-session 头部。

核心功能

该插件主要解决以下技术需求:

  • 路由注册:在 DSH 中注册 zen-go 路由,避免与用户自建 profile 的常用名冲突。
  • 多端面支持:支持三种 API 端面:
    • chat/completions:兼容 OpenAI 格式,支持 mimo、deepseek-v4、glm、kimi、longcat、hy。
    • responses:支持 grok、gpt-5.6-luna、muse-spark,包含独立的 response.incomplete 终态。
    • messages:兼容 Anthropic 格式,支持 minimax、qwen,使用 x-api-key 鉴权。
  • 会话管理:自动为请求携带 x-opencode-session 头部(取自会话 ID,缺失时生成 UUID),保证会话追踪。
  • 客户端标识:使用自定义的 User-Agent(deepseek-harness/<版本> (+url) dsh-opencode-go/<版本>),便于运营方识别与放行,而非通用的 Go-http-client/1.1。
  • 凭证解析:支持分层凭证解析顺序(进程环境变量 -> 托管 store -> 项目/家目录 .env),存换 Key 无需重启。
  • 设置面板:提供 Web 界面设置,支持在 Models 页行和侧边栏录入 Key、勾选模型、配置上下文/输出上限、设置端面与思考档位。
  • 推理档位:支持 Low/Medium/High/Xhigh 等档位,不同端面(chat/responses/messages)对应不同的参数字段。
  • 多模态与图片处理:
    • 支持 vision 模型。
    • 当请求内联图片总量超过 maxRequestImageBytes(默认 64 MiB)时,抛出 IMAGE_OFFLOAD_REQUIRED 信号,由 DSH 的卸载机制处理,本插件不直接丢弃图片。
    • 单图大小由 attachment 服务的准入归一化决定,本插件不负责图片大小限制。
  • 用量记录:统一记录三端面的 usage(prompt_tokens / input_tokens),并生成 usage.l 用量账本,记录模型、会话、实际 Session 头、输入输出及推理消耗。

安装与启用

使用以下命令安装插件:

dsh plugin --profile web add github xia-sc/dsh-opencode-go

安装完成后,需要重启 DSH Web 服务。在会话的模型选择器中,选择 zen-go/<模型> 即可使用。

配置凭证:
在 $DSH_HOME/.credentials.yaml 中添加 Key,或在设置卡中直接粘贴保存。也可以设置环境变量 OPENCODE_GO_API_KEY。

配置

在 DSH 的配置中,需设置 llm-opencode-go section 或 layer config。关键配置项如下:

字段 默认值 说明
apiKeyEnv OPENCODE_GO_API_KEY 凭证引用名
apiBase https://opencode.ai/zen/go API 基础地址(去掉 /v1 前缀)
requestTimeoutMs 60000 建连+首包超时
streamIdleTimeoutMs 300000 流空闲超时
maxRequestImageBytes 67108864 单请求内联图片总量上限(字节)
enabledModels 全表 启用的模型列表
modelCaps [] 手动填写的模型能力覆盖(上下文窗口、端面、多模态等)

注意:官方 /v1/models 不返回上下文窗口,modelCaps 需手动填写。如果设置卡中的配置被拒绝(例如在 responses 端面配置了 chat 才有的 max 档),整段设置会被丢弃并沿用默认值。

典型用法与注意事项

  1. 本地源码安装:如果从本地源码安装,必须先运行脚本以建立依赖桥接:
    cd <插件源码目录>
    node scripts/setup-local-deps.cjs
    dsh plugin --profile web add <插件源码目录>
  1. Token 预算管理:在 responses 系端面中,高推理 effort 容易消耗大量 token,建议在设置中配合较大的 maxTokens 起步。

  2. 价格说明:价格由计费插件决定,本插件只负责用量上报。

  3. 图片限制:本插件不负责图片大小限制,该限制由 attachment 服务的准入归一化决定。

结语

dsh-opencode-go 提供了从路由注册到会话管理、凭证解析及用量记录的一站式解决方案,适合需要集成 OpenCode Go 生态并在 DSH 中统一管理的场景。更多细节可查阅项目目录或 GitHub 仓库。

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

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

小夜