API 参考(公共部分)
构造器
Midscene 针对每个不同环境都有对应的 Agent。每个 Agent 的构造函数都接受一组共享的配置项(设备、报告、缓存、AI 配置、钩子等),然后再叠加平台专属的配置,比如浏览器里的导航控制或 Android 的 ADB 配置。
你可以通过下面的链接查看各 Agent 的导入路径和平台专属参数:
- 在 Puppeteer 中,使用 PuppeteerAgent
- 在 Playwright 中,使用 PlaywrightAgent
- 在桥接模式(Bridge Mode)中,使用 AgentOverChromeBridge
- 在 Android 中,使用 Android API 参考
- 在 iOS 中,使用 iOS API 参考
- 如果你要把 GUI Agent 集成到自己的界面,请参考 自定义界面 Agent
参数
这些 Agent 有一些相同的构造参数:
generateReport: boolean: 如果为 true,则生成报告文件。默认值为 true。reportFileName: string: 报告文件的名称,默认值由 midscene 内部生成。autoPrintReportMsg: boolean: 如果为 true,则打印报告消息。默认值为 true。cacheId: string | undefined: 如果配置,则使用此 cacheId 保存或匹配缓存。默认值 为 undefined,也就是不启用缓存。aiActContext: string: 调用agent.aiAct()时,发送给 AI 模型的背景知识,比如 "有 cookie 对话框时先关闭它",默认值为空。此前名为aiActionContext,旧名称仍然兼容。replanningCycleLimit: number:aiAct的最大重规划次数。默认值为 20(UI-TARS 模型默认 40)。推荐通过 agent 入参设置;MIDSCENE_REPLANNING_CYCLE_LIMIT环境变量仅作兼容读取。waitAfterAction: number: 每次动作执行后的等待时间(毫秒)。这让 UI 有时间稳定,然后再执行下一个动作。默认值为 300 毫秒。onTaskStartTip: (tip: string) => void | Promise<void>:可选回调,在每个子任务执行开始前收到一条可读的任务描述提示。默认值为 undefined。outputFormat: 'single-html' | 'html-and-external-assets': 控制报告的生成格式。'single-html'(默认)将所有截图作为 base64 内嵌到单个 HTML 文件中。'html-and-external-assets'将截图保存为独立的 PNG 文件到子目录,适用于报告文件过大的场景。注意:使用'html-and-external-assets'时,报告必须通过 HTTP 服务器或 CDN 地址访问,无法直接使用file://协议打开。这是因为浏览器的 CORS(跨源资源共享)限制会阻止从 file 协议加载相对路径的本地图片。如需在本地测试,可在报告目录下启动简易的 HTTP 服务器。进入报告目录后运行以下命令之一:- 使用 Node.js:
npx serve - 使用 Python:
python -m http.server或python3 -m http.server然后通过http://localhost:3000(或终端显示的端口)访问报告。
- 使用 Node.js:
screenshotShrinkFactor: number: 控制截图的缩放比例,以减少发送给 AI 模型的图像大小,从而减少 token 消耗。默认值为 1(不缩放)。如果将其设置为 2,则截图的宽高将缩小为原来的一半,面积缩小为原来的四分之一。你可以根据实际情况调整这个值,以在图像清晰度和 token 消耗之间找到最佳平衡点。- 对于移动端设备,将
screenshotShrinkFactor设置为 2 可以在保持清晰度的同时减少 token 的消耗,但不建议设置的值超过 3,否则可能会导致图像过于模糊,影响 AI 模型的理解。 - 对于 Web 页面,如果页面内容比较复杂或包含大量细节,不建议设置
screenshotShrinkFactor,以避免截图过于模糊。此外,如果为了让 Web 页面截图有更高的清晰度,可以配置 Puppeteer 或 Playwright 的deviceScaleFactor为 2,这可以让 Puppeteer 或 Playwright 按照高清屏的方式来渲染页面。
- 对于移动端设备,将
自定义模型
modelConfig: Record<string, string | number> 可选。它允许你通过代码配置模型,而不是通过环境变量。
如果在 Agent 初始化时提供了
modelConfig,系统环境变量中的模型配置将全部被忽略,仅使用该对象中的值。 这里可配置的 key / value 与 模型配置 文档中说明的内容完全一致。你也可以参考 模型策略 中的说明。
基础示例(所有意图共用同一模型):
为不同任务类型配置不同模型(使用针对意图的环境变量键):
自定义 OpenAI 客户端
createOpenAIClient: (openai, options) => Promise<OpenAI | undefined> 可选。它允许你包装 OpenAI 客户端实例,用于集成可观测性工具(如 LangSmith、LangFuse)或应用自定义中间件。
参数说明:
openai: OpenAI- Midscene 创建的基础 OpenAI 客户端实例,已包含所有必要配置(API 密钥、基础 URL、代理等)options: Record<string, unknown>- OpenAI 初始化选项,包括:baseURL?: string- API 接入地址apiKey?: string- API 密钥dangerouslyAllowBrowser: boolean- 在 Midscene 中始终为 true- 其他 OpenAI 配置选项
返回值:
- 返回包装后的 OpenAI 客户端实例,或返回
undefined表示使用原始实例
示例(集成 LangSmith):
注意: 对于 LangSmith 和 Langfuse 集成,推荐使用 模型配置 中介绍的环境变量方式,无需编写 createOpenAIClient 代码。如果你提供了自定义的客户端包装函数,它会覆盖环境变量的自动集成行为。
交互方法
这些是 Midscene 中各类 Agent 的主要 API。
在 Midscene 中,你可以选择使用自动规划(Auto Planning)或即时操作(Instant Action)。
agent.ai()是自动规划(Auto Planning):Midscene 会自动规划操作步骤并执行。它更智能,更像流行的 AI Agent 风格,但可能较慢,且效果依赖于 AI 模型的质量。agent.aiTap(),agent.aiHover(),agent.aiInput(),agent.aiKeyboardPress(),agent.aiScroll(),agent.aiDoubleClick(),agent.aiRightClick()是即时操作(Instant Action):Midscene 会直接执行指定的操作,而 AI 模型只负责底层任务,如定位元素等。这种接口形式更快、更可靠。当你完全确定自己想要执行的操作时,推荐使用这种接口形式。
agent.aiAct() 或 agent.ai()
这个方法允许你通过自然语言描述一系列 UI 操作步骤。Midscene 会自动规划这些步骤并执行。
这个接口在之前版本里也被写为 aiAction(),当前的版本兼容两种写法。为了保持代码的一致性,建议使用新的 aiAct() 方法。
- 类型
-
参数:
prompt: string- 用自然语言描述的操作内容options?: Object- 可选,一个配置对象,包含:cacheable?: boolean- 当启用 缓存功能 时,是否允许缓存当前 API 调用结果。默认值为 truedeepThink?: 'unset' | true | false- 当模型支持时(取决于 MIDSCENE_MODEL_FAMILY),是否开启规划阶段的深度思考能力。默认值为'unset'(等同于省略该参数),跟随模型服务商的默认策略。当显式设置为true或false时,会覆盖环境变量MIDSCENE_MODEL_REASONING_ENABLED的配置。详情参阅 deepThink 说明。fileChooserAccept?: string | string[]- 当文件选择器弹出时,指定对应的文件路径。可以是单个文件路径或路径数组。仅在 web 页面(Playwright、Puppeteer)中可用。- 注意:如果文件输入框不支持多文件(没有
multiple属性),但是传入了多个文件,会抛出错误。 - 注意:如果点击触发了文件选择器但没有传入
fileChooserAccept参数,文件选择器会被忽略,页面可以继续正常操作。
- 注意:如果文件输入框不支持多文件(没有
-
返回值:

