前言¶
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 模式安裝。
- 執行安裝命令:
dsh plugin --profile web add github:leeyoung1/dsh-web-search-opencode-go
安裝命令會將插件添加到 `dsh.profile.bundles`,並自動處理 patch 配置。
- 必須重啓
dsh web進程,以加載新插件。
典型用法¶
安裝並重啓 dsh web 後,配置 baseURL 並設置 API Key 環境。
- 在
~/.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`)
- 在對話中自然語言搜索,或直接調用工具:
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 工具的正常功能。