前言¶
在 DeepSeek Harness(DSH)裏,模型需要聯網時通常走官方 web_search,摘要往往不夠回答細節問題;若本機直接 fetch 目標 URL,又會把 SSRF 風險留在 harness 進程裏。按次計費的搜索通道在長時間開發會話裏也不便宜。下面介紹的插件把抓取委託給用戶自選的第三方或自建服務,本機不直連任意 URL;從 2.0 起還可把搜索後端換成自建的 SearXNG,模型側仍用原來的 web_search 與 web_fetch_url。
這是什麼¶
dsh-fetch-search 由 tallahandsome-ux 維護,在 SkillHub 分類爲 admin-security,當前倉庫版本 2.1.0(MIT)。它向 DSH 官方的 ctx.web 插槽註冊兩類能力:安全的網頁抓取(Tavily / Jina Reader / Firecrawl / 契約 v1 自定義服務)與 自建搜索(SearXNG,需單獨開啓)。簡介強調:API key 只進託管憑據庫、會話級抓取預算、可選自動管理的本地 Crawl4AI 棧,本機零出站到模型指定的目標 URL。
核心功能¶
安全抓取(快遞員模式)¶
模型先通過 web_search 拿摘要;不夠時會自主調用 web_fetch_url({ url })。實際 HTTP 由你配置的服務商完成,DSH 主機不直接訪問目標網址,從架構上收窄 SSRF 面。轉發前默認拒絕內網/保留地址目標(縱深防禦);主服務商失敗時可沿有序回退鏈降級,並帶配額與失敗冷卻。
憑據與會話預算¶
API key 僅寫入 DSH 託管保險箱(~/.dsh/.credentials.yaml,0600),GUI 只顯示「已配置/未配置」,不回顯明文。默認每會話最多 10 次抓取,超限拒絕並提示。同一 URL 在緩存有效期內重複抓取走內存緩存,不消耗第三方額度與會話預算(默認緩存開啓,TTL 600 秒)。
多服務商與結構化結果¶
支持 Tavily、Jina Reader(可匿名)、Firecrawl 及自定義契約 v1 服務;可配置本地 HTTP 代理(如 http://127.0.0.1:27822)應對網絡阻斷。web_fetch_url 除正文外返回標題、標題大綱、鏈接、字數、預計閱讀時長等字段,便於模型引用。
自建 SearXNG 搜索(2.0 起)¶
開啓 searchEnabled 後,插件以 third-party 註冊搜索 provider,替代按次計費的官方聯網搜索;搜索不佔用 maxFetchesPerSession。需在 profile 的 web 行將 searchProvider 設爲 third-party(整行 patch,需保留 fetchProvider)。遠程實例可配 searchBaseURL 與鑑權頭組合;本地 Docker 默認可匿名。搜索請求超時默認 20s;403/429 等錯誤在 README 中有對應診斷說明。SearXNG 側前置條件見倉庫 docs/search-searxng.md。
Crawl4AI 與自動棧¶
商業服務不可用時,可將 Crawl4AI 作爲自定義服務商(內置 crawl4ai 適配器,直連 /md 協議)。當默認或兜底爲 loopback 上的自定義服務時,插件可自動拉起容器與包裝進程並 watchdog 自愈(資料中的「自建 Crawl4AI 棧自動管理」)。
安裝與啓用¶
環境:已安裝 DeepSeek Harness 與 pnpm。本插件 v1.1.0 起要求 dsh ≥ 0.2.0-rc.0 且 < 0.2.2(README 已實測多個 0.2.x 版本);更舊的 dsh 0.1.x 應使用插件 v1.0.0。
推薦安裝(來自 README 原文):
dsh plugin --profile web add https://github.com/tallahandsome-ux/dsh-fetch-search.git
pnpm v11 首次安裝若報 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED,需按報錯提示在 web profile 的 pnpm-workspace.yaml 裏放行對應 git 依賴的 build,再重試。
安裝完成後重啓 dsh web;在「插件」面板 → 已安裝插件中出現「網頁抓取與搜索」即成功。配置入口:設置 → 網頁抓取與搜索(settings.section 插槽,字段 volatile 熱生效),或插件詳情頁同一張卡片。
DSH Desktop:desktop profile 不由 CLI 管理,應在桌面應用內通過本地路徑(file:...)安裝;勿對 desktop profile 執行 dsh plugin --profile desktop。
典型用法¶
驗證抓取鏈路¶
- 重啓
dsh web,瀏覽器 Ctrl+F5 強刷。 - 打開 網頁抓取與搜索,選擇服務商(如 Jina Reader),點「測試連接」應成功。
- 新建會話,模型即可通過
web_fetch_url抓取全文。
配置要點(卡片)¶
- 服務商下拉與 API Key(Tavily/Firecrawl 建議配置;Jina 可留空)。
- 每會話抓取上限(默認 10)、本地代理、抓取緩存、單次內容上限(默認 100000 字符)、拒絕內網目標、回退鏈。
- 啓用 SearXNG 時:打開搜索節、按提示 patch profile,點「測試搜索」。
Crawl4AI 示例(Docker)¶
容器需自帶 token,默認監聽 127.0.0.1:11235:
docker run -d -p 127.0.0.1:11235:11235 --name crawl4ai --shm-size=1g `
-e CRAWL4AI_API_TOKEN=<你的token> unclecode/crawl4ai:latest
在卡片 自定義服務商 添加名稱 crawl4ai、類型 crawl4ai(自建容器),設爲默認服務商,token 寫入 Key 框進保險箱。
工作流程(摘自 README):
用戶提問 → web_search → 摘要足夠則回答
→ 否則 web_fetch_url → 第三方/自建服務抓取 → 模型基於全文回答
適用場景與注意¶
適合:需要在 DSH 裏讓模型自主讀網頁全文、又要把出站與 SSRF 風險外包給可信抓取服務或自建 Crawl4AI/SearXNG 的開發者;希望搜索零邊際成本、可自控引擎與隱私邊界時,可啓用 SearXNG 分支。
注意:
- 插件以當前 dsh 進程的權限運行;安裝前請自行審閱 GitHub 源碼 與 MIT 許可證,勿把 API key 寫入會被提交的
.env或聊天記錄。 - key 只應通過官方 credentials Remote 寫入;若疑似泄露,應在服務商控制台輪換。
- 社區目錄 SkillHub 爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係;星標等元數據以目錄與 GitHub 爲準(資料中 GitHub 2 stars)。
結尾¶
dsh-fetch-search 把「搜索 + 全文抓取」收進 ctx.web,用第三方/自建鏈路換本機安全邊界,並用會話預算與緩存控制成本。進一步細節(契約 v1、SearXNG 前置條件、回退鏈行爲)見倉庫 README 與 docs/。
- 目錄頁:https://www.skillhub.cn/plugins/tallahandsome-ux/dsh-fetch-search
- 源碼:https://github.com/tallahandsome-ux/dsh-fetch-search