本地 AI 代理缺失的控制平面
Source: Dev.to
(请提供要翻译的正文内容,我才能为您完成简体中文翻译。)
当前移动 AI 代理的问题
- 模型优先:讨论常围绕模型规模、成本或上下文窗口展开,假设代理已经拥有与操作系统交互的方式。
- 平台限制:
- iOS 沙箱阻止一个应用控制另一个应用。
- Android 可访问性服务体积大、需要可怕的权限,并且合成能力有限。
- 结果:即使是强大的本地模型也无法打开地图、点击“确认”或输入消息,因为它没有手。
控制平面提供的功能
控制平面位于模型的下方,并负责:
- 观察 – 捕获屏幕状态、UI 层级、当前活动、前台应用。
- 执行 – 执行离散操作,如点击、输入、滑动、绘制、键事件或启动应用。
- 反馈 – 报告每个操作后发生的变化,以便模型调整下一步。
Source:
Drengr:控制平面的一个实现
Drengr 提供了三个简单的 MCP(Model‑Control‑Protocol)工具,任何支持该协议的 AI 客户端都可以使用(例如 Claude Desktop、Cursor、Windsurf)。
| 工具 | 用途 |
|---|---|
drengr_look | 观察当前屏幕 + UI 树 |
drengr_do | 执行点击 / 输入 / 滑动 / … |
drengr_query | 读取结构化数据(设备、活动、崩溃) |
这三个动词取代了脆弱的选择器、XPath 操作或持续运行的 Appium 守护进程。
运行时架构
- 单一静态 Rust 二进制 – 通过原生通道(Android 上的 ADB、iOS 模拟器上的 WDA)驱动设备。
- 跨平台抽象 – 同一个二进制文件可在 Android 和 iOS 上使用,无需额外依赖。
实践中的 Agent Loop
-
观察
drengr_lookDrengr 捕获屏幕截图,导出 UI 树,并构建紧凑的文本描述(约 300 个 token,相比图像约 100 KB)。
-
决策
模型处理该描述并返回一个 JSON 包,描述所需的操作。
-
执行与反馈
drengr_doDrengr 执行操作,生成 情境报告(相对于前一状态的差异),并将其反馈给模型以进行下一轮迭代。
情境报告是大多数框架缺失的部分;如果没有它,模型在步骤之间是盲目的,可能会过度行动(例如,反复点击一个失效的按钮)。
为什么本地控制平面至关重要
| Concern | Cloud‑only assistants struggle with |
|---|---|
| Latency | 当你手持手机时,两秒的往返延迟让人感觉很糟糕。 |
| Privacy | 银行、健康和消息数据应保留在设备上。 |
| Network independence | 地铁、飞机或不稳定的 Wi‑Fi 不应让助手瘫痪。 |
随着本地模型变得无处不在,控制平面也必须在本地运行。Drengr 的静态二进制设计体现了这一需求。
实际案例
使用上述三种工具,设备端代理可以:
- 打开 Photos,查找最近的照片,并将其附加到 WhatsApp 消息中。
- 监控航班预订应用的价格下降,并自动重新预订。
- 通过屏幕共享为低视力用户操作银行应用。
- 执行人们通常会请人类助理在手机上完成的各种繁杂任务。
这些场景需要 hands‑and‑eyes 基础设施,而不是新的模型能力。
开始使用 Drengr
Drengr 可免费使用。只需两条命令即可安装并验证:
# Install via Claude Code (or run directly)
claude mcp add drengr -- npx -y drengr mcp
# Verify the installation
drengr doctor
将你的 AI 代理指向正在运行的 Drengr 实例,即可观察模型以真实的手部动作进行操作。
Rust 实现是经过深思熟虑的选择——详情请参阅单独的帖子。