Droidrun – Tương lai của tự động hoá thiết bị di động bằng AI
Trong thế giới kỹ thuật số ngày nay, các ứng dụng di động đã trở thành một phần không thể thiếu trong cuộc sống của chúng ta. Tuy nhiên, đối với trí tuệ nhân tạo (AI) và tự động hóa (automation), hệ sinh thái sôi động này thường vẫn là một “khu vườn có tường rào”. Không giống như web với cấu trúc DOM (Mô hình Đối tượng Tài liệu) được tiêu chuẩn hóa, các ứng dụng di động hiếm khi cung cấp các giao diện lập trình ứng dụng (API) toàn diện. Điều này đã giam hãm vô số quy trình làm việc thiết yếu và dữ liệu có giá trị đằng sau các giao diện người dùng được thiết kế riêng cho thao tác chạm và vuốt của con người.
Các phương pháp tự động hóa truyền thống thường không đủ sức để vượt qua những rào cản này. Các công cụ dựa trên thị giác, phân tích pixel trên màn hình để nhận dạng các thành phần, thường rất “mong manh” và dễ dàng bị phá vỡ chỉ với những thay đổi nhỏ về giao diện người dùng (UI). Trong khi đó, các framework kiểm thử tự động truyền thống như Appium hay Espresso, mặc dù mạnh mẽ, nhưng lại phức tạp, đòi hỏi nhiều mã lệnh và được xây dựng chủ yếu cho các đội ngũ đảm bảo chất lượng (QA) chứ không phải cho việc phát triển các tác nhân AI linh hoạt. Chính những người sáng lập Droidrun đã trực tiếp trải nghiệm sự thất bại này, khi các giải pháp hiện có như UiPath và Selenium thất bại thảm hại trong môi trường sản xuất thực tế.
Trong bối cảnh đó, Droidrun xuất hiện như một giải pháp đột phá, tự định vị là “tác nhân di động gốc đầu tiên”. Đây không chỉ là một công cụ kiểm thử khác, mà là một lớp cơ sở hạ tầng nền tảng được thiết kế để cung cấp cho các tác nhân AI “đôi mắt và đôi tay” cần thiết để nhận thức, hiểu và vận hành bất kỳ ứng dụng di động nào như một con người. Lời hứa cốt lõi của Droidrun là khả năng tự động hóa thông qua các câu lệnh ngôn ngữ tự nhiên, đơn giản và trực quan.
Droidrun là gì và tại sao lại quan trọng?
Droidrun là một framework mã nguồn mở cho phép các tác nhân Mô hình Ngôn ngữ Lớn (LLM) điều khiển các thiết bị Android và trong tương lai là cả iOS một cách tự nhiên. Về cơ bản, nó chuyển đổi các mục tiêu cấp cao được diễn đạt bằng ngôn ngữ tự nhiên thành một chuỗi các tương tác giao diện người dùng cấp thấp như chạm, vuốt và nhập văn bản.
Đề xuất giá trị – Tạo API toàn cầu
Ý tưởng mang tính chuyển đổi của Droidrun là nó tạo ra một API đáng tin cậy một cách nhanh chóng cho bất kỳ ứng dụng di động nào, bất kể nhà phát triển có cung cấp API chính thức hay không. Điều này mở ra khả năng tự động hóa ứng dụng toàn cầu và trích xuất dữ liệu trực tiếp, những điều trước đây không thể thực hiện được ở quy mô lớn.
Đối tượng mục tiêu và các trường hợp sử dụng
Droidrun chủ yếu nhắm đến các nhà phát triển, đội ngũ QA và các nhà nghiên cứu AI. Các trường hợp sử dụng chính bao gồm:
- Kiểm thử UI tự động cho các ứng dụng di động.
- Tự động hóa các tác vụ lặp đi lặp lại hàng ngày như đăng nhập, đặt chỗ và mua sắm.
- Trích xuất và thu thập dữ liệu từ các nền tảng chỉ có trên di động, nơi không có API công khai.
- Xây dựng các quy trình làm việc phức tạp, liên ứng dụng, ví dụ như tìm kiếm sản phẩm trên Amazon và chia sẻ kết quả qua WhatsApp.
- Tạo các quy trình làm việc có hướng dẫn và cung cấp hỗ trợ từ xa cho người dùng không chuyên về kỹ thuật.
Kiến trúc kỹ thuật của Droidrun
Ba trụ cột của Droidrun
Kiến trúc của hệ thống được xây dựng dựa trên sự hợp tác của ba thành phần chính:
- Framework Python (Bộ “não”): Đây là lõi của tác nhân, được viết chủ yếu bằng ngôn ngữ Python. Nó chứa logic để lập kế hoạch tác vụ, suy luận và giao tiếp với các LLM. Đây là trung tâm chỉ huy nhận mục tiêu từ người dùng và điều phối toàn bộ hoạt động.
- Ứng dụng Droidrun Portal (Các “giác quan và đôi tay”): Đây là một ứng dụng đồng hành quan trọng được cài đặt trên thiết bị Android. Được xây dựng bằng Kotlin 19, nó hoạt động như một cầu nối giữa các lệnh của tác nhân và giao diện người dùng của thiết bị. Vai trò chính của nó là cung cấp “giác quan” (dữ liệu UI) và thực thi các “hành động” (chạm, vuốt).
- Mô hình Ngôn ngữ Lớn (Cỗ máy “suy luận”): Droidrun không phụ thuộc vào một LLM cụ thể nào, hỗ trợ một loạt các nhà cung cấp như OpenAI, Gemini, Anthropic, Ollama và DeepSeek. Vai trò của LLM là diễn giải mục tiêu ngôn ngữ tự nhiên của người dùng, phân tích dữ liệu UI do ứng dụng Portal cung cấp và quyết định hành động logic tiếp theo.
Vượt qua giới hạn Pixel bằng dịch vụ trợ năng
Điểm khác biệt kỹ thuật cốt lõi của Droidrun nằm ở cách nó “nhìn” màn hình. Thay vì dựa vào việc phân tích pixel hình ảnh, một phương pháp không ổn định, Droidrun tận dụng API dịch vụ trợ năng (Accessibility Services) của Android.
Ứng dụng Droidrun Portal sử dụng Dịch vụ Trợ năng để truy cập vào hệ thống phân cấp UI có cấu trúc (còn gọi là cây hiển thị) mà các ứng dụng trình bày cho hệ điều hành Android. Điều này cung cấp một sự hiểu biết sâu sắc và đáng tin cậy về các yếu tố gốc—loại của chúng (nút, biểu mẫu, danh sách), nội dung văn bản, tên lớp, tọa độ và trạng thái (có thể nhấp, có thể cuộn). Dữ liệu có cấu trúc này sau đó được xuất ra ở định dạng JSON rõ ràng, giúp LLM phân tích hiệu quả và đáng tin cậy hơn nhiều so với một ảnh chụp màn hình thô. Chính cách tiếp cận này đã làm cho Droidrun trở nên mạnh mẽ hơn đáng kể trước những thay đổi nhỏ về UI, những thay đổi có thể dễ dàng làm hỏng các hệ thống dựa trên pixel.
Vòng đời của một lệnh
- Yêu cầu của người dùng: Người dùng đưa ra một lệnh, ví dụ:
droidrun "Tìm khách sạn rẻ nhất ở Berlin và chia sẻ nó trên WhatsApp"
. - Nhận thức của Tác nhân: Tác nhân Python ra lệnh cho Droidrun Portal thông qua ADB để thu thập hệ thống phân cấp UI của màn hình hiện tại dưới dạng đối tượng JSON và một ảnh chụp màn hình bổ sung để có ngữ cảnh trực quan.
- Suy luận của LLM: Tác nhân đóng gói mục tiêu của người dùng, lịch sử hành động và trạng thái UI hiện tại (JSON + ảnh chụp màn hình) vào một câu lệnh (prompt) cho LLM đã chọn (ví dụ: GPT-4o, Gemini).
- Lập kế hoạch Hành động: LLM phân tích câu lệnh và xác định hành động logic tiếp theo, chẳng hạn như
tap(element_index=15)
hoặcinput_text(element_index=22, text="Berlin")
. - Thực thi: Tác nhân Python gửi lệnh chính xác này trở lại ứng dụng Droidrun Portal qua ADB.
- Hành động trên Thiết bị: Ứng dụng Portal thực thi lệnh, thực hiện thao tác chạm hoặc nhập văn bản trên giao diện người dùng của ứng dụng mục tiêu.
- Lặp lại: Chu kỳ này lặp lại cho đến khi LLM xác định rằng mục tiêu cuối cùng đã hoàn thành.
Con dao hai lưỡi: Dịch vụ trợ năng
Công nghệ cốt lõi của Droidrun phụ thuộc vào Dịch vụ Trợ năng của Android. Dịch vụ này cung cấp quyền truy cập vô song vào giao diện người dùng của các ứng dụng khác, đó là lý do tại sao Droidrun rất hiệu quả. Tuy nhiên, chính dịch vụ này cũng là một mối lo ngại về bảo mật đã được biết đến trong hệ sinh thái Android vì nó có thể phá vỡ mô hình sandbox của ứng dụng. Các ứng dụng độc hại trong quá khứ đã lạm dụng các dịch vụ này để đọc thông tin nhạy cảm hoặc thực hiện các hành động mà không có sự đồng ý của người dùng.
Điều này có nghĩa là, mặc dù Droidrun là một công cụ mạnh mẽ cho tự động hóa hợp pháp, cơ chế cốt lõi của nó hoạt động trong một khu vực nhạy cảm về bảo mật của hệ điều hành. Người dùng phải cấp các quyền hạn đáng kể cho ứng dụng Droidrun Portal. Điều này tạo ra một nhu cầu quan trọng về sự tin tưởng vào chính dự án Droidrun. Bản chất mã nguồn mở của dự án, các kiểm tra bảo mật (bandit, safety), và sự phát triển minh bạch không chỉ là những điểm cộng; chúng là điều cần thiết để xây dựng lòng tin của người dùng cần có để vận hành công nghệ này một cách an toàn.
Từ con số không đến tác nhân: Hướng dẫn bắt đầu nhanh
Chương này sẽ đóng vai trò như một hướng dẫn thực hành dựa trên tài liệu chính thức.
Yêu cầu hệ thống
- Một thiết bị Android (vật lý hoặc ảo) được kết nối qua USB hoặc ADB qua TCP/IP.
- Android Debug Bridge (ADB) được cài đặt và cấu hình trên máy chủ. Cung cấp lệnh cài đặt cho macOS, Windows và Linux.
- Gỡ lỗi USB được bật trong Tùy chọn nhà phát triển trên thiết bị Android. Hướng dẫn bao gồm mẹo “chạm vào Số bản dựng 7 lần”.
- Một khóa API cho ít nhất một nhà cung cấp LLM được hỗ trợ (OpenAI, Gemini, v.v.), được cấu hình thông qua các biến môi trường hoặc tệp .env.
Các bước cài đặt
- Cài đặt Framework Python:
pip install droidrun
- Cài đặt Ứng dụng Droidrun Portal:
- Tải xuống tệp APK từ kho lưu trữ GitHub chính thức (droidrun/droidrun-portal).
- Cài đặt nó bằng lệnh tích hợp sẵn của DroidRun (
droidrun setup --path=/path/to/droidrun-portal.apk
) hoặc thủ công bằng ADB (adb install -r /path/to/droidrun-portal.apk
).
- Kích hoạt Dịch vụ: Hướng dẫn người dùng bật thủ công dịch vụ trợ năng Droidrun Portal và cấp quyền lớp phủ trong Cài đặt của thiết bị.
Ví dụ sử dụng
- Lệnh CLI Đơn giản: Trình bày một lệnh cơ bản, một lần để xác minh thiết lập hoạt động.
# Mở ứng dụng cài đặt bằng LLM mặc định
droidrun "Open the settings app"
- Lệnh CLI Nâng cao với các Tùy chọn: Hiển thị cách chỉ định nhà cung cấp LLM, mô hình và bật khả năng thị giác.
# Sử dụng Gemini để tìm máy tính và chụp ảnh màn hình
droidrun "Open Calculator and take a screenshot" --provider Gemini --model models/gemini-2.5-pro --vision
- Script Python Tối thiểu: Cung cấp một script Python có chú thích đầy đủ để thể hiện sức mạnh của SDK trong việc xây dựng các quy trình làm việc phức tạp, nhiều bước hơn. Ví dụ này sẽ phản ánh ví dụ được cung cấp trong tài liệu, trình bày cách tải công cụ, cấu hình LLM, và khởi tạo và chạy DroidAgent.
Một mô hình mới: Droidrun so với Appium và Espresso
Sự thay đổi mô hình
Việc so sánh không chỉ là một danh sách tính năng, mà là một sự thay đổi cơ bản trong triết lý tự động hóa.
- Mệnh lệnh (Appium/Espresso): Nhà phát triển lập trình một cách tường minh cách thực hiện một tác vụ. Các kịch bản là những hướng dẫn chi tiết, từng bước, trực tiếp thao tác các yếu tố UI bằng ID hoặc XPath. Điều này đòi hỏi kiến thức lập trình và dễ bị hỏng.
- Khai báo (Droidrun): Người dùng chỉ cần nêu những gì họ muốn đạt được bằng ngôn ngữ tự nhiên. Tác nhân AI, sử dụng khả năng suy luận của mình, sẽ tự xác định cách thực hiện. Điều này trừu tượng hóa các chi tiết triển khai.
Hồ sơ đối thủ chi tiết
- Appium: Một framework mã nguồn mở, đa nền tảng (iOS, Android) sử dụng giao thức WebDriver. Điểm mạnh bao gồm sự linh hoạt về ngôn ngữ (Python, Java, v.v.) và hỗ trợ nền tảng rộng. Điểm yếu là thiết lập client-server phức tạp, tốc độ thực thi chậm hơn và có thể không ổn định.
- Espresso: Framework mã nguồn mở gốc của Google chỉ dành cho kiểm thử UI Android. Điểm mạnh là tốc độ, sự ổn định và tích hợp sâu với Android Studio. Điểm yếu là chỉ giới hạn ở Android và yêu cầu lập trình bằng Java hoặc Kotlin, khiến nó khó tiếp cận hơn đối với các nhà phát triển không chuyên về Android.
Định nghĩa lại vai trò của kỹ sư tự động hóa
Các công cụ truyền thống như Appium và Espresso đặt kỹ sư QA vào vai trò của một lập trình viên, người phải viết và bảo trì các đoạn mã phức tạp, dễ hỏng. Một thay đổi trong giao diện người dùng của ứng dụng đòi hỏi phải thay đổi mã nguồn. Ngược lại, Droidrun chuyển vai trò của kỹ sư sang một kỹ sư prompt hoặc người huấn luyện AI. Công việc của họ không còn là viết các bộ định vị và lệnh nhấp chuột, mà là tạo ra các câu lệnh ngôn ngữ tự nhiên hiệu quả để hướng dẫn hành vi hướng đến mục tiêu của tác nhân AI. Việc gỡ lỗi không phải là sửa các bộ chọn bị hỏng, mà là tinh chỉnh các câu lệnh để cung cấp cho LLM ngữ cảnh tốt hơn hoặc hướng dẫn rõ ràng hơn.
Đây là một sự thay đổi sâu sắc trong bộ kỹ năng cần thiết cho các vai trò tự động hóa. Nó làm giảm rào cản gia nhập để tạo ra các quy trình tự động hóa (yêu cầu ít lập trình hơn) nhưng lại nâng cao giới hạn về độ phức tạp của các tác vụ có thể được tự động hóa (tận dụng khả năng suy luận của LLM). Tương lai của tự động hóa QA có thể liên quan nhiều hơn đến ngôn ngữ tự nhiên và logic thay vì các đoạn mã dễ hỏng.
Droidrun vs. Appium vs. Espresso – Một cuộc đối đầu kỹ thuật
Tiêu chí | Droidrun | Appium | Espresso |
---|---|---|---|
Mô hình Điều khiển | Khai báo (Hướng mục tiêu) | Mệnh lệnh (Hướng kịch bản) | Mệnh lệnh (Hướng kịch bản) |
Phương pháp Kịch bản | Ngôn ngữ tự nhiên (qua LLM) & Python SDK | Mã lệnh (Python, Java, JS, v.v.) | Mã lệnh (Java, Kotlin) |
Công nghệ Cốt lõi | LLM + Dịch vụ Trợ năng | Giao thức WebDriver | Công cụ gốc (Instrumentation) |
Đa nền tảng | Có (Android, iOS được lên kế hoạch) | Có (Android, iOS, Windows) | Không (Chỉ Android) |
Độ phức tạp Cài đặt | Trung bình (ADB, Portal APK) | Cao (Cấu hình máy chủ) | Thấp (Tích hợp trong Android Studio) |
Độ bền với Thay đổi UI | Cao (Dựa trên cấu trúc) | Thấp (Dựa trên bộ chọn) | Thấp (Dựa trên bộ chọn) |
Tốc độ Thực thi | Trung bình (Độ trễ LLM) | Chậm (Chi phí Client-Server) | Nhanh (Thực thi gốc) |
Trường hợp Sử dụng Lý tưởng | Tác nhân AI, quy trình phức tạp, trích xuất dữ liệu | Kiểm thử chức năng đa nền tảng | Kiểm thử UI Android gốc |
Hạn chế Chính | Phụ thuộc vào hiệu suất LLM & ADB | Không ổn định, cài đặt phức tạp | Chỉ Android, yêu cầu lập trình |
Ứng dụng nâng cao và khả năng của tác nhân
Giải mã “Tự phục hồi”: Vòng lặp ReAct trong thực tế
Khả năng “tự phục hồi” của Droidrun là một ứng dụng thực tế của các framework suy luận tác nhân như ReAct (Reason-Act). Quá trình này diễn ra như sau: tác nhân nhận một quan sát (trạng thái màn hình), suy nghĩ về bước tiếp theo (Thought), tạo ra một hành động (Action), và sau đó quan sát kết quả. Nếu kết quả không như mong đợi (ví dụ: một thông báo lỗi xuất hiện, một nút không được tìm thấy), tác nhân có thể “phản tư” về thất bại này, điều chỉnh kế hoạch của mình và thử một hành động khác. Đây là một sự khác biệt rõ rệt so với một kịch bản truyền thống, vốn sẽ chỉ đơn giản là thất bại và dừng lại.
Kiểm thử trợ năng như một năng lực cốt lõi
Sự phụ thuộc của Droidrun vào API Dịch vụ Trợ năng biến nó thành một công cụ kiểm thử trợ năng mạnh mẽ. Vì tác nhân “nhìn” ứng dụng chính xác như một công nghệ hỗ trợ, nó có thể được giao nhiệm vụ điều hướng ứng dụng chỉ bằng thông tin có sẵn cho một trình đọc màn hình. Một trường hợp sử dụng tiềm năng là:
droidrun "Điều hướng đến trang hồ sơ và cập nhật tên của tôi, nhưng chỉ sử dụng các yếu tố có mô tả nội dung."
Lệnh này sẽ ngay lập tức xác định các phần của giao diện người dùng không thể truy cập được. Bản thân Droidrun Portal cũng là một công cụ vô giá để đánh giá khả năng truy cập.19
Cân nhắc về đạo đức và khả năng lạm dụng
Cần phải giải quyết trực tiếp những lo ngại của cộng đồng về việc Droidrun có thể được sử dụng cho việc tạo bot, gửi thư rác hoặc các hoạt động bất chính khác. Công nghệ này có tính lưỡng dụng: khả năng tự động hóa một tác vụ nhập liệu tẻ nhạt cũng có thể được sử dụng để tạo tài khoản spam trên mạng xã hội. Báo cáo này phải có một lập trường có trách nhiệm, thừa nhận những rủi ro này trong khi tập trung vào các ứng dụng hợp pháp, tạo ra giá trị. Giấy phép MIT của dự án 9 có tính linh hoạt cao, đặt trách nhiệm lên người dùng.
Lộ trình đến một tương lai do tác nhân dẫn dắt
Lộ trình chính thức của Droidrun
Các kế hoạch tương lai được công bố công khai của dự án, tham khảo từ README trên GitHub, bao gồm:
- Cải tiến Tác nhân: Cải thiện bộ nhớ để giữ ngữ cảnh tốt hơn trong các tác vụ dài và tăng cường khả năng thị giác để nhận dạng UI tốt hơn.
- Kịch bản Tự động hóa: Cho phép người dùng tạo ra các kịch bản có thể tái sử dụng và chia sẻ từ các lần chạy thành công của tác nhân.
- Tích hợp: Mở rộng hỗ trợ cho nhiều nhà cung cấp LLM và các framework tác nhân hơn như LangChain.
- Nền tảng Đám mây: Đây là sáng kiến chiến lược chính. Các kế hoạch bao gồm một phiên bản được lưu trữ để điều khiển thiết bị từ xa, một thị trường cho các tiện ích bổ sung, và cơ sở hạ tầng có thể mở rộng cho doanh nghiệp (“Proxy Hours,” “Droidrun AppStore”). Khoản tài trợ 2.1 triệu Euro gần đây được dành riêng để đẩy nhanh việc phát triển nền tảng đám mây này.
Droidrun là kẻ mở đường cho mô hình hệ điều hành di động tiếp theo
Mô hình hệ điều hành di động hiện tại tập trung vào ứng dụng. Người dùng điều hướng qua một lưới các biểu tượng và chuyển đổi thủ công giữa các ứng dụng để hoàn thành một quy trình làm việc. Công nghệ của Droidrun, cho phép tự động hóa liền mạch giữa các ứng dụng thông qua ngôn ngữ tự nhiên, là một phần nền tảng cho một mô hình mới, tập trung vào tác nhân.
Trong tương lai này, giao diện người dùng chính không phải là lưới ứng dụng, mà là chính tác nhân AI. Người dùng sẽ chỉ cần nêu mục tiêu cấp cao của họ (“Đặt chuyến đi đến Berlin cho tôi”) và tác nhân sẽ điều phối các hành động cần thiết trên nhiều ứng dụng trong nền. Droidrun không chỉ là một công cụ tự động hóa; nó là một nguyên mẫu của cơ sở hạ tầng cần thiết cho các “giao diện người dùng tác nhân” và các hệ điều hành gốc AI trong tương lai. Điều này định vị Droidrun như một công nghệ có khả năng cách mạng hóa, không chỉ là một sự tiến hóa.
Một biên giới mới cho tương tác người-máy
Droidrun đại diện cho một bước tiến đáng kể trong lĩnh vực tự động hóa di động. Bằng cách dân chủ hóa quy trình thông qua ngôn ngữ tự nhiên và cung cấp một giải pháp thay thế mạnh mẽ cho các kịch bản dễ hỏng bằng cách sử dụng dữ liệu UI có cấu trúc, nó đã tiên phong cho khái niệm về một tác nhân di động gốc.
Tuy nhiên, cần có một cái nhìn cân bằng. Đây vẫn là một dự án mã nguồn mở còn non trẻ. Các hạn chế hiện tại bao gồm sự phụ thuộc vào kết nối máy tính qua ADB, nền tảng đám mây vẫn đang trong giai đoạn phát triển ban đầu, và hiệu suất bị ràng buộc bởi độ trễ của LLM.
Cuối cùng, Droidrun không chỉ là một công cụ. Nó đại diện cho một bước đi cơ bản hướng tới một tương lai nơi các tác nhân AI là những công dân hạng nhất trong hệ sinh thái di động, thu hẹp khoảng cách giữa ý định của con người và hành động kỹ thuật số, và cuối cùng là định nghĩa lại mối quan hệ của chúng ta với các thiết bị trong túi.