dev、start 和 preview 会为每一次生命周期状态变化流式输出一个 schema-1 帧。每个帧本身就是独立成行的一个完整结果信封。
打开这个流
这个流由EXTENSION_OUTPUT 环境变量控制。把它设为 json 或 ndjson,帧就会独占 stdout:
帧的状态
每个帧的
value 都携带会话身份:command、browser、distPath、pid、port,以及已知时的 readyPath、eventsPath、runId、instanceId 和 toolchainVersion。
编译失败
compile-failed 帧会把编译器输出放在 value.output 里,所以你永远不需要去刮 stdout。这段输出已经去掉 ANSI 控制符,并且上限为 2000 个字符。当上限把它截断时,该帧会设置 truncated: true。
一次会话中的第一次失败使用错误码 E_FIRST_COMPILE,之后每一次都使用 E_COMPILE。
ready 遵循契约
ready 帧在触发之前会读取 ready.json。编译可能成功,而浏览器却拒绝了这个扩展,发生这种情况时契约会保持在 error。
这种情况下,流改为发出一个错误码为 E_READY_ERROR_STATUS 的 failed 帧,并由 value.readyCode 指出契约自身的错误码。
浏览器退出
一个后台监视器每秒轮询一次ready.json,查找启动器写下的退出戳记。当 browserExitedAt 出现时,流会发出一个 browser-exited 帧。
这个帧的错误码取决于契约里的证据:
E_PROFILE_LOCKED:契约显示配置文件被锁定。浏览器根本没有启动,另一个会话正占用该配置文件。E_BROWSER_LAUNCH:其余所有意外退出。
value 会携带 exitCode 和 browserExitedAt。
下一步
- 在 ready.json 中阅读这些帧背后的契约。
- 在 用 agent 驱动 CLI 中了解如何从 agent 驱动整个循环。

