dsh-web-search-ocgo:走 OpenCode Go 的 DSH 網頁搜索 Provider

前言

在 DeepSeek Harness(DSH)裏做需要聯網的智能體,通常會掛一個網頁搜索 provider。官方 dsh-web-search-deepseek 走 api.deepseek.com/anthropic/v1,能搜,但 result.content 實測摘要覆蓋率爲 0%,也沒有查詢緩存和 Go 端點失敗後的回退。社區裏曾有人 fork 出 dsh-web-search-opencode-go,把請求改到 OpenCode Go;在 DSH 0.1.7-rc.2 上,它還會因靜態 import 了不存在的 installSettingsSection 而加載即崩,或靠 profile 裏指向舊版 dsh 的 symlink 僥倖跑起來。

dsh-web-search-ocgo 由 jitang-open 維護,從零重寫並保持對外行爲兼容:走 OpenCode Go(自動注入 x-opencode-session),補上失敗回退官方端點、查詢緩存、result.content 總結與自帶設置頁。下面介紹它是什麼、能做什麼,以及如何掛進 web profile。

這是什麼

  • 倉庫:jitang-open/dsh-web-search-ocgo
  • 分類:聯網工具(SkillHub 目錄:dsh-web-search-ocgo)
  • 定位:DSH 網頁搜索 provider,provider id 爲 opencode-go,loader entry id 爲 web-search-ocgo
  • 依賴面:只 import @deepseek-ai/schemastery 一個外部包;其餘通過 ctx.get() 取服務,避免插件目錄解析不到 @deepseek-ai/dsh-* 的版本錯配

與官方 dsh-web-search-deepseek 相比,端點改爲 https://opencode.ai/zen/go/v1,模型只認 deepseek-v4-flash / deepseek-v4.1-flash;並自動注入 x-opencode-session 與 x-opencode-client。

核心功能

端點與會話頭

默認 baseURL 爲 https://opencode.ai/zen/go/v1(不含 /messages),默認模型 deepseek-v4.1-flash。憑據通過配置項 apiKeyEnv(默認 OPENCODE_API_KEY)從 DSH 憑據中心讀取。

result.content 與結果質量

官方 provider 不填 result.content;本插件從響應 text 塊取模型總結寫入 result.content,默認截斷 2000 字符(answerMaxChars,設爲 0 則不返回)。單條摘要默認截斷 300 字符(snippetMaxChars)。page_age 會規範成 ISO-8601;解析失敗則丟棄,不塞假日期。

查詢緩存

默認開啓:TTL 5 分鐘(cacheTtlMs: 300000),LRU 最多 50 條(cacheMaxEntries: 50)。命中緩存時 token 消耗爲 0。README 中 32 次請求實測表明,下調 maxUses 對總 prompt 和結果條數幾乎無影響(每次實際只發起 1 次 web_search),省額度應靠緩存而非改 maxUses(默認仍爲 5)。

失敗回退與重試

Go 端點重試耗盡後,可回退到官方端點(fallbackEnabled 默認 true,回退模型默認 deepseek-flash,會消耗 DeepSeek 餘額)。對 429、5xx 和網絡錯誤有退避重試(retryCount 默認 1)。

設置頁

Web profile:「設置 → 插件」→ dsh-web-search-ocgo,改動在失焦或回車時寫入 profile 的 cordis.patch.yml。dsh-tui 下會註冊 TUI 設置區塊(約 19 個字段、7 個分組)。響應統計走 logger.info,不寫自定義會話事件,避免歷史日誌因未知事件類型無法加載。

診斷與開發腳本

倉庫提供 node scripts/check.mjs、node --test test/*.test.js、node bin/doctor.mjs(可 --probe 真發搜索)、以及 bench 腳本;當前 package 版本爲 0.2.0,許可證 MIT,Node 要求 ^22.19.0 || >=24.0.0。

安裝與啓用

README 未提供 dsh plugin add 一類命令,需在本地 clone 或下載源碼後,用符號鏈接掛進 profile。以下步驟摘自倉庫說明(路徑請按本機實際目錄替換 README 中的示例)。

1. 準備 schemastery 鏈接

讓插件目錄能解析唯一外部依賴:

ln -sfn ~/.dsh/profiles/web/node_modules/@deepseek-ai/schemastery \
        node_modules/@deepseek-ai/schemastery

在插件源碼根目錄執行;node_modules/@deepseek-ai 不存在時需先創建。

2. 掛進 web profile

ln -sfn "$PWD" ~/.dsh/profiles/web/node_modules/dsh-web-search-ocgo

3. 登記 bundle

編輯 ~/.dsh/profiles/web/package.json:在 dsh.profile.bundles 中加入 dsh-web-search-ocgo,並在 dependencies 中加入指向本機絕對路徑的 link,例如:

"dsh-web-search-ocgo": "link:/你的路徑/dsh-web-search-ocgo"

4. 清理舊 fork(若曾用過)

從 ~/.dsh/profiles/web/cordis.patch.yml 刪除舊的 web-search-opencode-go 段,並從 dsh.profile.bundles 移除 dsh-web-search-opencode-go。

5. 重啓並驗證

dsh web

日誌中應出現類似:

[web-search-ocgo] 已裝載 provider id=opencode-go endpoint=https://opencode.ai/zen/go/v1 model=deepseek-v4.1-flash fallback=deepseek-flash

進一步檢查:

dsh --profile web --dump-config | grep -A5 "id: web$"      # searchProvider 應爲 opencode-go
node scripts/check.mjs
node --test test/*.test.js
node bin/doctor.mjs

典型配置

圖形界面

Web:「設置 → 插件」→ dsh-web-search-ocgo。TUI:在 /settings 中找 web-search-ocgo 分組(端點與模型、憑據、OpenCode Go 會話頭、失敗回退、查詢緩存、結果質量、可靠性)。

YAML 片段

可在 ~/.dsh/profiles/web/cordis.patch.yml 中覆蓋默認值,例如:

- id: web-search-ocgo
  name: dsh-web-search-ocgo
  config:
    apiKeyEnv: OPENCODE_API_KEY
    baseURL: https://opencode.ai/zen/go/v1
    model: deepseek-v4.1-flash
    fallbackEnabled: true
    cacheTtlMs: 300000
    answerMaxChars: 2000

常用字段:sessionId(空則每次啓動隨機)、fallbackModel(默認 deepseek-flash)、cacheEnabled / cacheMaxEntries、retryCount。

適用場景與注意

適合誰:已在用或計劃用 OpenCode Go 做網頁搜索、需要 result.content 摘要、希望 Go 掛了還能回退官方端點、並想用緩存降重複查詢成本的用戶。

臨時回滾:在「設置 → 插件」把 web 的 searchProvider 改回 deepseek-official 並重啓,無需卸載本插件。

安全與權限:插件在 DSH 進程權限下運行,會讀憑據、發外網請求。安裝前應閱讀 GitHub 源碼 與 MIT 許可證,確認 apiKeyEnv 與端點配置符合你的合規要求。SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。

完全卸載:從 package.json 的 bundles 與 dependencies 移除、刪除 cordis.patch.yml 中 web-search-ocgo 段並將 searchProvider 改回官方、刪除 node_modules 下的 symlink,再重啓 dsh web。

結尾

dsh-web-search-ocgo 把 DSH 網頁搜索接到 OpenCode Go,並在官方能力之外補上摘要、緩存、回退與雙端設置頁,同時把依賴壓到 schemastery,減輕 dsh 升級時的加載風險。目錄頁:SkillHub;源碼與完整說明:GitHub README。

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

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

小夜