dsh-search-first: 强制先搜索再回答的 DSH 插件

前言

DeepSeek Harness (DSH) 的理念是「一切皆插件」。在开发智能体或使用大模型进行复杂任务时,模型容易产生幻觉或缺乏实时信息。dsh-search-first 插件通过在 agent/pre-step 阶段强制执行多源搜索,解决了回答缺乏实时性和准确性问题。

插件定位

这是一个 DeepSeek Harness (DSH) Cordis 插件,遵循 “Search first, verify facts, reply last” 的原则。它接管了宿主模型的回答前奏,负责查询提取、统一搜索、页面抓取、结果组织与缓存,最后将组织好的实时情报注入给宿主模型,最终回答仍由宿主模型生成。

核心功能

  • 可配置的查询提取模型:在提取搜索意图时使用的子模型可自定义,留空则跟随会话模型。
  • 引用格式引导:强制引导宿主模型使用标准化的引用格式,便于溯源。
  • 多源排序与抓取:对多来源的搜索结果进行排序,并选择性抓取页面内容返回给宿主模型。
  • 全链路执行:覆盖查询提取、统一搜索引擎、页面抓取、结果组织、缓存及运行持久化。

安装与启用

环境要求

  • 挂载 dsh web profile,版本需 >= 0.1.1-rc.2。
  • 系统安装 Node.js,版本需 >= 22。

安装命令

dsh plugin --profile web add https://github.com/v587d/dsh-search-first.git

安装完成后必须重启 dsh web。

卸载

dsh plugin --profile web remove dsh-search-first

典型用法

  1. 配置搜索 API:进入设置中的 “Search first” -> “Search APIs” 点击 “Test all connections” 测试连通性。
  2. 设置密钥:必须导出至少一个 API 密钥(支持 AnySearch / Tinyfish / Tavily)。密钥可配置在环境变量(如 TAVILY_API_KEY)或 $DSH_HOME/.credentials.yaml 中。AnySearch 支持匿名模式(无需 Bearer header)。
  3. 使用开关:在会话输入框下方找到 “Search First” 开关来控制单次会话的启用状态。右键点击开关可返回全局默认设置。

配置说明

设置路径为:Settings -> Search first。

配置项 说明
General 默认启用开关,失败策略(continue/block),注入模式,总体超时时间。
Query Extraction 指定提取查询的子模型,超时时间,最大 Token 数。
Cache 缓存目录(默认 $DSH_HOME/search-first,重启后 root 生效),搜索/抓取有效期,清除按钮。
Limits 最大搜索结果数、最大抓取页数、最大注入字符数。
Search APIs 运行模式(顺序故障转移/并行扇出合并),三大搜索引擎开关与优先级,单提供商超时,ctx.web 回退,本地 HTTP 回退。

适用场景与注意

  • 使用成本:免费层级通常足够使用。
  • 权限风险:插件以当前 dsh 进程的权限运行,安装前请检查源码与许可证。
  • 生态说明:DeepSeek Harness (DSH) 遵循「一切皆插件」的理念。本插件收录于社区目录,与 DeepSeek / 幻方无官方从属关系。

总结

通过强制在回答前执行搜索与事实核查,该插件能有效提升智能体回答的可靠性。更多细节与源码可参考项目主页。

羽毛球分组比赛记分
小程序二维码

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

小夜