Skip to content

用 playground + DevTools 联调管线 ​

DevTools 扩展的「事件流」Tab 只能看见真正发到网络的事件——被采样 / Schema / killSwitch / Consent 在 SDK 内部丢弃的事件,事件流抓不到。要看每条事件在 SDK 管线里的逐阶段去向(被谁丢、被谁改写),需要打开「管线」Tab,它由 SDK 内置的 Debug 桥提供数据。

本页是一条联调路径:在 playground 或任意接入页启用 Debug 桥 → 在「管线」Tab 观察 ingress / queue / stage 阶段事件。

仅本地 / 测试启用,生产禁用

Debug 桥会把采样 / PII 清洗之前的原始事件(含潜在 PII)经 window.postMessage 广播到同源页面。生产环境绝不能开启——SDK 默认关闭,需手动开关;启用后请在收工时关回。

前置条件 ​

  • DevTools 扩展已加载到 Chrome,并能在目标页打开 Tripo Lens 面板。
  • 目标页是 http / https(playground 本地启动即可,file:// 不行)。
  • 目标页接入了 @tripo3d/lens 且 init() 已执行——Debug 桥只在装配时解析一次,故启用后需刷新页面。

步骤 1:启用 Debug 桥(三选一) ​

Debug 桥默认关闭。SDK 提供三种等价的启用方式(来自 @tripo3d/lens 构造参数 debug 与运行期 flag):

方式 A:DevTools 面板按钮(推荐用于已部署的页面) ​

  1. F12 → Tripo Lens 面板 → 切到「管线」Tab。
  2. 点顶部「开启内部观测」按钮。
  3. 按钮右侧出现黄色提示「已通知页面 → 请刷新被检页面使 lens 装配生效」——按提示刷新当前页。

面板按钮的本质是替你在被检页面写下 localStorage['__tripo_lens_debug']='1',因此刷新后即生效;不想再开就清掉该键。

方式 B:localStorage flag(推荐用于本地 playground) ​

在被检页面的 DevTools Console 执行:

js
localStorage.setItem('__tripo_lens_debug', '1');
location.reload();

关闭:localStorage.removeItem('__tripo_lens_debug')。

方式 C:构造参数 debug: true(仅本地代码调试) ​

仅在本地代码中临时改一下,不要提交:

ts
const trace = new TripoLens({
  app: 'shop',
  configUrl: '…',
  endpoint: '…',
  debug: true, // 仅本地 / 测试
});

三种方式互相等价,但显式 debug: false 一票否决

构造参数 debug 缺省时,三种方式只要任一为真,SDK 就会动态加载 Debug 桥(@tripo3d/lens/debug 异步 chunk),不会进入主包初始 bundle。但构造时显式传 debug: false 是硬关:该实例拒绝页面级 flag(方式 A / B 对它无效)——跑分、高吞吐等静默实例用它防 postMessage 洪泛。SSR / 非浏览器环境一律不装配。

步骤 2:打开「管线」Tab ​

启用并刷新后:

  1. F12 → Tripo Lens 面板 → 顶部切到「管线」Tab。
  2. 顶部按钮区域下方会出现队列快照栏(队列 size … · P0/P1/P2 … · 淘汰 …),证明 Debug 桥已成功广播 queue 事件。
  3. 下面的「管线 N」列表此时多半还是空的——管线条目由事件原始数据触发(ingress 事件),需要先在页面上触发一次上报。

队列快照栏什么时候出现?

SDK 在事件入队 / 出队 / 背压淘汰时都会经 Debug 桥广播 QueueDebugSnapshot。打开管线 Tab 后没有快照栏,多半是页面还没产生过任何事件——做一次操作或刷新页面即可。

步骤 3:触发一次上报 ​

在被检页面上做一次会上报的操作,例如:

  • playground 任意 flow 页(快速开始 / 行为埋点 等)点击 demo 上的「track」「click」按钮。
  • 真实接入页 点击带 data-trace 的元素,或手动 trace.track('coord', { … })。
  • 刷新页面:会触发 landing / 归因等 P0 事件。

回到「管线」Tab:

  • 列表里最新在最上多出一条「管线条目」,左侧是事件原始 type(如 click、pageview、landing),右侧是一串阶段标识小色块。
  • 队列快照栏的 size / P0/P1/P2 数字会随入队 / 出队跳动。

步骤 4:观察 ingress / queue / stage ​

每条管线条目对应一条事件的完整生命周期,Debug 桥广播三类消息:

桥消息触发时机在面板上的体现
ingress原始事件进入管线(采样前)列表新增一条「管线条目」,展开后顶部「原始 raw(采样前)」块就是这条
stage每个管线阶段产出折叠态的色块序列;展开态的每个 <stage> · <outcome> 块
queue队列 / 批次状态变化顶部的队列快照栏

点条目左侧 ▸ 展开,能看到事件流经的每个阶段及其产物。常见阶段名(顺序属内部约定):enrich / sample / schema / pii / beforeEmit / serialize。

字段细节(outcome 颜色、阶段意义、队列快照各字段)请直接看 DevTools 面板字段参考 · 管线 Tab,本页不重复。

常见现象解读 ​

现象解读跳转
列表里事件类型字变红、末尾有 ✕ <stage> 丢弃该事件在某个管线阶段被丢弃;展开后那一阶段是红色 dropped 色块阶段含义 → 面板字段参考
阶段是橙色 mutated该阶段改写了事件(典型:pii 清洗);产物 JSON 是改写后的版本面板字段参考
队列快照栏 淘汰 P1 / P2 数字不停涨队列背压淘汰,与「管线丢弃 N」不是一回事:前者是入队后在出队前丢的,后者是任一管线阶段丢的面板字段参考
管线列表里有事件、事件流 Tab 却没有这条事件在管线里被丢弃了,根本没发到网络——这正是「事件流看不见、管线看得见」的场景排查:没有上报
启用并刷新后管线 Tab 仍然全空① flag 没生效(重开 DevTools / 重启 SDK 都不够,必须刷新被检页面);② 页面是 SSR / 非浏览器环境DevTools 扩展 · 使用
队列快照栏的 淘汰 与事件流底部条对不上二者同源,差值只是面板打开时机不同(事件流从打开后的首个批次算累计,管线从 Debug 桥广播首个快照算累计)面板字段参考

收工:关闭 Debug 桥 ​

调试完务必关回,避免页面继续向所有同源监听者广播事件:

  • 方式 A / B:被检页面 Console 执行 localStorage.removeItem('__tripo_lens_debug'),刷新页面。
  • 方式 C:把 debug: true 从代码里去掉,重新构建部署。
  • window.__TRIPO_LENS_DEBUG__ 历史 flag 同理 delete window.__TRIPO_LENS_DEBUG__ 后刷新。

下一步 ​

基于 MIT 协议发布(内部使用)