StreamPanel:一个让 SSE 调试不再痛苦的 Chrome 插件

StreamPanel:一个让 SSE 调试不再痛苦的 Chrome 插件

当 Chrome 开发者工具的 Network 面板无法满足你的 SSE 调试需求时,我们选择自己动手做一个。

故事的开始

在开发 AI 应用平台的过程中,我们经常需要调试 Server-Sent Events (SSE) 连接。Chrome 开发者工具虽然强大,但在查看 SSE 报文方面确实有些力不从心:

  • Network 面板中的 EventStream 查看体验不够友好
  • 无法方便地查看 iframe 中的 SSE 连接
  • 缺少针对流式数据的筛选和搜索功能

StreamPanel 是什么

StreamPanel 是一个 Chrome DevTools 扩展,专门用于监控和调试流式请求。它能够:

  • 🔍 实时监控:拦截并显示所有 EventSource 和基于 Fetch 的 SSE 连接
  • 📊 消息检查:查看详细的消息数据,支持 JSON 语法高亮
  • 🔗 连接管理:同时跟踪多个流式连接,包括主页面和 iframe
  • 🎯 URL 过滤:按 URL 过滤连接,快速定位目标端点
  • 🔎 消息筛选:根据 JSON 字段值进行筛选(支持全等和包含两种模式)
  • 🌓 深色模式:自动适配系统主题

安装方法

1. 获取源码

首先,你需要获取 StreamPanel 的源码。可以通过以下方式:

bash 复制代码
# 克隆仓库
git clone https://github.com/bywwcnll/StreamPanel.git
cd StreamPanel

或者直接下载 ZIP 文件并解压。

2. 加载到 Chrome

  1. 打开 Chrome 浏览器,访问 chrome://extensions/
  2. 在右上角开启开发者模式(Developer mode)
  3. 点击加载已解压的扩展程序(Load unpacked)
  4. 选择 StreamPanel 项目目录
  5. 完成!插件已安装

3. 验证安装

安装成功后,你应该能在扩展程序列表中看到 StreamPanel。打开任意网页的开发者工具(F12),应该能看到一个新的 Stream Panel 标签页。

使用方法

基本使用

  1. 打开开发者工具

    • F12 或右键选择"检查"
    • 切换到 Stream Panel 标签页
  2. 查看连接

    • 左侧面板会显示所有检测到的流式连接
    • 每个连接显示 URL、状态、消息数量等信息
    • 连接按创建时间倒序排列,最新的在最上面
  3. 查看消息

    • 点击左侧的连接,右侧会显示该连接的所有消息
    • 消息以表格形式展示:ID、类型、数据、时间
    • 点击任意消息可查看详细的 JSON 内容

高级功能

URL 过滤

在顶部工具栏的输入框中输入 URL 关键词,可以快速过滤连接列表。

消息筛选

这是 StreamPanel 的核心功能之一,特别适合处理大量消息的场景:

  1. 点击右上角的筛选按钮,显示筛选面板
  2. 点击添加筛选条件
  3. 配置筛选条件:
    • 字段:从下拉列表中选择要筛选的 JSON 字段(自动提取所有可用字段)
    • 匹配模式:选择"全等"或"包含"
    • 筛选值:输入要匹配的值
  4. 可以添加多个筛选条件,使用 AND 逻辑
  5. 点击应用筛选按钮生效

示例场景

假设你的 SSE 消息格式如下:

json 复制代码
{
  "event": "message",
  "conversation_id": "c8f8a2ec-d046-4fcb-84d4-55b42308f68d",
  "message_id": "fe50c43f-e4b7-4f9d-be73-87cf20ca738f",
  "answer": "饮酒"
}

你可以:

  • 筛选 event 字段等于 "message" 的消息
  • 筛选 conversation_id 包含 "c8f8" 的消息
  • 同时应用多个条件,比如:event 等于 "message" answer 包含 "酒"
支持嵌套字段

StreamPanel 支持使用点号表示法访问嵌套的 JSON 字段,例如:user.profile.name

技术实现

StreamPanel 的核心是拦截浏览器的 EventSource 和 Fetch API,实现原理如下:

scss 复制代码
网页
  └── inject.js (拦截 EventSource/fetch)
      └── content.js (消息桥梁)
          └── background.js (数据存储)
              └── devtools/panel (UI 显示)

关键组件

  1. inject.js :注入到网页中,拦截 EventSource 构造函数和 fetch API
  2. content.js:作为注入脚本和后台脚本之间的消息桥梁
  3. background.js:管理数据存储,处理标签页间的通信
  4. devtools/panel:在 Chrome DevTools 中显示的 UI 面板

筛选功能实现

消息筛选功能的核心是:

  • 递归提取 JSON 数据中的所有字段(包括嵌套字段)
  • 支持点号表示法访问嵌套属性
  • 使用防抖优化,避免频繁重渲染
  • 分离"待应用"和"已应用"的筛选条件,提供更好的交互体验

使用场景

StreamPanel 特别适合以下场景:

  • AI 应用开发:调试 LLM 流式响应
  • 实时数据监控:查看 WebSocket/SSE 推送的数据
  • API 调试:分析流式接口的返回内容
  • 多 iframe 场景:同时监控主页面和 iframe 中的连接

总结

StreamPanel 的诞生源于实际开发中的痛点。通过 AI 辅助开发,我们快速实现了一个功能完善的 Chrome 插件,不仅解决了自己的问题,也希望能帮助到更多开发者。

如果你也在为 SSE 调试而烦恼,不妨试试 StreamPanel。项目已开源,欢迎使用和贡献!


项目地址GitHub Repository

问题反馈:欢迎提交 Issue 或 Pull Request

相关推荐
神奇小汤圆4 小时前
字符串匹配算法
后端
无限大64 小时前
为什么网站需要"域名"?——从 IP 地址到网址的演进
后端
树獭叔叔4 小时前
LangGraph Memory 机制
后端·langchain·aigc
Java编程爱好者4 小时前
OpenCVSharp:了解几种特征检测
后端
star learning white4 小时前
xm C语言12
服务器·c语言·前端
tabzzz4 小时前
大道至简:万字漫谈前端性能监控
前端·javascript·性能优化
爱学习的小可爱卢4 小时前
JavaEE进阶——SpringBoot统一功能处理全解析
java·spring boot·后端·java-ee
汤姆yu4 小时前
基于springboot的二手物品交易系统的设计与实现
java·spring boot·后端
Java水解4 小时前
基于Rust实现爬取 GitHub Trending 热门仓库
数据结构·后端