ModSearch:給 DeepSeek Harness 補上免費聯網搜索

前言

用 DeepSeek Harness(dsh)跑智能體時,一個很常見的落差是:官方 App 裏模型能聯網查資料,切到 API 或本地 harness 後,聯網能力就弱了甚至直接消失。DeepSeek、GLM 等模型本身並不自帶可靠的網頁檢索,dsh 雖然內置了 web_search 工具,但默認走的是 DeepSeek 的 keyed 搜索接口,對「零配置、免 API key」的訴求並不友好。

社區裏圍繞這個問題有不少方案。今天要介紹的是 SkillHub 插件庫「聯網工具」分類下的 liustack/modsearch(ModSearch):由維護者 liustack 開源,GitHub 上約 259 star、12 fork,MIT 許可。它既是 dsh 原生 bundle 插件,也能作爲 Agent Skill 裝進 Claude Code、Codex、Pi、OpenCode 等宿主,核心賣點是免費、免註冊、免 API key 起步,把網頁搜索、X(推特)搜索和單頁抓取補回來,並以結構化 JSON 證據返回,方便模型引用與二次處理。

需要說明的是:DeepSeek Harness 的理念是「一切皆插件」,SkillHub(https://www.skillhub.cn/plugins)是社區整理的插件目錄,與 DeepSeek / 幻方並無官方從屬關係;下文安裝命令以插件倉庫與目錄頁交叉覈實後的寫法爲準。

這是什麼

ModSearch 是一個面向 coding agent 的聯網搜索橋接插件。對 dsh 用戶來說,它不只是額外掛一個 skill——npm 包 @liustack/modsearch 自帶 dsh.bundle.patch,安裝後會:

  1. 把 dsh Web 端的 searchProvider 切到 modsearch,讓內置 web_search 走 ModSearch 引擎鏈,同時保留原生引用卡片 UI;
  2. 額外註冊 x_search(X 語料搜索)和 read_page(單頁精讀)兩個工具。

對沒有原生聯網能力的模型,ModSearch 相當於外掛了一層「搜索 + 抓取 + 引用」能力;裝完默認就能用 Firecrawl 的免註冊通道(每月約 1,000 免費 credits,無需賬號與 API key),不必先折騰密鑰。

核心功能與亮點

結合 GitHub README 與 docs/dsh.md,ModSearch 已覈實的主要能力如下。

1. 開箱免費,零配置可搜

默認引擎是 Firecrawl keyless:搜索與單頁抓取直接可用,不用註冊、不用綁卡。若後續需要更高額度,可再配置 Tavily、Exa、免費 Firecrawl key 等,也均有免費層。

2. 多引擎鏈與自動故障轉移

除 Firecrawl 外,還支持 Antigravity CLITavilyExaGrok Build(X 搜索)local(本地單頁抓取)。一個通道失敗或額度耗盡時,會自動切換到下一個;同一引擎還可配置逗號分隔的多密鑰輪換。

3. 結構化 JSON 輸出,而非整頁塞進上下文

CLI 向 stdout 打印統一信封的 JSON(modequeryresultsmeta 等),每條結果帶 enginesummaryitems(標題、URL、摘要)、uncertainty(事實存疑提示)和 warnings(路由/降級說明)。相比部分內置搜索把整頁原文推入模型上下文,結構化證據通常更省 token,也更利於 agent 做引用。

4. 三類聯網動作,覆蓋 dsh 缺口

能力 dsh 入口 說明
網頁搜索 內置 web_search 走 ModSearch 引擎鏈,保留原生引用卡片
X 搜索 新增 x_search 安裝並登錄 Grok Build 後可檢索 X 語料;無 Grok 時可能降級爲網頁替代,並在輸出中標註
單頁精讀 新增 read_page 讀取單個 URL,可帶問題聚焦;默認攔截私有網段,公網頁可走 Firecrawl 雲瀏覽器

5. 一次安裝,多端複用

除 dsh 原生 bundle 外,ModSearch 也可作爲 skill 用於 Claude Code、Codex、Pi、OpenCode 等。對 Codex 這類已有 DeepSeek 官方 web_search 的宿主,作者建議關閉內置搜索後再交給 ModSearch,以避免模型優先調用內置工具、skill 插不上話,同時也能降低上下文佔用。

安裝與啓用

dsh 用戶(推薦路徑)

實際啓動的 profile 上安裝。瀏覽器 UI 通常用 web profile。目錄頁與倉庫文檔給出的命令一致,當前版本爲 5.9.1(寫死版本號是爲規避 pnpm 11 minimumReleaseAge 導致 @latest 解析到舊包的問題):

npx -y @deepseek-ai/dsh plugin --profile web add @liustack/modsearch@5.9.1

安裝後重啓 dsh,再確認插件已解析:

npx -y @deepseek-ai/dsh plugin --profile web list --depth 0
npx -y @deepseek-ai/dsh --profile web --dump-config

--dump-config 輸出裏應同時看到 searchProvider: modsearch 與名爲 @liustack/modsearch 的插件行。

離線體檢

不必先消耗搜索額度,可先跑健康檢查:

npx -y @liustack/modsearch@5.9.1 doctor

圖形化配置(免命令行)

dsh Web 端可在 設置 → 插件 → 插件配置 找到 搜索引擎(ModSearch) 卡片:選擇首選引擎、填寫 API key 或自建端點、勾選參與故障轉移的引擎,保存後寫入與 CLI 相同的 ~/.modsearch/config.json(文件權限 0600)。

可選:增強免費引擎

若希望綜述質量更好,可安裝 Antigravity CLI 並瀏覽器登錄:

curl -fsSL https://antigravity.google/cli/install.sh | bash
agy    # 瀏覽器完成登錄後退出

也可通過 CLI 或設置卡片配置 Tavily / Exa / Firecrawl 的免費 key,例如:

modsearch config set tavily.apiKey <key>
modsearch config set exa.apiKey <key>
modsearch config set firecrawl.apiKey <key>

作爲 Agent Skill 安裝

若宿主不是 dsh,可把倉庫 skills/modsearch 鏈到各宿主約定的 skills 目錄(Claude Code → ~/.claude/skills/,Codex → ~/.codex/skills/,Pi / OpenCode → ~/.agents/skills/)。官方 INSTALL.md 建議直接對 agent 說:

按 https://github.com/liustack/modsearch 的 INSTALL.md 安裝並配置 modsearch skill,完成後運行體檢並把結果告訴我。

典型用法示例

裝好後不需要記專用命令,正常對話即可;需要查證的問題、開放域新聞、或粘貼 URL,插件會按場景自動觸發。

驗證三類工具是否生效

啓動 profile 後,可用 docs/dsh.md 推薦的三條小提示做冒煙測試:

  1. Search the web for the current Node.js LTS release and cite the sources. —— 應走 dsh 原生 web_search 卡片;
  2. Search X for recent posts from @deepseek_ai. —— 應調用 x_search(需 Grok Build 就緒);
  3. Read https://example.com and summarize the page. —— 應調用 read_page

日常對話式使用

中文場景下同樣適用,例如:

  • 「今天 AI 領域有什麼重要新聞?」—— 開放域網頁搜索,返回帶來源的條目列表;
  • 「幫我總結這篇文章講了什麼:https://example.com/blog/post」—— 單頁抓取與結構化摘要;
  • 「Node.js 現在哪條版本線還在維護?」—— read_page 可讀官網版本頁與發佈計劃,再給出結論表。

返回 JSON 中的 uncertainty 字段會提示哪些細節來自檢索聚合、可能需要二次覈實,適合在 agent 工作流裏當作「置信度腳註」。

適用場景與注意事項

適合誰用:

  • 在 dsh 裏用 DeepSeek / GLM 等模型,希望不綁搜索 API key 也能聯網的開發者;
  • 需要 X 語料單 URL 精讀,而宿主原生工具覆蓋不到的智能體場景;
  • 希望搜索證據以 JSON 結構化返回、便於引用與流水線處理的工程團隊。

使用前請注意:

  1. 權限邊界:插件以當前 dsh 進程權限運行,會訪問外網並按配置讀寫 ~/.modsearch/config.json。安裝前建議瀏覽源碼與 MIT 許可證,確認可接受其安全模型(倉庫提供 SSRF 防護、DNS 重綁定防護等說明,見 docs/security.md)。
  2. 上游引擎條款:Firecrawl、Tavily、Exa、Grok Build 等各有服務條款與額度,遵守責任在用戶側。
  3. dsh 仍在快速迭代:當前 bundle 已在 @deepseek-ai/dsh 0.1.0-rc.7 上驗證;大版本升級後建議重新 --dump-config 並跑 doctor
  4. 默認雲抓取:公網 URL 默認可能經 Firecrawl keyless 雲瀏覽器抓取,結果會帶路由警告;若希望自動抓取儘量本地化,可設置 modsearch config set firecrawl.keylessFetch false
  5. 倉庫協作政策:作者聲明不接受 PR,問題與建議走 GitHub Issues。

結尾

如果你正在給 DeepSeek Harness 或其它不能聯網的 coding agent 找一條「免 key 起步、能搜網頁也能搜 X、還能精讀單頁」的通路,ModSearch 值得先試:doctor 通過、三條冒煙提示跑通,基本就能判斷引擎鏈是否就緒。

  • 目錄頁:https://www.skillhub.cn/plugins/liustack/modsearch
  • GitHub:https://github.com/liustack/modsearch
  • 當前文檔版本:5.9.1 | 許可:MIT
羽毛球分组比赛记分
小程序二维码

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

小夜