dsh-search-first:讓智能體先搜再動手

前言

在 DeepSeek Harness(DSH)裏跑任務時,智能體拿到目標後往往會直接寫文件、改代碼或執行命令,等做完才發現倉庫裏已有實現、社區裏已有成熟方案,結果是重複造輪子、引入多餘 bug,還浪費 token 和時間。常見補救方式是靠人工在對話裏反覆強調「先查一下」,但這類約束不穩定,也不會在每次 system prompt 組裝時自動生效。

下面介紹的 dsh-search-first 把工作流裏的「先找已有方案」寫進系統提示,並可選地在同一輪對話裏攔截尚未搜索就觸發的動手類工具調用。插件由維護者 Cindy-ponoiyvhj 發佈,在 SkillHub 目錄中歸類爲工作流;倉庫採用 MIT 許可證,當前 package 版本爲 0.1.0。

這是什麼

dsh-search-first 的定位可以用 README 裏的一句話概括:Look before you build.(先看清再構建。)

它解決的是:智能體在寫入、編輯、運行或安裝 anything 之前,沒有系統性地檢索現有實現、包或文檔化做法。插件通過 DSH 的 bundle 機制注入規則,必要時加上「硬 guard」,把搜索從事後補救變成默認第一步。

核心功能

插件由兩部分組成,規則部分始終可用;guard 部分默認關閉。

系統提示規則(默認開啓)

在組裝 system prompt 時增加一節,要求智能體在寫、改、跑命令或安裝任何東西之前,先搜索是否已有實現、包或文檔化方案,並儘量複用檢索結果。該節在每次 prompt 組裝時都會參與,不依賴用戶當輪是否記得提醒。

規則可通過配置 enabled: false 一併關閉;也可用 order(默認示例爲 130)調整該節在 system prompt 中的順序;rule 可替換默認規則正文。

可選硬 guard(strict: false 爲默認)

當在 bundle 配置裏設置 strict: true 時,同一輪對話中,若尚未運行過「算作搜索」的工具,則第一次調用動手類工具會被拒絕。README 列舉的動手類工具包括 write、edit、ops_bash、plugin_manager、present 等;拒絕響應會帶上原因與重試說明,智能體可在下一步自行糾正,而不是卡死。

guard 的行爲要點(均來自 README):

  • 按輪次、按會話生效:本輪一旦跑過搜索工具,本輪內後續被 guard 的工具均可使用。
  • 不攔截搜索工具本身,也不攔截 allowTools 中列出的工具。
  • 子智能體通過 system prompt 繼承規則,但各自維護本輪的 turn 狀態。
  • 規則節只註冊一次;若 systemPrompt 服務掛載較晚,註冊會在最多 20 秒內重試。

searchTools 與 guardedTools 支持精確工具名或前綴匹配,例如 ops_bash 也會匹配 ops_bash_async。

安裝與啓用

官方安裝方式如下,也可從插件市場安裝同一 bundle:

dsh plugin add dsh-search-first

安裝後,在 bundle 的 insert 行上按需填寫 config。下列鍵均爲可選:

- insert:
    - id: search-first
      name: 'dsh-search-first'
      config:
        enabled: true      # false 時同時移除規則與 guard
        order: 130         # system prompt 各節的順序
        strict: false      # true:本輪未搜索前拒絕動手類工具
        rule: |            # 自定義規則正文,替換默認文案
          ...
        searchTools: [web_search, memory_search]   # 哪些調用算作「已搜索」
        guardedTools: [write, edit, ops_bash]      # guard 攔截的工具
        allowTools: [ops_bash]                     # guard 例外,始終放行

默認 strict: false 是有意爲之:README 說明,一行 typo 級別的修改不應被迫先做一次網頁搜索。

典型用法

僅依賴規則、不改變工具攔截(適合大多數日常任務):

  1. 執行 dsh plugin add dsh-search-first。
  2. 保持 enabled: true,strict: false(或不寫 strict)。
  3. 智能體在每次組裝 system prompt 時都會讀到「先搜索再動手」的約束,行爲上會更傾向先查倉庫、文檔或記憶,再寫代碼。

需要強制「本輪必須先搜」時:

  1. 在同一 bundle 配置裏設置 strict: true。
  2. 確認 searchTools 覆蓋你環境裏真實的搜索能力(默認示例爲 web_search、memory_search)。
  3. 若某些 bash 操作必須在未搜索時也允許,將其加入 allowTools(示例中包含 ops_bash)。

完全關閉插件效果:

  • 設置 enabled: false,規則與 guard 一併移除。

適用場景與注意

適合誰

  • 在 DSH 裏做功能開發、集成第三方庫、寫腳本或改配置,且希望減少重複實現的團隊或個人。
  • 希望把「查 prior art」固化進工作流,而不是依賴單次對話裏的口頭約束。
  • 對高風險任務(大面積改庫、裝新依賴)希望開啓 strict: true,保證本輪至少執行過一次搜索工具。

使用前請注意

  • 插件與 DSH 進程同權限運行;安裝前建議閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認 bundle 行爲符合你的安全策略。
  • SkillHub 上的 插件目錄頁 是社區目錄,與 DeepSeek / 幻方無官方從屬關係;DSH 生態遵循「一切皆插件」,本插件是其中一條工作流類擴展。
  • guard 只約束配置中的 guardedTools;若你的任務鏈依賴未列入 guard 的工具,行爲會與「strict 全開」的預期不一致,需要自行調整 guardedTools / allowTools。
  • 子智能體繼承規則但不共享父級的「本輪是否已搜索」狀態,多 agent 場景要單獨理解每一輪的 guard 狀態。

結尾

重複解決已有問題,在 token、時間和缺陷上都是更貴的路徑;先找到成熟方案再動手,是 README 給出的動機。dsh-search-first 用系統提示把這一習慣寫進默認行爲,並可用 strict: true 把「先搜」從建議升級爲同一輪內的工具級約束。

  • 目錄頁:https://www.skillhub.cn/plugins/Cindy-ponoiyvhj/dsh-search-first
  • GitHub:https://github.com/Cindy-ponoiyvhj/dsh-search-first
羽毛球分组比赛记分
小程序二维码

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

小夜