前言¶
用 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,安裝後會:
- 把 dsh Web 端的
searchProvider切到modsearch,讓內置web_search走 ModSearch 引擎鏈,同時保留原生引用卡片 UI; - 額外註冊
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 CLI、Tavily、Exa、Grok Build(X 搜索)、local(本地單頁抓取)。一個通道失敗或額度耗盡時,會自動切換到下一個;同一引擎還可配置逗號分隔的多密鑰輪換。
3. 結構化 JSON 輸出,而非整頁塞進上下文¶
CLI 向 stdout 打印統一信封的 JSON(mode、query、results、meta 等),每條結果帶 engine、summary、items(標題、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 推薦的三條小提示做冒煙測試:
Search the web for the current Node.js LTS release and cite the sources.—— 應走 dsh 原生web_search卡片;Search X for recent posts from @deepseek_ai.—— 應調用x_search(需 Grok Build 就緒);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 結構化返回、便於引用與流水線處理的工程團隊。
使用前請注意:
- 權限邊界:插件以當前 dsh 進程權限運行,會訪問外網並按配置讀寫
~/.modsearch/config.json。安裝前建議瀏覽源碼與 MIT 許可證,確認可接受其安全模型(倉庫提供 SSRF 防護、DNS 重綁定防護等說明,見docs/security.md)。 - 上游引擎條款:Firecrawl、Tavily、Exa、Grok Build 等各有服務條款與額度,遵守責任在用戶側。
- dsh 仍在快速迭代:當前 bundle 已在
@deepseek-ai/dsh 0.1.0-rc.7上驗證;大版本升級後建議重新--dump-config並跑doctor。 - 默認雲抓取:公網 URL 默認可能經 Firecrawl keyless 雲瀏覽器抓取,結果會帶路由警告;若希望自動抓取儘量本地化,可設置
modsearch config set firecrawl.keylessFetch false。 - 倉庫協作政策:作者聲明不接受 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