Skip to content

feat: Add frontend observability probes#12

Open
jiejuncai-ly wants to merge 6 commits into
lex-mainfrom
observability
Open

feat: Add frontend observability probes#12
jiejuncai-ly wants to merge 6 commits into
lex-mainfrom
observability

Conversation

@jiejuncai-ly

Copy link
Copy Markdown

变更概述

这个 PR 在前端加入可开关的观测事件采集,把浏览器端的输入音频、远端播放音频、房间连接和后端输出 marker 统一成前端可发布的数据包,供 LexVoice 后端按同一 session/room 维度关联分析。

主要改动

1. 前端观测协议与音频活动检测

  • 新增 lib/observability.ts,定义前端观测事件、LiveKit data packet 发布和后端 marker 解析。
  • 新增 lib/frontend-audio-observer.ts,检测音频活动起止、尾帧和媒体轨道播放状态。

2. LiveKit 会话链路接入

  • hooks/useBrowserSourceClient.tshooks/useRoom.tscomponents/app/app.tsx 中发布浏览器输入、房间连接和远端播放观测事件。
  • 新增 components/livekit/remote-audio-playback-observer.tsx,观察 agent 远端音频播放情况。

3. 前端边界与测试覆盖

  • 增加聊天空转写过滤、视频预览选择 helper 和配置项校验,避免观测噪声影响用户界面。
  • 为 observability、audio observer、chat filter、video preview selection 和项目配置补充测试。

影响说明

  • 默认行为受 OBSERVABILITY_ENABLED 控制;关闭时不会发布前端观测事件。
  • 开启后后端可以关联浏览器输入、agent 输出和播放链路,便于定位无声、空转写和媒体轨道异常。
  • 用户可见 UI 变化集中在状态过滤和预览选择稳定性上,风险主要在前端 LiveKit session/audio observer 集成路径。

Verification

  • pnpm test

    ✅ passed: 92 tests passed

  • pnpm lint

    ✅ passed: eslint completed with exit 0

  • git diff --check origin/lex-main..HEAD

    ✅ passed: no output

@jiejuncai-ly jiejuncai-ly marked this pull request as ready for review June 24, 2026 06:16
@github-actions

This comment was marked as resolved.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

github-actions Bot commented Jun 24, 2026

Copy link
Copy Markdown

Claude finished @jiejuncai-ly's task in 1m 56s —— View job


  • 获取 PR 上下文
  • 读取核心文件
  • 检查上轮遗留 P2 问题状态
  • 审查新增/变更代码
  • 输出 Review 结论

Review 结论

通过

上轮遗留 P2 问题已全部解决:

原问题 当前状态
P2:livekit.participant 魔法字符串 ✅ 已修复:lib/observability.ts:30 新增 PARTICIPANT_IDENTITY_LEGACY: 'livekit.participant'remote-audio-playback-observer.tsx:218 已改用常量引用;降级顺序注释(canonical → legacy → LiveKit sender)已在 :215 补全

问题及建议

未发现需要阻塞合并的问题。残余风险:

  • lib/frontend-audio-observer.ts:54–55 本地重定义了 ObservabilityAttribute 类型,未从 lib/observability.ts 导入;若两处定义日后出现偏差,不会有编译期告警,可后续统一。
  • remote-audio-playback-observer.tsx:137–139'livekit.track_name' / 'livekit.track_sid' / 'livekit.track_source' 仍为字面量,但这些是追踪元数据而非协议字段,影响较低。
  • useBrowserSourceClient.ts:127–179tailFrameAttributes['livekit.track_sid']publishTrack 完成后才被回填;若极端情况下 tail frame 在发布完成前触发,该字段为 null。诊断用途可接受,非阻塞。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant