v587d/dsh-search-first

dsh-search-first

Search first, verify facts, reply last — enforced by DSH.

待分类anysearchdsh-webtavily

Search First

English

先检索、再核实、最后回答 —— 由 DSH 强制执行。

Search First 演示视频

▶ 演示视频:https://youtu.be/rGc5OCydHyY

一个 DeepSeek Harness(dsh)Cordis 插件,用于在模型回答前强制进行多源网络检索。 在 agent/pre-step 阶段,当 Search First 启用时,它会依次执行: 查询抽取 → 统一检索引擎(AnySearch / TinyFish / Tavily)→ 抓取 → 整理 → 缓存 + runs/ 落盘 → 注入整理好的实时线索以指导核实,然后把控制权交还 agent 循环。最终回答仍由 LLM 完成。

特点

  1. 执行查询任务的子模型可自定义。
  2. 引导宿主模型规范引用,如下图。 自定义 HTML 标签
  3. 建模评价多源搜索结果,有针对性的抓取页面返回给宿主模型。

安装

前置条件:已挂载的 dsh web 配置(dsh ≥ 0.1.1-rc.2),Node ≥ 22。

# 从 GitHub 仓库安装:
dsh plugin --profile web add https://github.com/v587d/dsh-search-first.git

卸载:dsh plugin --profile web remove dsh-search-first(之后重启)。

从源码构建

pnpm install
pnpm check      # vitest + 类型检查(host + client)
pnpm build      # lib/(host ESM + d.ts)+ lib/client.js(浏览器打包产物)
pnpm test

快速开始

[!IMPORTANT] 运行前请至少导出 一个 API key(AnySearch / Tinyfish / Tavily)。 免费额度就够用。

  1. 安装后重启 dsh web。
  2. 打开 Settings → Search first → Search APIs → Test all connections (请先按第 3 步配置 key,否则探测会报"缺少 key")。
  3. 至少提供一个检索服务 key —— 把它加入 $DSH_HOME/.credentials.yaml, 或在环境中 export TAVILY_API_KEY / ANYSEARCH_API_KEY / TINYFISH_API_KEY。 AnySearch 也支持匿名使用(省略 Bearer 头)。
  4. 回到会话中,输入框下方的 Search First 开关按会话决定是否启用 (右键开关可恢复为跟随全局默认)。

配置(Settings → Search first)

分区字段
常规默认启用、失败策略(continue / block)、注入模式、整体超时
查询抽取显式 provider/model(留空 = 跟随当前会话模型)、超时、最大 token 数
缓存目录(留空 = $DSH_HOME/search-first;根目录改动需重启生效)、检索/抓取 TTL、清除按钮
限制最大检索结果数、最大抓取页数、最大注入字符数
检索 API模式(顺序故障转移 / 并行扇出+合并)、三大服务商启用/credential-ref/优先级、单服务商超时、ctx.web 回退、本地 HTTP 回退、Test all connections

密钥仅以 credential ref 形式保存(例如 TAVILY_API_KEY);真实值存放在 $DSH_HOME/.credentials.yaml 或环境变量中 —— 绝不写入 settings。

许可证

MIT —— 见 LICENSE。