模型调试与可观测性
本文介绍如何排查模型连接和兼容性问题、观察延迟和 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 可能包含模型输入、输出或截图,分享前请先检查内容。

