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。
doctor。

