dsh-opencode-compat: OpenCode Zen Compatibility Patch Plugin

前言

DeepSeek Harness (DSH) 开发者在对接 OpenCode Zen 或 Muse 模型时,常遇到协议不兼容、会话头缺失或 reasoning 数据过滤困难的问题。直接修改 node_modules 容易引入风险,且维护成本高。下面介绍一个社区维护的独立插件,用于处理这些兼容性问题。

插件定位

这是一个 DeepSeek Harness 的独立 Cordis 插件,由 dooooling 维护。它提供了一套 OpenCode Zen 请求所需的会话格式、客户端版本头以及 Muse reasoning 回传兼容处理方案。插件独立运行,不依赖构建脚本,且不提供模型、密钥或额度。

核心功能

  • 会话与头处理:为 OpenCode Zen 请求提供会话格式和客户端版本头,支持转换会话 ID 和生成请求 ID。
  • Muse 兼容:处理 Muse reasoning 回传兼容性,从 Muse Responses 请求中删除加密的 reasoning 内容。
  • 协议支持:支持 openai-responses 协议。
  • 免费层补齐:补齐免费层兼容性工具声明(如 bash、edit、glob 等)。

安装与启用

安装:
安装前请先停止正在运行的 DSH。使用以下命令安装指定版本:

dsh plugin --profile web add github:dooooling/dsh-opencode-compat#v0.1.3
dsh web

配置 Provider:
在 llm-pi-ai 提供方配置中,Muse 必须选择 openai-responses 协议,并设置正确的 baseURL 和模型 ID。已有提供方配置继续生效。

llm-pi-ai:
  providers:
    opencode-muse:
      apiKeyEnv: OPENCODE_API_KEY
      api: openai-responses
      baseURL: https://opencode.ai/zen/v1
      models:
        - id: muse-spark-1.3-contributor-free

启用插件功能:
默认启用身份头、reasoning 和免费层兼容处理。需要自定义时,在 ~/.dsh/profiles/web/cordis.patch.yml 添加覆盖配置(已有内容应合并):

- id: opencode-compat
  config:
    enabled: true
    clientVersion: 1.18.31
    rewriteClientHeaders: true
    stripMuseReasoning: true
    completeFreeTierFingerprint: true

作用范围与限制

  • 运行范围:仅处理 HTTPS opencode.ai 的 POST 请求,路径限定为 /zen/v1/ 或 /zen/go/v1/ 下的 responses、chat/completions、messages。它会全局包装 globalThis.fetch,同一 DSH 进程内所有匹配请求都会受影响。
  • 依赖与权限:包直接包含可执行 ESM,无需 prepare/build 脚本。插件不读取凭据文件、不记录请求正文或密钥、不修改模型列表和默认模型。
  • 注意事项:这是一个社区兼容方案,非 DeepSeek 或 OpenCode 官方插件。客户端身份头会被改为配置的版本;上游可能改变校验或拒绝第三方使用。插件不保证免费额度、地区可用性或服务条款允许的接入范围。
  • 兼容性验证:仅对 JSON Muse Responses 请求执行 reasoning 过滤。捕获旧 fetch 引用、使用独立 HTTP 客户端或显式自定义 fetch 的适配器可能绕过插件。完整 DSH 多轮工具执行兼容性尚未验证。

总结

该插件通过独立补丁的方式,降低了接入 OpenCode Zen 的门槛,重点解决了会话头和协议兼容问题。开发者应根据实际需求配置,并关注上游服务的协议变更。

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

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

Xiaoye