You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.3 KiB

请为我创建一个基于 FastAPI 的“终端设备控制平台”项目,命名为 TermControlAgent,具备以下特性:

  1. 提供统一的 HTTP API 接口,控制各种连接的设备(如手机、嵌入式模块、远程主机等);

  2. 支持以下控制协议/方式,并可按设备绑定使用:

    • ADB(支持点击、输入、截图、安装、拉日志等)
    • ATX(基于 uiautomator2 控制 Android 手机)
    • HDC(华为设备控制命令)
    • AT 指令(通过串口发送)
    • PLNK(假设为自定义通信协议,通过 TCP/串口等)
    • SSH(通过远程执行 shell 命令)
  3. 项目需具备模块化结构,包含:

    • api/: 路由层,定义 HTTP 接口(如点击、输入、命令执行等)
    • services/: 不同协议的控制器/适配器,如 adb_service.pyssh_service.py
    • core/: 配置管理、统一协议路由器、设备状态管理
    • schemas/: 请求/响应模型(Pydantic)
    • utils/: 通用工具(串口、TCP、CRC、日志封装等)
    • main.py: FastAPI 启动入口
  4. 具体接口建议包括:

    • GET /devices:列出所有连接的设备(含类型、状态、协议)
    • POST /devices/{id}/click:执行点击操作(仅限支持图形界面协议)
    • POST /devices/{id}/input:输入文字
    • GET /devices/{id}/screenshot:返回当前屏幕截图
    • POST /devices/{id}/exec:通过 SSH 执行命令
    • POST /devices/{id}/send-at:发送 AT 指令并返回原始响应
    • POST /devices/{id}/send-plnk:通过 PLNK 协议发送十六进制报文并解析响应
    • POST /devices/{id}/install:上传并安装 APK(ADB / HDC)
    • GET /devices/{id}/logcat:获取实时日志(支持 ADB)
  5. 协议应当使用统一注册与调度器设计,例如通过 device_idprotocol_type 映射调用不同 service。

  6. 支持 WebSocket 通道推送设备状态(如上线、离线、执行反馈)

  7. 输出标准 requirements.txt 文件,包含:

    • fastapi, uvicorn, adbutils, uiautomator2, pyserial, paramiko (SSH), httpx, websockets 等
  8. 请生成以下内容:

    • 项目目录结构
    • 核心代码框架(至少包含 adb/ssh/at 示例服务类 + 路由注册)
    • 示例点击、执行命令、发送 AT 指令接口