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 本身的架構(純文本、無結構化工具),更適合文本生成類的任務。

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

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

小夜