前言¶
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 档),整段设置会被丢弃并沿用默认值。
典型用法与注意事项¶
- 本地源码安装:如果从本地源码安装,必须先运行脚本以建立依赖桥接:
cd <插件源码目录>
node scripts/setup-local-deps.cjs
dsh plugin --profile web add <插件源码目录>
-
Token 预算管理:在
responses系端面中,高推理 effort 容易消耗大量 token,建议在设置中配合较大的maxTokens起步。 -
价格说明:价格由计费插件决定,本插件只负责用量上报。
-
图片限制:本插件不负责图片大小限制,该限制由 attachment 服务的准入归一化决定。
结语¶
dsh-opencode-go 提供了从路由注册到会话管理、凭证解析及用量记录的一站式解决方案,适合需要集成 OpenCode Go 生态并在 DSH 中统一管理的场景。更多细节可查阅项目目录或 GitHub 仓库。