#4276·yakit

[Bug][MCP] update_web_fuzzer_tab 更新当前标签后请求编辑器不刷新

Author: langbyyiCreated Sep 15, 2026Updated Sep 15, 2026

现象

通过 MCP 调用 update_web_fuzzer_tab 更新当前正在显示的 Web Fuzzer 标签时:

  • 标签标题会立即更新;
  • 请求编辑器中的原始 HTTP 请求仍保持旧内容;
  • 手动切换到其他标签后再切回,编辑器才显示新内容。

这会导致 MCP 返回成功但用户在界面中看到的请求与实际标签状态不一致。

最小复现

  1. 使用 create_web_fuzzer_tab 创建并打开一个标签:GET / HTTP/1.1\r\nHost: 1.baidu.com\r\n\r\n
  2. 不切换标签,调用 update_web_fuzzer_tab,传入同一个 pageId,将 tabName 改为 2.baidu.comrequest 改为 GET / HTTP/1.1\r\nHost: 2.baidu.com\r\n\r\n
  3. 观察 Web Fuzzer:标题为 2.baidu.com,请求编辑器仍为 Host: 1.baidu.com
  4. 切换到其他标签再切回,编辑器变为 Host: 2.baidu.com

未发送任何 HTTP 请求即可复现。

已核查的代码路径

  • 后端官方工具已正确注册 update_web_fuzzer_tabyaklang/yaklang common/mcp/http_fuzzer.go
  • 前端的 applyWebFuzzerTabMutation 已将更新后的 request 写入 pageParamsInfo.webFuzzerPageInfo,其现有单测也断言了这个缓存结果。
  • MainOperatorContent 随后发送 switchSubMenuItem,并带有 { pageId, forceRefresh: true }
  • onSelectSubMenuById 只按 pageId 设置当前子标签,没有读取或处理 forceRefresh。当前页的 pageId 未变化时,已挂载的 HTTP Fuzzer 编辑器没有重新从更新后的 page data 同步状态;手工切走再切回才触发该同步。

因此问题位于官方 Yakit 前端的“同一已选 Web Fuzzer 标签更新后刷新编辑器状态”链路,不是 MCP 调用参数,也不是 execute_web_fuzzer_tab 功能引入的行为。

期望

update_web_fuzzer_tab 更新当前选中的标签(尤其是 request、HTTPS、代理等编辑器相关字段)时,编辑器应立即同步新状态;forceRefresh 应产生实际刷新效果,或通过等价的显式状态同步实现。

环境

  • Yakit 前端基线:35fba5cfa8a9bbb1e879b977e6a6e94310561926(当前 master
  • 测试方式:官方 MCP 的 create_web_fuzzer_tab / update_web_fuzzer_tab
  • 已确认当前上游没有同名或同现象的公开 Issue。