Open-AutoGLM 项目目录结构解读
完整项目结构
Open-AutoGLM/
├── main.py # 命令行入口
├── requirements.txt # 依赖清单
├── scripts/
│ └── check_deployment_cn.py # 部署验证脚本
│
└── phone_agent/ # ★ 核心框架包
├── __init__.py # PhoneAgent 主类导出
├── agent.py # PhoneAgent 主类实现
│
├── model/ # 模型客户端层
│ └── client.py # OpenAI 兼容格式 API 调用
│
├── adb/ # ADB 工具(Android)
│ ├── connection.py # 远程/本地连接管理
│ ├── screenshot.py # 屏幕截图
│ ├── input.py # 文本输入(ADB Keyboard)
│ └── device.py # 设备控制(点击、滑动等)
│
├── hdc/ # HDC 工具(HarmonyOS NEXT)
│ ├── connection.py
│ ├── screenshot.py
│ ├── input.py # 鸿蒙原生支持中文输入
│ └── device.py
│
├── wda/ # WDA 工具(iOS / WebDriverAgent)
│ ├── connection.py
│ ├── screenshot.py
│ ├── input.py
│ └── device.py
│
├── actions/ # 操作处理层
│ └── handler.py # ★ 所有动作的执行器
│
├── config/ # 配置层
│ ├── apps.py # ★ App 名称 → 包名映射表
│ ├── prompts_zh.py # ★ 中文系统提示词
│ └── prompts_en.py # ★ 英文系统提示词
│
└── example/ # 使用示例
├── basic_usage.py
├── single_step_debug.py
├── batch_tasks.py
└── custom_callback.py
改代码应该改哪里
| 你想做什么 | 改哪个文件 |
|---|---|
| 增加一个新的原子操作 | phone_agent/actions/handler.py + System Prompt 文件 |
| 新增一个 App 支持 | phone_agent/config/apps.py(加名称→包名映射) |
| 修改模型的系统提示词 | phone_agent/config/prompts_zh.py 或 prompts_en.py |
| 增加敏感操作规则 | System Prompt(告诉模型哪些场景要 Take_over) |
| 改 ADB 截图命令 | phone_agent/adb/screenshot.py |
| 改动作 JSON 解析逻辑 | phone_agent/actions/handler.py |
| 改 Agent 主循环行为 | phone_agent/agent.py |
三个设备适配层的作用
adb/、hdc/、wda/ 三个目录结构一模一样,对外暴露统一的接口:
connection.py— 设备连接管理(本地 USB + 远程 WiFi)screenshot.py— 获取当前屏幕截图(返回图片文件路径)input.py— 向设备输入文本(各自实现方式不同)device.py— 执行点击、滑动、长按等设备操作
Agent 主循环不关心底层是 ADB 还是 HDC——调 device.tap(x, y) 就行,具体翻译成 adb shell input tap 还是 hdc uitest click 由适配层决定。
Model 客户端层
model/client.py 实现了 OpenAI 兼容格式的 API 调用。vLLM、SGLang、智谱 BigModel、ModelScope 只要暴露 OpenAI 格式接口都能直接接上,框架不感知具体是哪个服务。