Skip to content

[实验报告] DSH + Jev 多步协作:实验设计、真实模型测量与收益评估 #423

Description

@iuyo5678

我在 2026-10-13 用本地 DSH 做了一轮 BrowserSkill + Jev 的有限范围实验,评估「主模型负责规划和验收,决策 API 接手部分连续浏览器操作」能否减少用户等待时间。

目前的结论是:协作和失败回退路径已经跑通,但在本次主模型、Jev 代理和场景组合下,还没有测到稳定的提速收益。 主模型请求次数减少,不代表任务总耗时一定减少。建议先保留为可选实验能力,继续验证委派边界和开销,再决定是否进入产品主线。

本轮完成 52 次真实模型 A/B 运行:初版 44 次、修正版 8 次,均通过任务验收。另有 3 次故障注入恢复测试和 1 次安装后的真实表单验证,也全部通过;这 4 次不参与收益统计。18 次接入预跑单独保留,不混入正式数据。下面同时公开变快、变慢、没有采用委派和中途回退的结果。

实验比较的是两条完整的用户任务路径。 A 组使用现有 DSH 主模型和 BrowserSkill 工具;B 组保持相同主模型和普通工具,额外启用 browser_delegate。主模型仍负责理解用户目标、拆分任务、提供输入和验收结果,可以把连续的页面操作交给辅助决策循环,也可以直接使用原有工具。

flowchart TD
    U[用户任务] --> M[DSH 主模型:规划与验收]
    M --> B[原有 BrowserSkill 工具]
    B --> M
    M --> D[browser_delegate:目标、完成条件、输入]
    D --> O[观察当前页面,构造候选操作]
    O --> J[Jev 选择下一步]
    J --> E[调用已有 BrowserSkill 工具执行]
    E --> O
    J --> R[完成或交回:已执行步骤与页面证据]
    R --> M
    M --> F[最终回答,关闭 session]
Loading

实验适配器实现了这些约束:

  • 从当前实际页面和元素引用生成有限候选操作,包括点击、填写明确输入、选择原生下拉值、回车、条件等待、历史返回、继续读取页面,以及完成或交回。页面变化后重新观察,不把旧元素引用继续当成可操作对象。
  • 原生下拉值来自页面真实选项;Jev 根据任务和页面在候选操作中选择。没有提前录制用户操作,没有给 Jev 编排点击序列、场景专用选择器或验收答案。
  • 委派返回已完成步骤、当前页面和观察证据。缺少凭据、服务错误、低置信度或预算耗尽时交回主模型;交回后同一 session 不再调用辅助工具,由原有工具从当前进度继续。对于执行结果不确定的操作,不盲目重放。
  • 限定实验站点和操作范围,表单提交需明确允许;机票案例停在旅客信息页。实验没有购票、支付或真实业务数据提交。
  • 每次 Jev 请求上限 4 秒、不重试;单次委派最多 16 个操作,循环预算 90 秒,主任务上限 240 秒。90 秒在步骤之间检查,进行中的浏览器工具仍受其自身超时控制,因此它不是整个委派严格的墙钟上限。

当前实现是本地 DSH 的可选实验配置和适配器,复用已有 BrowserSkill CLI、插件和扩展能力。没有开发扩展配置页面,也没有将实验适配器并入主线。默认 DSH 配置保持原状。

正式测量前固定环境、任务、策略和验收口径。 初版正式组冻结后没有根据快慢调整参数;发现集成问题后另建修正版,单独复测和报告。

项目 本轮实际配置
BrowserSkill 实验开始时获取 origin/main,固定为 4c8616b12273ac5a22ce4adb494cac941e20de2a;A/B 使用同一 CLI、扩展和 DSH 插件构建
DSH 0.2.0-rc.2
主模型 会话实际配置为 deepseek-official / deepseek-flash,reasoningEffort: high,maxTokens: 256000;两组一致
决策模型 Jev 代理接入,jev-1.13.0;统计完整 HTTP 往返耗时
浏览器 Chrome for Testing 149.0.7827.55,无界面模式、独立 profile 和 daemon,只使用实验创建的页面
路由阈值 预跑后固定为 0.50,正式运行期间不调整;它是路由参数,尚未校准为正确率概率
其他开销 两组均关闭标题生成和额外 PiP 缩略图,保留正常页面观察

每对任务使用完全相同的任务提示和输入,表单输入使用相同的配对标识。两组都包含相同的能力条件说明:有 browser_delegate 时,多步子任务优先委派;没有时使用普通工具;单步任务使用普通工具;交回后从当前进度继续。因此,本轮测量的是配置了协作工具和使用策略之后的完整路径,没有测量新工具在无使用提示下的自然采用率。

案例覆盖机票流程、信息获取、填写表单、多页检索和简单任务对照。 所有正式测量都实际调用模型、实际访问外部网页,没有用固定时延模拟模型,也没有用本地静态页面替代网站。

案例 具体任务 独立验收依据
机票演示 在 BlazeDemo 查询 Portland → London,比较全部报价,选最低价,停在旅客信息页 实际查询和选中航班参数、页面中观察到的报价;不出现购票确认请求
真实信息获取 从 Python 下载页 打开 3.13.8、3.14.0 详情页,提取发布日期和来源链接 两个详情页实际访问、工具回执中的版本与日期、独立参考答案
填写表单 在 Selenium web form 填两个文本框,选择 Dropdown 的 Three、datalist 的 Seattle,勾选 Default checkbox 并保留 Checked checkbox,提交一次 实际提交参数中的文本、my-select=3、my-datalist=Seattle、两个 my-check,以及 Received! 回执和提交次数
多页复杂检索 在 Books to Scrape 遍历 Mystery 两页,找出全部低于 £15 的图书,逐一读取完整标题、价格、UPC、链接 分类第二页和 5 个详情页实际访问,完整观察记录中出现对应 UPC,最终答案与独立结果匹配
简单任务对照 打开 Selenium 页面,只读取主标题 Web form,不填写或提交 页面观察和最终答案一致,不需要调用 Jev

为便于复核,案例的参考结果放在文末。参考结果只交给验收器,不传给决策服务。

站点覆盖有明确限制:Python 是真实生产网站,机票、表单和图书目录是公开演示/测试站点。真实售票站入口在独立浏览器中返回反自动化拦截,没有继续绕过。因此,本轮没有测得真实购票站、登录态业务或支付流程的收益,不能把机票演示数据当成真实买票表现。

测量过程按预跑、冻结、正式 A/B、定位问题、独立复测、恢复验证执行。

  1. 先做 18 次接入预跑,修复工具 schema 和长工具回执验收问题,确认真实委派可以发生。工具没有加载、主模型没有委派的预跑也保留;它们不作为协作收益证据。
  2. 冻结代码快照、配置、提示词、任务、验收器和哈希。正式组为四个多步案例各 5 对,简单对照 2 对,共 22 对 / 44 次。
  3. 逐对交替 A→B、B→A,顺序运行。慢运行、未采用委派、真实服务超时和回退都保留,不筛选更快样本。
  4. 计时从 DSH 进程启动到退出,包含规划、session 启动、页面加载、操作、最终回答和关闭 session;两组共同的构建、浏览器和 daemon 启动不在任务计时内。
  5. HTTP 计时持续到响应结束,主模型请求数与 DSH 持久化会话中的请求记录核对。总耗时拆为主模型 HTTP、Jev HTTP、其余时间;「其余」包含浏览器、CLI、进程启动和本地处理。
  6. 成功须同时满足独立任务验收、进程正常退出、显式关闭 session。使用完整持久化工具回执和页面操作证据,不只看模型自述;终端 JSON 对长结果的截断不会被当成事实缺失。
  7. 初版数据冻结后,仅修正两个集成细节,另做 4 对 / 8 次复测。最后单独验证故障恢复和安装后的实际调用。

同一批次可能复用浏览器缓存、站点状态及服务侧提示词缓存;交替顺序只能减轻,不能完全消除这些影响。五对样本只适合判断本轮方向,不足以证明所有用户场景都不退化。

初版正式测量共 44 次,任务验收和请求统计核对均通过。 下表单位为秒,正的 B−A 表示协作路径更慢。「配对差值中位数」先对每一对计算差值再取中位数,与两组各自中位数相减不是同一指标。

场景 A / B 正确次数 A 耗时中位数 B 耗时中位数 配对 B−A 中位数 B 更快 主模型平均请求 A→B
机票演示 5/5 / 5/5 19.18 24.17 +4.95 1/5 12.8 → 8.2
真实信息获取 5/5 / 5/5 20.22 42.27 +22.05 1/5 11.6 → 7.6
填写表单 5/5 / 5/5 25.00 31.10 +6.10 0/5 12 → 7.6
多页检索 5/5 / 5/5 59.53 74.15 -0.28 3/5 26 → 21
简单任务 2/2 / 2/2 7.45 7.30 -0.15 1/2 6 → 6

机票有 4/5 对变慢,表单 5/5 对变慢。信息获取唯一更快的一对,B 组没有调用 Jev,不能将这次收益归因于决策服务。多页检索虽然有 3/5 对更快,但配对差值中位数只有 −0.28 秒;A、B 的耗时范围分别为 36.92–175.81 秒、59.24–127.53 秒,波动较大,尚不支持稳定提速的结论。

20 次多步 B 组任务中,18 次实际委派,2 次主模型选择普通工具;两次未委派也保留在统计中。18 次委派完成了 64 个页面动作,发出 82 次 Jev HTTP 请求。10 次返回子任务完成,8 次交回主模型后完成,包括 3 次低置信度、3 次主动交回和 2 次真实请求超时。两个简单对照的 B 组任务都没有调用 Jev。

调用数下降没有抵消新增的串行开销。 初版主模型请求总数从 324 降至 234,减少约 27.8%,但 B 组新增 82 次 Jev 请求。一次主模型委派可以包含多次决策请求和页面观察,主模型还需要描述约束并消化返回证据。

这批数据中,A 组主模型单次请求中位数约 1.16 秒,B 组主模型约 1.45 秒,Jev 约 1.51 秒。三者处理的任务不同,不能据此比较等价推理能力;但本配置下,不能假定每次 Jev 请求能比主模型省下大量时间。代理往返包含传输、排队和推理,本轮没有将它们进一步分离。

下面按场景给出配对平均差值。三个耗时分量相加得到总变化,显示值因四舍五入可能相差 0.01 秒;这里用平均值分解开销,与上表的中位数口径不同。

场景 主模型 HTTP 变化 新增 Jev HTTP 其余时间变化 总耗时平均变化
机票演示 +0.69s 5.85s -0.05s +6.49s
真实信息获取 -2.79s 5.49s +11.75s +14.45s
填写表单 -1.28s 9.38s -1.70s +6.40s
多页检索 +2.85s 5.48s -9.52s -1.18s
简单任务 +0.23s 0.00s -0.38s -0.15s

例如表单,主模型 HTTP 平均少了 1.28 秒,其他处理平均少了 1.70 秒,但新增 Jev HTTP 为 9.38 秒,最终平均慢了 6.40 秒。数据中能看到明确的新增开销,不能把全部差异都解释为主模型波动。信息获取和多页检索还受到浏览器路径及等待策略影响,需分别定位。

修正版只处理两个已发现的集成问题,并单独报告 8 次复测。

  • 继续读取长页面时,原实现会丢掉前段观察上下文。修正版在限定预算内保留事实,旧片段只作为阅读上下文;需要操作时重新获取当前元素引用。
  • 历史返回改用已有的 commit 等待条件,随后重新观察页面。独立浏览器复现中,原 domcontentloaded 条件两次等待约 15.02 / 15.01 秒并超时,页面实际已返回;改后两次均约 0.101 秒且页面内容正确。这个收益属于浏览器等待路径,不能算成 Jev 推理提速。

没有修改 BrowserSkill CLI 或扩展,也没有调整模型、置信度阈值、请求上限或任务。原版记录保留,受影响的信息获取和多页检索各复测 2 对:

场景 / 配对 顺序 A 普通路径 B 修正版协作 B−A 主模型请求 A→B Jev 请求
真实信息获取 / 1 A→B 17.91s 30.25s +12.34s 10 → 5 4
真实信息获取 / 2 B→A 56.22s 36.43s -19.79s 12 → 8 4
多页检索 / 1 A→B 97.40s 69.49s -27.91s 23 → 21 5
多页检索 / 2 B→A 44.91s 68.46s +23.55s 22 → 24 1

8 次任务全部正确,但每类仍是一对快、一对慢。信息获取两次均委派完成 3 个页面动作;检索的一次委派执行了 3 个页面动作和 1 次继续观察,另一次在执行动作前就交回,最终都由主模型补齐。本轮复测支持修正后的功能可用,样本还不足以证明稳定提速,也不能把更快的几次全部归因于 Jev。

后续比较决策服务的净收益前,应让普通路径同样使用合理的浏览器等待策略。部分点击中也观察到约 5 秒耗时,本轮没有完成这部分原因定位。

回退能力单独验证,成功率和速度分开评价。 下面三次使用真实 DSH 主模型和真实表单操作,服务故障由适配器注入,因此它们是恢复测试,不是 Jev 线上可靠性样本。

故障注入 故障前状态 后续行为和结果
无凭据 0 个委派动作,0 次 Jev HTTP 交回普通工具,全部字段正确,提交一次
服务不可用 已通过 2 次真实 Jev 请求填写两个文本框 保留已有内容,普通工具继续选择、勾选和提交,没有重填已完成字段,提交一次
请求超时 同样已填两个文本框,再注入约 4 秒等待 返回已完成进度,普通工具继续,字段正确,没有重填或重复提交

正式 A/B 中另有两次真实 Jev 超时,也都恢复完成。安装后的修正版表单验证执行了 6 个委派动作、7 次 Jev 请求,约 28.20 秒完成,字段正确且只提交一次;它属于安装验证,不纳入 A/B 统计。另有 20 项针对性测试通过,覆盖工具 schema、当前元素引用、多步进度、观察分页、取消、错误操作不重放和服务异常等。

这些结果证明本原型在已测样本中能够保留进度并回退完成任务。由于协作组的多项耗时变长,不能仅凭任务都成功,就声称用户体验不退化。

我建议继续保留有限实验,暂不默认启用。 当前数据支持的下一步是:

  • 先定位两组共用的页面等待开销,并在相同等待策略下重新比较。
  • 改善委派边界和候选操作覆盖,优先寻找能承担足够多连续操作、又不会产生大量交回和验收开销的子任务。
  • 校准路由阈值,并探索把决策开销、低置信度和预算纳入委派条件;始终保留普通工具恢复能力。
  • 再扩展到正常有界面浏览器、更多真实业务站点、不同任务输入和更大的冻结样本,持续报告成功率、任务总耗时、回退率与服务成本。

本原型的候选操作未覆盖主模型可使用的全部直达 URL、结构化读取等策略,测到的是这份受限实现的产品路径。结果不足以否定所有决策 API 的潜在价值,也不足以宣传通用加速或省钱。后续范围应由新增证据决定。

初版全部 22 对原始配对结果(含顺序、调用数、实际动作与交回原因)

A 为原有工具路径,B 为同一主模型加可选 Jev 委派。所有行两组均验收成功。耗时和差值直接由未舍入的数据计算后保留两位,因此显示值相减偶尔相差 0.01 秒。动作数只计辅助工具实际成功执行的页面动作。

场景 / 配对 顺序 A(秒) B(秒) B−A(秒) 主模型请求 A→B Jev 请求 页面动作 委派结果
机票演示 / 1 A→B 27.66 24.17 -3.49 15 → 7 5 4 子任务完成
机票演示 / 2 B→A 19.12 22.07 +2.95 12 → 12 0 0 未调用
机票演示 / 3 A→B 18.96 34.49 +15.52 11 → 8 5 4 子任务完成
机票演示 / 4 B→A 21.76 34.29 +12.53 14 → 7 5 4 子任务完成
机票演示 / 5 A→B 19.18 24.13 +4.95 12 → 7 5 4 低置信度交回
真实信息获取 / 1 B→A 45.91 19.53 -26.38 13 → 9 0 0 未调用
真实信息获取 / 2 A→B 15.39 44.25 +28.86 10 → 9 4 3 子任务完成
真实信息获取 / 3 B→A 25.23 38.97 +13.73 13 → 5 4 3 子任务完成
真实信息获取 / 4 A→B 15.41 49.37 +33.97 10 → 9 4 3 子任务完成
真实信息获取 / 5 B→A 20.22 42.27 +22.05 12 → 6 4 3 子任务完成
填写表单 / 1 A→B 15.52 26.23 +10.71 11 → 9 7 6 子任务完成
填写表单 / 2 B→A 23.79 25.72 +1.93 10 → 11 4 3 超时交回
填写表单 / 3 A→B 25.78 34.80 +9.02 12 → 6 7 6 子任务完成
填写表单 / 4 B→A 25.00 31.10 +6.10 11 → 5 7 6 子任务完成
填写表单 / 5 A→B 27.74 31.99 +4.25 16 → 7 6 5 主动交回
多页检索 / 1 B→A 91.97 74.15 -17.81 25 → 23 2 1 主动交回
多页检索 / 2 A→B 36.92 61.05 +24.12 24 → 20 2 1 超时交回
多页检索 / 3 B→A 175.81 127.53 -48.27 30 → 22 5 4 主动交回
多页检索 / 4 A→B 58.53 94.88 +36.34 21 → 20 4 3 低置信度交回
多页检索 / 5 B→A 59.53 59.24 -0.28 30 → 20 2 1 低置信度交回
简单任务 / 1 A→B 7.98 6.94 -1.04 6 → 6 0 0 未调用
简单任务 / 2 B→A 6.92 7.66 +0.74 6 → 6 0 0 未调用

「子任务完成」仍由主模型验收;「低置信度」「主动交回」「超时」均由主模型使用普通工具继续完成。

案例输入和参考结果
  • 机票:Portland → London,列表最低价为航班 9696、Aer Lingus、$200.98。以真实列表及选中航班参数验收,旅客信息页的占位文案不作为报价依据。
  • 信息获取:Python 3.13.8 和 Python 3.14.0 的发布日期均为 2025-10-07。要求实际打开两个详情页并提供来源链接。
  • 表单:Text input 填 BSK Trial <pair-id>,Textarea 填 multistep review <pair-id>;两组使用相同 <pair-id>。Dropdown 选 Three(值 3),datalist 填 Seattle,两个 checkbox 最终都选中,提交一次并观察到 Received!。
  • 检索:筛选条件为 Mystery 分类、价格严格低于 £15,需遍历两页。下列 5 项均须访问详情并返回完整标题、价格、UPC 和详情 URL,不允许只凭列表或模型记忆作答。
完整书名 价格 UPC
That Darkness (Gardiner and Renner #1) £13.92 0c7b9cf2b7662b65
Tastes Like Fear (DI Marnie Rome #3) £10.69 2d1e337aaf341858
Hide Away (Eve Duncan #20) £11.84 bddc6fd036eb6279
Playing with Fire £13.71 05a61a3bd8ca4149
The Girl You Lost £12.29 4280ac3eab57aa5d
初版请求量与 Token 用量(未换算费用)

以下仅汇总 44 次正式运行的主模型 usage,按请求结束事件统计,不重复累计流式事件。

主模型用量 A 普通路径 B 协作路径
HTTP 请求 324 234
非缓存输入 Token 589,006 653,363
缓存读取 Token 7,161,344 6,121,600
输出 Token 65,634 68,183
总 Token 7,815,984 6,843,146

另外,Jev 已返回 usage 的请求合计为 417,075 输入 Token、36,797 输出 Token;2 次超时没有取得 usage。主模型的缓存重复读取减少,但非缓存输入和输出增加。代理实际计费及缓存价格没有核实,不能由请求数或总 Token 下降直接推导成本收益。

实验代码快照、配置哈希、完整会话、页面证据和验收结果已在本地归档。本 issue 提供脱敏后的方法、汇总和全部配对数据;原始会话未公开,实验适配器也尚未作为可下载的主线功能发布。

Activity

  1. added theissue type on Oct 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions