# channelcontrol-capture-extension **Repository Path**: idiots/channelcontrol-capture-extension ## Basic Information - **Project Name**: channelcontrol-capture-extension - **Description**: 独立的 Chrome / Edge Manifest V3 插件,用来手动采集 `/ChannelControl` 链路的发送消息、接收消息、连接状态和筛选后的链路日志,并只保存在浏览器本地。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: feature/channelcontrol-capture - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-22 - **Last Updated**: 2026-07-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ChannelControl Capture Extension 独立的 Chrome / Edge Manifest V3 插件,用来手动采集 `/ChannelControl` 链路的发送消息、接收消息、连接状态和筛选后的链路日志,并只保存在浏览器本地。 ## 功能 - 手动开始 / 停止采集,不改业务代码,不需要发布版本 - 只采 `/ChannelControl` - 只采 `send`、`receive`、`connect`、`disconnect`、`reconnect`、`error` - 自动忽略代码黑名单中的 `ping`、`pong`、`onPing`、`onQueueInfo` - 工具栏图标在采集中显示红色 `REC` 角标,停止后自动清除 - 不记录 ACK 回调 - 只保留包含 `[ncs]`、`[channel access]`、`ChannelControl` 的日志 - 支持导出当前会话 JSON - 支持导出当前会话和任意历史会话 - 支持删除当前会话、删除单条历史会话、清空全部本地缓存 ## 安装 1. 打开 Chrome 或 Edge 扩展管理页。 2. 打开“开发者模式”。 3. 点击“加载已解压的扩展程序”。 4. 选择当前工程根目录:`E:\work\customer\channelcontrol-capture-extension`。 ## 使用 1. 打开需要排查的业务页面。 2. 点击扩展图标。 3. 点击“开始采集”。 4. 在页面里复现 `/ChannelControl` 问题流程。 5. 点击“停止采集”。 6. 点击“导出当前会话”。 ## 数据说明 - 明细记录保存在 `IndexedDB` - 轻量状态和会话摘要保存在 `chrome.storage.local` - 申请了 `unlimitedStorage`,不会受默认小配额限制 - 实际可用容量主要受浏览器本地存储策略和机器磁盘空间影响,没有一个固定的单一上限 - 当前实现不会自动截断,会在单会话估算超过 `200 MB` 和 `500 MB` 时在 popup 提示 ## 为什么这样存 `chrome.storage.local` 不适合持续堆大量明细。当前方案把大量记录放到 `IndexedDB`,更适合长时间追加写入;popup 只读取摘要,所以性能和容量都更稳。 ## 当前采集边界 - 只采 `window.SocketIOInit` 对应的 `/ChannelControl` socket - 发送消息记录 `eventName + payload` - 接收消息记录 `eventName + payload` - 连接状态记录 `connect`、`disconnect`、`reconnect`、`error` - 过滤后的日志同时兜底接管了 `console.*` 和 `window.SoftUtil.log` - 单条 record 只保留必要字段,不再保存 `sessionId`、`seq`、`timestamp` - 新生成的 record 时间格式为 `MM-DD HH:mm:ss`,历史记录保留原有 `time` 字符串 - console record 只保留 `text` ## 清理建议 - 正常流程的无问题会话,可以让客服定期点“删除当前会话”或“清空全部数据” - 排障结束后,建议导出留档再清理,避免 IndexedDB 持续增长 ## 手工验证 1. 加载插件并打开业务页面。 2. 点击“开始采集”。 3. 确认 popup 状态变成“采集中”。 4. 触发真实的 `/ChannelControl` 发送和接收流程。 5. 触发一条包含 `[ncs]` 或 `ChannelControl` 的日志。 6. 点击“停止采集”。 7. 点击“导出当前会话”,检查导出 JSON 中存在 socket 记录和日志记录。 8. 验证“删除当前会话”、“删除历史会话”、“清空全部数据”都能生效。