dsh-web-degoog:用自建 degoog 接 DSH 的 web_search 與 web_fetch

前言

在 DeepSeek Harness(DSH)裏做帶聯網的智能體,通常會用到框架自帶的 web_search 和 web_fetch。若你希望搜索走後端自建的 degoog 實例(多引擎聚合、自行部署),同時抓取環節仍在 Harness 本機直連目標 URL,就需要把「搜索後端」和「抓取路徑」拆開配置。官方 @deepseek-ai/dsh-web 並不爲第三方搜索源單獨提供配置頁;社區插件 dsh-web-degoog 以 bundle 形式註冊並選中 degoog 提供方,並在 Plugins 頁或補丁里填寫實例地址即可複用同一發佈包。

下面按安裝、配置、行爲與安全說明介紹該插件;事實以 GitHub 倉庫 README 與 package 元數據爲準。本包當前面向 DSH 0.2.2-rc.1(next)及 volatile-config / Plugins 頁模型;若仍使用 0.1.x 設置模型,應使用該包的 0.3.1 發行版。

這是什麼

dsh-web-degoog 是 maintainer shantanugoel 發佈的 DSH bundle:用任意自託管 degoog 實例支撐 Harness 原生的 web_search 與 web_fetch 工具。實例 URL 與 API Key 均爲配置項,一份安裝包可適配不同部署。

核心能力

安裝後會註冊並選中兩個 provider(id 均爲 degoog):

Provider id 能力 實際支撐
degoog web_search 向你配置的 degoog 實例發起原生 GET /api/search(多引擎合併、打分、去重)。受保護實例可選用 Bearer Token。
degoog web_fetch 不經過 degoog:由 Harness 所在機器在 SSRF 防護下直接拉取 URL;degoog 核心無 scrape 端點。HTML 以 kind: 'html' 返回,由 dsh-tool-web 轉爲 Markdown。

因此:搜索流量指向你的 degoog;抓取流量不接觸 degoog 實例,但仍受插件內置 fetch 守衛約束。

安裝與啓用

在 web profile 下安裝:

dsh plugin --profile web add dsh-web-degoog

包聲明瞭 dsh.bundle.patch,CLI 會自動維護 profile 的 bundle 棧:安裝時併入圖層並寫入補丁,將 web.searchProvider / web.fetchProvider 設爲 degoog;卸載時移出。

安裝後必須配置 degoog 實例基址(serverUrl 爲空時搜索側視爲未配置)。任選其一:

1、Plugins 頁(推薦,免改文件)

側欄打開 Plugins,在 Installed plugins 下展開 dsh-web-degoog,找到 web-search-degoog 行,點 Configure。修改會寫入當前 profile 的實時條目,Save 後對下一次 search/fetch 生效,無需重啓。

2、啓動環境變量

DEGOOG_SERVER_URL=https://degoog.example.com dsh --profile web

API Key 可通過環境變量 DEGOOG_API_KEY 提供(與配置中的 apiKeyEnv 默認一致)。

3、Patch 文件(重啓與熱載仍有效)

在 ~/.dsh/profiles/web/cordis.patch.yml 中追加:

- id: web-search-degoog
  config:
    serverUrl: https://degoog.example.com

配置優先級(高到低):Plugins 頁寫入的 profile 條目 → 本包 bundle patch → 啓動環境(DEGOOG_SERVER_URL、DEGOOG_API_KEY)→ 內置默認(空 URL 表示搜索未配置)。DSH 0.2.x 上這些字段爲 volatile:操作時讀取,保存後無需重載 provider;界面會對覆蓋項顯示重置入口。

若之後想用官方搜索等其它源,可在不卸載的前提下用用戶 patch 或環境變量 $DSH_WEB_SEARCH_PROVIDER 覆蓋 bundle 的選擇。

web_fetch 與 Agent 預設

在 web profile 上,宿主側的 tool-web 行默認關閉;各會話的 web_search / web_fetch 由 agent preset 決定。自帶的 Standard、PTC、Cordis 預設已開啓 fetch: true。Minimal 或自定義預設若未啓用抓取,需在你自有副本的預設中顯式打開,例如:

- id: tool-web
  name: '@deepseek-ai/dsh-tool-web'
  config:
    fetch: true
    searchTimeoutMs: 60000

已開始的會話不會隨 bundle 變更 preset;bundle 不能修改官方內置預設,只能改你自己複製的預設。

配置字段摘要

字段 默認 含義
serverUrl '' degoog 實例根 URL;爲空則搜索不可用,若仍選中 degoog 會在首次搜索時報 DEGOOG_SERVER_URL_MISSING。
apiKey - 明文 API Key;更宜用 apiKeyEnv,避免祕密進配置文件。Configure 頁不展示,必要時寫 patch。
apiKeyEnv DEGOOG_API_KEY 從憑證服務或啓動環境解析,可解析時以 Authorization: Bearer ... 發送。
searchType web 傳給 degoog 的 type(如 web、images 等,取決於實例安裝的引擎)。
lang '' 可選語言代碼,對應 degoog lang 參數。
allowPrivateAddresses false 僅 fetch 側:爲 true 時守衛允許撥號私有/迴環地址,便於 homelab 與內網站點同機部署;Configure 頁不展示,需 patch。

常見錯誤碼包括:DEGOOG_SERVER_URL_MISSING、WEB_PROVIDER_CREDENTIAL_MISSING(401/403 且無 Key)、WEB_PROVIDER_ERROR、WEB_ABORTED。

安全與策略

Fetch 守衛(摘要):僅 http/https;拒絕 URL 內嵌憑證與過長 URL;先 DNS 再撥號;拒絕解析到 loopback/私有/鏈路本地等地址;連接綁定校驗後的 IP 並保持 TLS SNI/Host;重定向逐步複檢(最多 5 跳);解碼正文上限 2 MB(可帶 truncated);拒絕二進制類型;單跳 stall 30 s、總時長 60 s 兜底。

web_fetch 允許模型選擇目標 URL,屬於產品設計。若策略不允許,請使用 fetch: false 的預設。

搜索請求發往你所配置的實例;API Key 應僅通過 HTTPS 發送。

插件以當前 dsh 進程權限運行;安裝前請自行審閱 源碼 與 MIT 許可證,並確認實例與密鑰管理方式符合你的合規要求。

卸載或切回官方搜索

dsh plugin --profile web remove dsh-web-degoog

bundle 圖層會自動退出棧,含 degoog provider 選擇,便於再選 DeepSeek 官方搜索。本包不刪除代理預設目錄或遺留 settings;若舊版創建過 ~/.dsh/.agent-presets/degoog-standard,需在 Settings → Agent presets 切換默認預設並手動刪除目錄;亦可從 ~/.dsh/settings.yaml 去掉遺留的 web-search-degoog: 段(DSH 0.2.x 首次啓動會導入並重命名該遺留文件)。

結尾

dsh-web-degoog 把 DSH 的聯網工具接到自託管 degoog:搜索走實例 API,抓取在本機直連並帶 SSRF 防護,適合希望搜索基礎設施自控、又要在 Harness 內保留標準 web_search / web_fetch 接口的 web profile 用戶。

社區插件目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝與配置請以倉庫 README 爲準。

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

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

小夜