[Bug][MCP] update_web_fuzzer_tab 更新当前标签后请求编辑器不刷新
Author: langbyyiCreated Sep 15, 2026Updated Sep 15, 2026
现象
通过 MCP 调用 update_web_fuzzer_tab 更新当前正在显示的 Web Fuzzer 标签时:
- 标签标题会立即更新;
- 请求编辑器中的原始 HTTP 请求仍保持旧内容;
- 手动切换到其他标签后再切回,编辑器才显示新内容。
这会导致 MCP 返回成功但用户在界面中看到的请求与实际标签状态不一致。
最小复现
- 使用
create_web_fuzzer_tab创建并打开一个标签:GET / HTTP/1.1\r\nHost: 1.baidu.com\r\n\r\n。 - 不切换标签,调用
update_web_fuzzer_tab,传入同一个pageId,将tabName改为2.baidu.com、request改为GET / HTTP/1.1\r\nHost: 2.baidu.com\r\n\r\n。 - 观察 Web Fuzzer:标题为
2.baidu.com,请求编辑器仍为Host: 1.baidu.com。 - 切换到其他标签再切回,编辑器变为
Host: 2.baidu.com。
未发送任何 HTTP 请求即可复现。
已核查的代码路径
- 后端官方工具已正确注册
update_web_fuzzer_tab:yaklang/yaklangcommon/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。
Source: yaklang/yakit