dsh-plugin-ai-super-search:接管 DSH 原生搜索的免費工具集

前言

DeepSeek Harness(DSH)內置的 web_search 工具默認調用官方付費接口,會消耗 Token 併產生費用。dsh-plugin-ai-super-search 通過接管該工具並提供 TinyFish、AnySearch、Bing 爬取、Jina 與 DuckDuckGo 等免費鏈路,實現了零額外 Token 消耗的搜索功能。

安裝與啓用

本插件以 bundle 形式提供,安裝後會自動將配置補丁疊進 profile。

  1. 安裝插件:
    dsh plugin --profile <profile> add dsh-plugin-ai-super-search
  1. 驗證安裝:
    運行以下命令檢查插件是否被正確加載:
    dsh --profile <profile> --dump-config
啓動後在插件列表中應出現 `ai-super-search`(模塊名 `dsh-plugin-ai-super-search`),狀態爲 active。工具列表中應出現四個獨立工具:`ai_super_search_web_search`、`ai_super_search_fetch_url`、`ai_super_search_local_files`、`ai_super_search_code`。
  1. 檢查依賴:
    確認 node_modules/dsh-plugin-ai-super-search 文件夾存在。若該鏈接缺失,loader 會靜默跳過整層 patch,導致搜索功能回落到官方付費通道且無報錯。

  2. 桌面端安裝:
    桌面端(Electron 應用)的 desktop profile 由應用獨佔管理,CLI 會拒絕操作。請在桌面端通過 設置 → 插件管理器 進行安裝或卸載。dsh plugin 命令僅適用於 web、acp、headless 或其他 CLI 管理的 profile。

核心功能

插件主要包含兩層能力:

  1. 接管原生 web_search:
    通過 cordis.patch.yml 將 web.searchProvider 切換至插件提供的 tinyfish 等後端,使得 DSH 內置的 web_search 工具直接走免費鏈路。

  2. 提供獨立工具組:

    • ai_super_search_web_search:免費搜索網頁,支持多引擎降級鏈路。
    • ai_super_search_fetch_url:使用 Jina Reader 讀取網頁內容,失敗時回退直連 HTML。
    • ai_super_search_local_files:在指定根目錄內搜索文本文件。
    • ai_super_search_code:在指定根目錄內搜索代碼並返回語言、行號和上下文。

免費搜索鏈路

搜索鏈路的實際順序由 src/search.js 的 webSearch() 決定。可用後端包括 TinyFish、AnySearch、Bing(爬取)、Jina、DuckDuckGo Lite。即使一個 Key 都未配置,插件也會自動降級,不會中斷搜索功能。

順序 後端 進鏈條件
0 DSH_SEARCH_ENGINE 顯式設置時優先,失敗後仍按順序降級
1 TinyFish 必須配置 TINYFISH_API_KEY
2 AnySearch 免 Key 也可進鏈,按 IP 走匿名額度
3 Bing 免 Key 直接抓取結果頁 HTML
4 Jina 配置 DSH_JINA_API_KEY 可提額度
5 DuckDuckGo Lite 無 JS 輕量版兜底

可通過環境變量 DSH_SEARCH_ENGINE 指定首選引擎。

前端呈現

插件實現了與官方 web_search 完全一致的呈現鉤子,確保前端展示的搜索卡片與官方一致:

  • output.render:生成模型側文本(Markdown 源碼列表)。
  • output.presentationMeta:提供可重放元數據 { sources, truncated }。
  • presentCall:顯示運行中卡片。
  • presentResult:顯示完成後的富卡片。

排障

安裝後若發現搜索功能未生效,需排查以下兩點:

  1. Bundle 解析失敗:
    若 package.json 中聲明的 bundle 名稱在 node_modules 中找不到對應的鏈接(例如包名變更未重新安裝、舊 link-projection 機制失效),loader 會靜默跳過整層 patch。此時插件列表可能顯示爲 inactive 或缺失,需重新運行 pnpm install 確保 node_modules 存在。

  2. 配置文件錯誤:
    profile 目錄下的 cordis.yml 是“空根補丁文件”,每次啓動都會被覆寫。有效的配置來源順序爲:各 bundle 自帶的 patch → profile 的 cordis.patch.yml → $DSH_HOME/cordis.patch.yml → --patch overlay。修改 cordis.yml 無效。

適用場景與注意

  • 場景:需要頻繁使用搜索功能且希望降低 Token 成本的開發者或智能體開發者。
  • 運行權限:插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
  • 構建腳本:從 GitHub 安裝時,若使用 pnpm >= 10,默認會拒絕執行 git 依賴的構建腳本。需在 pnpm-workspace.yaml 中添加 allowBuilds 配置或在安裝時指定版本(如 #<sha>)。

參考資料

  • GitHub 倉庫:https://github.com/huguangyu666/dsh-plugin-ai-super-search
  • 社區目錄:https://www.skillhub.cn/plugins/huguangyu666/dsh-plugin-ai-super-search
羽毛球分组比赛记分
小程序二维码

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

小夜