与任意界面集成
你可以使用 Midscene 的 Agent 来控制任意界面,比如 IoT 设备、内部应用、车载显示器等,只需要实现一个符合 AbstractInterface 定义的 UI 操作类。
在实现了 UI 操作类之后,你可以获得 Midscene Agent 的全部特性:
- TypeScript 的 GUI 自动化 Agent SDK,支持与任意界面集成
- 用于调试的 Playground
- 通过 yaml 脚本控制界面
- 通过 CLI 命令接入 Skills
演示和社区项目
我们已经为你准备了一个演示项目,帮助你学习如何定义自己的界面类。强烈建议你查看一下。
-
演示项目 - 一个简单的演示项目,展示如何定义自己的界面类
-
Android (adb) Agent - 这是 Midscene Android (adb) Agent,同样依赖此特性实现
-
iOS (WebDriverAgent) Agent - 这是 Midscene iOS (WebDriverAgent) Agent,同样依赖此特性实现
还有一些使用此功能的社区项目:
- midscene-ios - 使用 Midscene 驱动 "iPhone 镜像" 应用的项目
配置 AI 模型服务
下面以豆包 Seed 2.1 Turbo 为例:
将 your-api-key 替换为你的 API Key 。
如需使用千问(Qwen)、GLM、Gemini 或 GPT-5 等其他模型,请参考使用模型 API Key。
全部配置项请参考模型配置。
实现你自己的界面类
关键概念
AbstractInterface类:一个预定义的抽象类,可以连接到 Midscene 智能体- 动作空间:描述可以在界面上执行的动作集合。这将影响 AI 模型如何规划和执行动作
步骤 1. 从 demo 项目开始
我们提供了一个演示项目,运行了本文档中的所有功能。这是最快的启动方式。
步骤 2. 实现你的界面类
定义一个继承 AbstractInterface 类的类,并实现所需的方法。
你可以从 ./src/sample-device.ts 文件中获取示例实现。让我们快速浏览一下。
需要实现的关键方法有:
screenshotBase64()、size():帮助 AI 模型获取界面上下文actionSpace():一个由DeviceAction组成的数组,定义了在界面上可以执行的动作。AI 模型将使用这些动作来执行操作。Midscene 已为常见界面与设备提供了预定义动作空间,同时也支持定义任何自定义动作。
使用这些命令运行 Agent:
npm run build重新编译 Agent 代码npm run demo使用 JavaScript 运行智能体npm run demo:yaml使用 yaml 脚本运行智能体
步骤 3. 使用 Playground 测试 Agent
为 Agent 附加一个 Playground 服务,即可在浏览器中测试你的 Agent。
步骤 4. 添加 Skill 支持(可选)
Agent Skills 让 AI 编程助手(如 Claude Code、Cline 等)可以通过 CLI 命令驱动你的自定义界面。了解更多请参考 Skills 文档。
在你的 npm 包中添加一个 CLI 入口文件(如 ./src/cli.ts):
然后在 package.json 中配置 bin 字段:
发布后,AI 编程助手即可通过 npx my-device 命令来控制你的自定义界面。
关于 Skill 的编写规范和更多示例,请参考 midscene-skills 仓库。
步骤 5. 发布 npm 包,让你的用户使用它
./index.ts 文件已经导出了你的 Agent 与界面类。现在可以发布到 npm。
在 package.json 文件中填写 name 和 version,然后运行以下命令:
你的 npm 包的典型用法如下:

