DeepSeek Harness 插件:dsh-opencode-provider

前言

DeepSeek Harness (DSH) 的核心设计理念是“一切皆插件”。在使用本地模型(例如 OpenCode 生态中的免费模型 mimo-v2.5-free)时,开发者通常需要单独配置 API 密钥或处理复杂的本地服务连接。dsh-opencode-provider 插件解决了这一痛点,它将 DSH 的 LLM Runtime 与本地运行的 OpenCode 服务器连接起来,允许在不使用 DeepSeek 官方 API 密钥的情况下,直接在 Harness 中调用本地模型。

插件概览

项目 内容
名称 dsh-opencode-provider
仓库 goku54477/dsh-opencode-provider
许可证 MIT
类别 模型推理
目录页 skillhub.cn/plugins/goku54477/dsh-opencode-provider

安装与启用

安装过程通过 DSH 的插件命令完成。

1、执行以下命令安装插件:

dsh plugin --profile web add dsh-opencode-provider

安装完成后,确保你的 DeepSeek Harness 版本 >= 0.1.0-rc.8。

启动与配置

使用该插件前,需要先启动本地的 OpenCode 服务器,并在 DSH 中进行模型选择与配置。

1、启动 OpenCode 服务器(默认端口 4096):

opencode serve --hostname 127.0.0.1 --port 4096

2、在 DeepSeek Harness 的模型选择中,找到并选择本地模型:

opencode-local/mimo-v2.5-free

3、根据需要配置 baseURL、上下文窗口、Token 限制及重试策略。配置项位于 DSH 的 cordis.yml 或插件配置文件中,示例如下:

llm-opencode:
  # OpenCode 服务器地址
  baseURL: "http://127.0.0.1:4096"

  # 上下文窗口
  defaultContextWindow: 128000

  # 最大输出 Token
  maxTokens: 16384

  # 声明的模型列表
  models:
    - id: mimo-v2.5-free
      name: mimo-v2.5-free
      description: "OpenCode local agent (text output only)"
      contextWindow: 128000

  # 重试策略
  retryPolicy:
    mode: always
    backoff:
      initialDelayMs: 100
      maxDelayMs: 5000
      jitterRatio: 0.2

核心功能

该插件通过纯 HTTP 连接与本地 OpenCode 服务器通信,提供以下能力:

  • 无需 API 密钥:直接通过 HTTP 连接本地服务器。
  • 流式输出:支持 SSE(Server-Sent Events)流式传输文本增量。
  • 会话取消:支持通过中断信号终止流式请求。
  • 超时控制:可配置 SSE 建立连接、请求发送及完成的最大时间。
  • 重试策略:支持配置 Provider 级别的重试策略。
  • 事件兼容:支持旧版与新版的 SSE 事件格式(session.text.delta / session.next.text.delta 等)。
  • 优雅降级:对未知事件、非 JSON 行及嵌套包装器进行容错处理。

工作原理

插件通过 OpenCodeAdapter 作为中间层,在 DSH Runtime 和 OpenCode 服务器之间转换请求与响应:

  1. 会话创建:向 OpenCode 服务器发送 POST /api/session 请求。
  2. 并发通信:同时发起 SSE 订阅(GET /api/session/{id}/event)和 Prompt 提交(POST /api/session/{id}/prompt),避免服务器因等待活动而阻塞流式头部的发送。
  3. 对话序列化:将 DSH 的完整对话(系统提示词 + 消息历史)序列化为特定格式嵌入 Prompt。
  4. 事件翻译:将 OpenCode 返回的 SSE 事件映射为 DSH 的 StreamChunk 类型(如 block-start、text-delta、finish)。
  5. 清理:在完成、错误或中断时,发送中断信号清理会话。

局限性

根据已核实的事实,该插件存在以下限制:

  • 仅文本输出:OpenCode 运行独立的 Agent/工具循环,插件不暴露结构化的工具调用能力。
  • 无多模态支持:仅支持文本输入输出,不支持图片、音频或视频。
  • 单一模型广告:默认目录仅列出 mimo-v2.5-free,添加其他模型需手动配置。
  • 提示词大小限制:整个对话被序列化为单个 Prompt 字符串,长对话可能超出模型上下文窗口。
  • 无持久会话:每次 stream() 调用都会创建新会话,对话状态不跨请求保持。
  • 本地优先:默认绑定 127.0.0.1,远程服务器需手动修改 baseURL 且不支持 TLS 加密,严禁暴露到不受信任的网络。

结尾

dsh-opencode-provider 为希望在本地部署低成本推理能力的开发者提供了一个便捷的入口。它简化了本地模型接入 DSH 的流程,但受限于 OpenCode 本身的架构(纯文本、无结构化工具),更适合文本生成类的任务。

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

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

小夜