dsh-web-search-opencode-go:修復 OpenCode Go / Zen 上的 DSH Web 搜索路由問題

前言

DeepSeek Harness (DSH) 的內置 web_search 工具調用 Anthropic 兼容的 Messages 端點。當將 provider 指向 OpenCode Go / Zen 時,網關要求請求必須攜帶 x-opencode-session 頭部。缺少該頭部會導致請求被拒絕並返回 MissingSessionID 錯誤。

dsh-web-search-opencode-go 是一個插件,它通過自動注入必要的路由頭部,修復了 DSH 內置 web_search 在 OpenCode Go / Zen 上的路由問題。

它是什麼

這是一個 Drop-in patched fork,旨在讓 DSH 的 web_search 工具在不修改官方 DSH 安裝的情況下,正常通過 OpenCode Go / Zen 網關工作。

  • 所有者:leeyoung1
  • 許可證:MIT

核心功能

  • 自動注入頭部:自動添加 x-opencode-session 和 x-opencode-client: dsh 頭部。
  • 修復路由問題:解決 OpenCode Go / Zen 對缺失會話 ID 的拒絕問題。
  • 安裝模式:支持 DSH Bundle(推薦)和 Drop-in copy 兩種安裝模式。
  • 可配置頭部:支持通過配置 headers 和 sessionId 自定義頭部。
  • 即插即用:無需修改官方 DSH 安裝,安裝後重啓 dsh web 即可使用。

安裝與啓用

推薦使用 Bundle 模式安裝。

  1. 執行安裝命令:
    dsh plugin --profile web add github:leeyoung1/dsh-web-search-opencode-go
安裝命令會將插件添加到 `dsh.profile.bundles`,並自動處理 patch 配置。
  1. 必須重啓 dsh web 進程,以加載新插件。

典型用法

安裝並重啓 dsh web 後,配置 baseURL 並設置 API Key 環境。

  1. 在 ~/.dsh/settings.yaml 中配置 provider 指向 OpenCode Go:
    web-search-deepseek:
      baseURL: https://opencode.ai/zen/go/v1
      apiKeyEnv: DEEPSEEK_API_KEY
(注:`apiKeyEnv` 也可設置爲 `OPENCODE_GO_API_KEY`)
  1. 在對話中自然語言搜索,或直接調用工具:
    web_search: DeepSeek Harness GitHub

配置說明

除了基礎的 baseURL 和 apiKeyEnv,還可以配置可選的 headers 和 sessionId。

可選配置項

web-search-deepseek:
  baseURL: https://opencode.ai/zen/go/v1
  # 自定義 x-opencode-session 頭部
  headers:
    x-opencode-session: my-fixed-session
  # 顯式指定會話 ID
  sessionId: my-fixed-session

頭部優先級

當未顯式配置時,插件按以下順序確定會話 ID:
1. 顯式配置的 headers['x-opencode-session']
2. 顯式配置的 sessionId
3. 當前 DSH agent 會話 ID
4. 提供商級別的 UUID(用於非 agent 調用)

注意事項

  • 運行環境:需要 Node.js 20+ 或 pnpm。
  • 重啓機制:安裝後必須重啓 dsh web 才能生效。
  • 平臺支持:支持 macOS、Linux 和 Windows。
  • 官方包保護:插件以 Drop-in copy 或 Bundle 方式工作,不會修改 DSH 安裝目錄中的官方 profile 包。

總結

該插件解決了 DSH 使用 OpenCode Go / Zen 作爲搜索提供商時的路由錯誤。通過標準的安裝命令和配置文件修改,即可恢復 web_search 工具的正常功能。

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

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

小夜