前言¶
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在场时,注册为侧栏页签(idsearchflow:panel),铺满容器。支持“检索记录”,最多保留 20 条历史,单条展开最多 30 条结果。 - 浮动卡片形态:当 better-sidebar 缺席时,显示右下角固定卡片(368px 毛玻璃),可收起为胶囊。
- 软依赖:插件不强制 import
better-sidebar类型,只按结构探测。支持迟到接入(ctx.inject)和手动覆盖(localStorage['sf.host'])。 - 无障碍:
prefers-reduced-motion下禁用动画。调试可通过window.__SF_DEBUG__.task透出状态。
搜索定义与工具白名单¶
插件定义了“一次搜索”的边界,只有以下 4 个工具能开一轮新任务:
web_searchweb_search_proweb_platform_searchgithub_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