Agent 凭什么接管你的手机

还在手动点手机?1484 星开源项目 phone-harness 让 AI 直接操控 Android,效率翻 10 倍,但延迟、安全、误操作三大坑怎么填?

源仓库: ShawnPana/phone-harness

Agent 凭什么接管你的手机

今天 GitHub Trending 刷到一个 1484 星的项目 ShawnPana/phone-harness,核心卖点一句话讲完:让 AI agent 直接控制 Android 手机。它做的事情并不神秘——通过 ADB 把 Claude / GPT 这类带视觉能力的模型接到手机的 UI 上,让模型自己看屏幕、点按钮、输文字。对比之前写 UiAutomator 脚本或者拼 RPA,phone-harness 把”教机器用手机”变成了”跟机器说一句话”,门槛从工程师降到普通用户。

为什么是现在火?因为 Claude Sonnet 4.5、GPT-4o 这类 vision 模型在 2025-2026 年才真正稳定可用,Android 调试桥又人人都有。Reddit r/LocalLLaMA 和 r/ClaudeAI 最近两周都在讨论”agent 能不能代替手动操作”,phone-harness 是少数把 demo 跑通、文档齐全、还支持本地模型的开源实现,自然就被顶上来了。

Q1:phone-harness 到底怎么让 agent 控制手机?

现象:很多开发者按 README 装完依赖,跑起来发现 agent 像无头苍蝇,对着屏幕乱点,任务完成率不到 30%。 根因:默认是”纯视觉”驱动——模型先截图、再识别 UI、再决策,三步串行,延迟高、误操作多。 解法:把它当工具调用框架而不是端到端方案:

from phone_harness import Agent, AndroidDevice

device = AndroidDevice(serial="emulator-5554")
agent = Agent(model="claude-sonnet-4.5", device=device)

@agent.tool
def open_app(name: str):
    device.shell(f"monkey -p {name} 1")
    return f"opened {name}"

agent.run("打开微信,给文件传输助手发一条 hello")

关键点:用 @agent.tool 把高频操作(打开 App、滚动、返回、输入)封装成确定性函数,模型只在需要时调用。不要让模型自己从头点开微信。

Q2:截图延迟太高怎么办?

现象:真机上跑,agent 一次操作要 3-5 秒,复杂任务十几分钟才能完成,token 成本也爆表。 根因:每次截图都是 full screen PNG,base64 传给视觉模型既慢又贵。 解法:切换到分层采样——只截变化区域,或者直接读 Android 的 View hierarchy XML:

device.set_capture_mode("view_tree")  # 拿结构化 XML 而不是位图

把 XML 当上下文塞给模型,准确率几乎不掉,单步延迟能压到 1 秒内,token 消耗降 70%。Reddit 上有用户反馈,这是把 phone-harness 从”玩具”变成”生产力工具”的分水岭。

Q3:agent 误操作怎么办?安全怎么兜底?

现象:HN 上有人抱怨 agent 把短信误发给老板、自动删了相册照片。这不是段子,是真问题——模型有概率幻觉。 解法:phone-harness 提供 action gate,在执行 destructive 操作前强制弹确认:

# config.yaml
safety:
  confirm_actions: [delete, send_message, payment]
  dry_run: false
  whitelist_apps: ["com.tencent.mm", "com.android.settings"]
  log_file: "./phone-harness.log"

白名单 + 二次确认 + 操作日志,三件套缺一不可。生产环境建议同时开启 dry_run: true 先跑一遍空操作,确认行为符合预期再放开。

Q4:能不能跑自定义工作流?

可以,而且推荐用。phone-harness 支持把任务写成 DSL,比纯 prompt 稳定得多:

- step: launch
  app: com.tencent.mm
- step: tap
  text: "文件传输助手"
- step: input
  text: "今天的会议纪要见附件"
- step: tap
  text: "发送"

DSL + agent 的混合模式最实用:确定步骤走脚本(快、准、便宜),不确定的地方让模型判断(灵活)。比如”自动回复特定联系人消息”,前半段导航用 DSL,后半段回复内容交给模型生成。

Q5:跟 AutoGLM / Open-Interpreter 比有什么优势?

AutoGLM 偏闭源、强调端侧部署;Open-Interpreter 主攻 PC 桌面自动化。phone-harness 的差异化在轻量 + 协议透明——一个 Python 包 + ADB,不绑特定模型,Claude、Gemini、本地 Qwen3-VL、Llama 3.2 Vision 都能接。对想用本地模型保隐私的团队特别友好,这也是它在 r/LocalLLaMA 上被反复推荐的原因。


Sources

  • GitHub Trending 2026-08-12: ShawnPana/phone-harness ⭐1484
  • r/ClaudeAI: “anyone tried phone-harness with sonnet 4.5?”
  • r/LocalLLaMA: “local vision model + phone-harness setup”
  • Hacker News: “Let your agent control your phone” 讨论帖
  • 项目 README、config schema 与示例代码