跳转到主要内容
通过 agent 桥接查看页面或 content 的 DOM,不需要 CDP,也不用打开 DevTools。 inspect 会向正在运行的开发会话询问某个文档此刻的样子。它可以列出打开的标签页,返回结构化摘要或原始 HTML,并附上同一个目标最近的控制台输出。 会话必须在控制通道解锁的状态下运行:用 extension dev --allow-control 启动它。被拒绝时错误信息会点名缺失的 flag,所以一次被拒的调用就能告诉你该如何重启会话。

什么时候使用 inspect

  • 你想确认你的 content script 究竟往页面里渲染了什么。
  • agent 需要标签页 id,以便精确地把 eval 或 inspect 调用指向某个目标。
  • 你希望在一次机器可读的结果里同时拿到 DOM 状态和对应的控制台输出。

用法

参数与 flag

没有 --deep-dom 这个 flag。深层 DOM 支持是会话内部上报的桥接能力,不是你能逐次调用去开关的东西。

标签页里你自己扩展的页面

从 4.1.39 之后的版本起,--context page 也能读取显示着你自己扩展页面的标签页。Chrome 和 Firefox 上都可以。 浏览器拒绝向扩展页面注入脚本。CLI 改为通过浏览器的调试端口读取这个标签页,并且要求恰好只有一个打开的标签页位于该 URL。在 Firefox 上,它通过 ready.json 里的 extensionBaseUrl 找到这个页面。 对这样的标签页使用 --context content 会失败并给出提示,因为扩展页面没有 content script world。显示其他扩展页面的标签页仍然无法触及。

发现循环

数字形式的标签页 id 让定位变得确定。设计好的流程是先列出、再查看:
--list-tabs 需要解锁的控制通道,但不需要 eval 令牌,所以它在任何 --allow-control 会话中都能用。返回结果是一个由 {id, url, title, active, windowId} 对象组成的数组。把其中的 id 值直接喂给这里的 --tab,或者喂给 eval。

控制台增强

--with-console 会往结果里合并一个 console 数组:同一 context 与标签页最近的 n 条日志记录,读取自会话的 logs.ndjson。这样 agent 一次往返就能同时拿到 DOM 状态和控制台证据。这个增强是尽力而为的,永远不会让命令失败。 两种输出模式都会显示它。pretty 模式会在 DOM 摘要之后,以 logs 使用的同一种 [seq] LEVEL (context) message 格式打印控制台行;当尾部为空时打印 (no console lines captured)。--output json 则把原始记录放在信封的 console 数组里。

截断

超过 --max-bytes 的 HTML 返回时会被截断。pretty 模式会在 stderr 上打印一条截断提示,--output json 会在信封中设置 truncated: true(参见 结果信封)。 从 4.1.39 之后的版本起,一个结果最多携带 256 KB,--max-bytes 无法调高这个上限。大于 262144 的值会被降到这个数,并有一条 warnings 条目说明这一点。 这个上限按整个结果的 JSON 计算,而标记在转义之后会变长。没有超过 --max-bytes 的 HTML 仍然可能为了放得下而被截断。这时结果会带上 truncated: true、value.htmlTruncated: true,以及一条 warnings 条目,给出用来读取剩余部分的 eval 调用:

失败模式

  • 该浏览器没有找到会话:E_SESSION_NOT_FOUND,并附上应当运行的完整 extension dev 命令。
  • 会话在没有 --allow-control 的情况下运行:连接会被拒绝,错误信息会点名这个 flag。
  • 目标界面没有打开,或者 --tab 指定的 id 已经不存在:E_TARGET_NOT_FOUND。
  • 目标耗时超过了 --timeout:E_TIMEOUT。
当同一个会话拒绝所有 verb,而你想知道第一个断掉的环节是哪个时,运行 doctor。

下一步

  • 用 eval 在你刚刚查看过的页面里执行一段表达式。
  • 用 logs 持续流式查看同一个会话的日志。
  • 在 调试 中了解更完整的调试工作流。