前言¶
在 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 級別的修改不應被迫先做一次網頁搜索。
典型用法¶
僅依賴規則、不改變工具攔截(適合大多數日常任務):
- 執行
dsh plugin add dsh-search-first。 - 保持
enabled: true,strict: false(或不寫strict)。 - 智能體在每次組裝 system prompt 時都會讀到「先搜索再動手」的約束,行爲上會更傾向先查倉庫、文檔或記憶,再寫代碼。
需要強制「本輪必須先搜」時:
- 在同一 bundle 配置裏設置
strict: true。 - 確認
searchTools覆蓋你環境裏真實的搜索能力(默認示例爲web_search、memory_search)。 - 若某些 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