dsh-searchflow:实时搜索加速与流程可视化插件

前言

DeepSeek Harness(DSH)开发者在使用工具时,常面临两个痛点:一是工具调用过程处于“黑盒”状态,难以诊断失败原因或等待时间;二是 web_snapshot 和 browser_open 等操作耗时较长,拖慢了整体响应速度。dsh-searchflow 插件旨在解决这两个问题,通过泳道动效展示工具调用全链路,并拦截缓存请求以大幅缩短渲染时间。

核心价值

该插件由 Dayi-Z 维护,提供两项核心能力:
1. 可视化:将 web_search → web_fetch → web_snapshot → browser_open 等步骤实时呈现在工具调用行内,用 wb_* 动效图标(运行中蓝光呼吸 / 完成绿勾 / 失败红 X)替换默认图标,并用 ⚠ 徽标标记噪声(如 Cloudflare 挑战页)。
2. 加速:在 tools/execute 瀑布流中拦截缓存请求,web_snapshot 从 90s 缩短至 5ms,browser_open 前台等待时间缩短至 0ms,并自动预取搜索结果 Top-3。

泳道可视化

插件将工具调用映射为六个泳道阶段,每个阶段对应特定的工具和图标。工具行内会显示实时状态(缓存 / 规则 徽标)。

阶段 工具 图标
search web_search, web_search_pro, web_platform_search, github_issue_list, browser_automation_search, wiki_recall, mcp_search 拉匣寻物
fetch web_fetch, web_fetch_pro, web_exa_contents, browser_crawl, wiki_acquire 抓取
snapshot web_snapshot, browser_screenshot 取景·定影
click browser_open, browser_click, browser_type, browser_hover, browser_set_files, browser_recipe_run, browser_scroll, browser_automation_run 指尖按靶
read browser_read, browser_evaluate, browser_status, browser_opencli_*, browser_script_*, wiki_*, mcp_call, web_rule, web_history, web_search_stats, github_issue_read 等 16宫格扫描
navigate 其它导航类工具 路径绘制

搜索流程卡片

除了行内图标,插件还提供任务级的“搜索流程”面板(右下角,可收起/展开):

  • 阶段进度条:显示 搜索中 → 阅读中 → 撰写中,直接复用行内动效图标。
  • 渐进结果流:搜索完成后,Top-6 结果逐个浮现(70ms 错峰),可点击直达原文。
  • 完成摘要 Chips:显示总耗时、来源数、去重、验证等级(高/中/低)及约 tokens 数,不暴露引擎归属。
  • 深度模式:默认关闭,开启后自动扩展查询(CJK 查询加英文学术关键词,英文加中文综述关键词)。

缓存拦截与加速

插件通过内存 LRU(200/1h)和 web-search-pro store.db 双层缓存拦截请求,具体收益如下:

拦截点 行为 收益
web_snapshot 命中缓存直接短路返回 {value} 90s → 5ms
browser_open 命中缓存立即返回,真实导航后台预热 ~13-18s → ~0ms 前台等待
搜索结果 Top-3 完成后对结果 URL 串行预取渲染 后续 open/snapshot 直接命中
URL 规范化 共享缓存键(去 www / 尾斜杠 / 参数排序) 变体重复渲染归零
噪声检测 标记 Cloudflare 挑战 / 404 / 噪声查询 假成功一目了然

better-sidebar 集成

搜索流程面板支持两种寄生形态,自动选择:

  • 页签形态:当 ctx.betterSidebar 在场时,注册为侧栏页签(id searchflow:panel),铺满容器。支持“检索记录”,最多保留 20 条历史,单条展开最多 30 条结果。
  • 浮动卡片形态:当 better-sidebar 缺席时,显示右下角固定卡片(368px 毛玻璃),可收起为胶囊。
  • 软依赖:插件不强制 import better-sidebar 类型,只按结构探测。支持迟到接入(ctx.inject)和手动覆盖(localStorage['sf.host'])。
  • 无障碍:prefers-reduced-motion 下禁用动画。调试可通过 window.__SF_DEBUG__.task 透出状态。

搜索定义与工具白名单

插件定义了“一次搜索”的边界,只有以下 4 个工具能开一轮新任务:

  1. web_search
  2. web_search_pro
  3. web_platform_search
  4. github_issue_list

其余网页工具(如 web_fetch, browser_open, wiki_recall)只顺带推进当前任务。知识库 / MCP 工具(如 wiki_recall, mcp_search)虽然带 search 图标,但不算 Web 搜索,不会误开搜索流程面板。

安装

dsh plugin --profile web add dsh-searchflow

安装后重启 profile 即可生效。

开发与依赖

  • 宿主依赖:需要宿主提供 webServer、tools 注入,以及 browser 服务(可选)。
  • 环境要求:Node.js ^22.19 || >=24,DSH >=0.1.0-rc.6。
  • 调试:前端调试可通过 window.__SF_DEBUG__.task 访问。

链接

  • 插件目录:https://www.skillhub.cn/plugins/Dayi-Z/dsh-searchflow
  • GitHub 仓库:https://github.com/Dayi-Z/dsh-searchflow
羽毛球分组比赛记分
小程序二维码

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

小夜