模型调试与可观测性
本文介绍如何排查模型连接和兼容性问题、观察延迟和 Token 使用量、采集 Trace,以及记录模型调用。
验证模型连接
本节提供两种验证方法。先直接请求模型服务,确认模型 API 可以连接。再运行 Midscene 验证命令,检查模型兼容性。
直接请求模型服务
以下 curl 请求用于检查 Base URL、API Key 和模型名称是否可用。该请求只验证模型 API 的基础连接。它不会检查模型是否满足 Midscene 的兼容性要求。
使用 Midscene 验证命令
该命令同时检查模型连接和 Midscene 兼容性。
将模型配置放入 .env 文件,然后运行:
该命令会读取当前工作目录下的 .env 文件。Dotenv 的 Debug 日志默认开启。.env 中的变量会覆盖已有的 Shell 环境变量。
如果 curl 请求成功,但 Midscene 验证命令失败,说明模型 API 可以连接。请继续检查模型能力和 Midscene 配置。
常见配置错误
MIDSCENE_MODEL_FAMILY 未设置为多模态模型
如果收到 MIDSCENE_MODEL_FAMILY is not set to a multimodal model with UI localization 错误,请确认已正确配置多模态模型的 MIDSCENE_MODEL_FAMILY 环境变量。
从 1.0 版本开始,Midscene 推荐使用 MIDSCENE_MODEL_FAMILY 指定多模态模型类型。旧的 MIDSCENE_USE_... 配置仍然兼容,但已经废弃。
正确的模型 family 和完整配置示例请参考支持的模型与配置。
Base URL 或模型名称不正确
确认 MIDSCENE_MODEL_BASE_URL 指向服务商的 API 接入地址。该地址通常以 /v1 等版本号结尾。请勿添加 /chat/completion,底层 SDK 会自动添加请求路径。
同时确认 MIDSCENE_MODEL_NAME 与该接入地址提供的模型一致。
模型效果不理想
如果模型可以正常连接,但定位、规划或页面理解不稳定,可以尝试以下方法:
- 查看回放报告,确认任务执行顺序正确,并且没有进入错误页面或逻辑分支。
- 优先使用同一系列中较新的正式支持版本。
- 使用代表性任务对比不同服务商的模型,关注成功率、延迟和成本。
- 复杂任务可以单独配置 Planning 模型或 Insight 模型。具体分工请参考模型策略。
调试能力
Debug 日志
需要额外的诊断信息时,可以设置 DEBUG。常用选择器包括:
DEBUG=midscene:ai:profile:stats:打印模型延迟和 Token 使用量。DEBUG=midscene:ai:call:打印 AI 响应详情。DEBUG=midscene:*:打印全部 Midscene Debug 日志。
完整的选择器列表、日志目录和使用注意事项,请参考运行时配置:Debug 日志。
生成的报告文件中也包含模型使用量统计。
记录模型调用
设置 MIDSCENE_RECORD_MODEL_CALL=true,可以将模型请求、响应和流式 Chunk 写入 JSONL 文件:
每个进程生成一个文件,每行对应一个 JSON 事件。只有 Node.js 和 Electron 支持写入本地文件。浏览器和 Worker 不会写入本地文件。使用 Codex App Server 时,记录还会包含可获取的协议元数据。
每个事件的 type 为 request、chunk、response 或 error。事件还包含 executionId,用于关联同一个 execution ID 下的调用及其重试。对于 HTTP 模型请求,这个值 也会通过 x-midscene-execution-id Header 发送。不属于报告 execution 的调用(例如连接检查)会使用带 unscoped- 前缀的生成 ID。
文件包含请求 Body(包括自定义 extraBody)、响应 Header 和 Body、流式响应,以及可能采用 Base64 编码的截图。请求 Header 不会被记录。
这些文件可能包含敏感信息,且体积较大。请仅在排查问题时启用记录,并在使用后妥善保管或删除文件。记录格式不保证跨版本兼容。
请求追踪 Header
Midscene 会自动为 OpenAI-compatible HTTP 模型请求添加以下 Header:
不属于报告 execution 的调用(例如连接检查)会使用带 unscoped- 前缀的生成 execution ID。这两个 Header 会被默认发送,如果 MIDSCENE_*_INIT_CONFIG_JSON 中自定义了同名 Header,则会被 Midscene 覆盖。
可观测性平台
LangSmith
LangSmith 是 用于调试大语言模型的平台。安装依赖并设置环境变量后,Midscene 可以自动接入 LangSmith。
安装依赖
设置环境变量
启动 Midscene 后,应该会看到类似以下内容的日志:
注意事项:
- LangSmith 和 Langfuse 可以同时启用。
- 该集成仅支持 Node.js。浏览器环境会抛出错误。
- 如果使用
createOpenAIClient,它会覆盖通过环境变量启用的自动集成。
如需进行更细粒度的控制,例如只对特定任务启用 LangSmith,请使用 createOpenAIClient 手动包装客户端。
Langfuse
Langfuse 是一个 LLM 可观测性平台。Midscene 集成了 Langfuse 的 observeOpenAI wrapper,可以自动追踪 OpenAI API 调用。
Langfuse 的追踪基于 OpenTelemetry,因此需要在应用启动时初始化 OpenTelemetry SDK。
安装依赖
初始化 OpenTelemetry
在应用入口文件的最顶部添加以下代码:
设置环境变量
启动 Midscene 后,应该会看到类似以下内容的日志:
更多配置和最佳实践请参考 Langfuse OpenAI 集成文档。
注意事项:
- LangSmith 和 Langfuse 可以同时启用。
- 该集成仅支持 Node.js。浏览器环境会抛出错误。
- 如果使用
createOpenAIClient,它会覆盖通过环境变量启用的自动集成。
安全注意事项
- 不要将
.env文件、Trace、Debug 日志或模型调用记录提交到源码仓库。 - 日志和 Trace 可能包含模型输入、输出或截图,分享前请先检查内容。

