03 / AI REPO RADAR
google/artemis
12.449 saoLicense: Apache-2.0Push gần nhất: Lên radar:
Công cụ của Google biến chỉ dẫn ngôn ngữ tự nhiên thành thao tác trên điện thoại Android thật, có máy chủ MCP, CLI và Python SDK để agent lập trình tự kiểm thử ứng dụng.
ARTEMIS là gì và giải quyết vấn đề nào
ARTEMIS là một dự án mã nguồn mở của Google, biến các chỉ dẫn bằng ngôn ngữ tự nhiên thành thao tác tự động trên điện thoại Android. README tóm tắt mục tiêu bằng một câu: để trợ lý AI và các bộ kiểm thử dùng điện thoại thật như một con người. Mô tả trên GitHub bổ sung rằng công cụ chạy trọn các luồng công việc từ đầu đến cuối, thu log, và tích hợp với các trợ lý lập trình AI như Antigravity, Codex và Claude Code.
Vấn đề nó nhắm tới là khoảng trống giữa agent lập trình và thiết bị thật. Một coding agent có thể sửa mã ứng dụng, nhưng để biết bản build mới có chạy đúng trên điện thoại hay không thì thường phải có người cầm máy bấm thử. ARTEMIS cho agent một đôi tay: nó đọc màn hình, quyết định thao tác, thực hiện và trả về ảnh chụp màn hình cùng log để agent kiểm tra kết quả.
Theo metadata GitHub tại thời điểm thu thập, repo có 12449 sao và dùng giấy phép Apache-2.0. Các chủ đề gắn kèm là ai-agents, android, google, test-automation và testing. README cũng nêu rõ phần mã không thuộc sở hữu của Google nằm trong thư mục third_party, mỗi dự án thượng nguồn một thư mục riêng với giấy phép và metadata riêng; trong đó có một phần của dự án mobile-use do Minitap công bố theo Apache License 2.0.
README cũng dẫn tới trang giới thiệu quy trình mẫu, hướng dẫn nhanh, phần MCP cho IDE, kết quả benchmark và cộng đồng Discord. Dự án có bản tiếng Anh và tiếng Trung.
Các điểm nổi bật theo README
Điểm đầu tiên là tự động hóa xuyên ứng dụng: chạy các luồng kiểm thử và cả việc thường ngày trên Android từ chỉ dẫn bằng ngôn ngữ tự nhiên. Ví dụ trình diễn trong README là thiết lập các tuyến đường trong Google Maps, tính tổng thời gian, sau đó mở YouTube để phát một bài hát của Coldplay.
Điểm thứ hai là định vị đa phương thức. ARTEMIS ưu tiên chỉ số phần tử khi có, và dùng tọa độ cùng định vị bằng hình ảnh làm phương án dự phòng cho các giao diện tùy biến. Phần kiến trúc nói rõ hơn: nó kết hợp cây accessibility và OCR với mô hình thị giác cho các giao diện Canvas, Compose và Flutter.
Điểm thứ ba là chẩn đoán trong IDE. Tích hợp Model Context Protocol cho phép Antigravity, Claude Code và Windsurf điều khiển thiết bị kiểm thử, đồng thời thu đầu ra Logcat và ảnh chụp màn hình. Điểm thứ tư và thứ năm là hai chế độ thực thi Flash và Pro, được mô tả kỹ ở phần sau. Điểm cuối cùng là kết quả trên bộ benchmark AndroidWorld, mà tác giả tự công bố là hoàn thành tác vụ ở mức 99%+.
Cách hoạt động: từ yêu cầu đến báo cáo chẩn đoán
README mô tả quy trình kiểm thử tự động giữa Antigravity và ARTEMIS qua MCP gồm bốn bước. Bước một là nhập yêu cầu: bạn mô tả kịch bản kiểm thử và các chỉ số mục tiêu trong Antigravity. Bước hai là tạo kế hoạch: công cụ soạn một kế hoạch kiểm thử từng bước cùng kiến trúc để bạn xem lại. Bước ba là thực thi tự động: điều khiển thiết bị thật, đi qua giao diện và đo hiệu năng. Bước bốn là báo cáo cuối: trả về các phát hiện kiểm định có cấu trúc, bảng số liệu và dữ liệu thô.
Điều đáng chú ý là kế hoạch được đưa ra cho con người xem trước khi chạy, và đầu ra là báo cáo có cấu trúc chứ không chỉ là một dòng thông báo thành công hay thất bại. Với người xây agent, đó là kiểu giao diện giữa agent và công cụ mà bạn muốn có: đầu vào bằng ngôn ngữ tự nhiên, đầu ra có thể kiểm tra được.
Cài đặt và dùng thử
Điều kiện đầu tiên là một thiết bị Android đã bật USB Debugging hoặc một máy ảo đang kết nối. Sau đó, script khởi động một chạm của dự án sẽ tự phát hiện và cài các công cụ hệ thống như ADB, scrcpy, FFmpeg cùng các phụ thuộc Python qua uv. Script này có phiên bản cho macOS và Linux, và phiên bản cho Windows PowerShell. README lưu ý PowerShell không tìm file thực thi trong thư mục hiện tại theo mặc định nên phải dùng cú pháp có dấu chấm ở đầu, còn Command Prompt thì dùng tên file trực tiếp.
Script cũng đề nghị cài cấu hình MCP toàn cục và bộ quy tắc Artemis Mobile Testing Mindset vào các IDE có hỗ trợ: Antigravity, Cursor, Claude Code, Codex, Windsurf, VS Code, Cline hoặc Roo, và OpenClaw. Nếu muốn, bạn có thể cấu hình MCP tương tác ngay lần đầu qua lệnh artemis init, và cài lệnh artemis lên toàn máy bằng uv tool install. Sau khi chạy, một giao diện web mở ra trong trình duyệt với trình hướng dẫn kết nối thiết bị, hình chiếu màn hình trực tiếp, vùng thử prompt và phần phát lại quá trình chạy.
Để chạy trực tiếp từ dòng lệnh, README đưa ví dụ lệnh artemis run với yêu cầu mở phần Cài đặt, tìm mục Pin và cho biết mức pin hiện tại, kèm tùy chọn profile flash.
Kết nối với agent qua MCP và bộ quy tắc hành vi
ARTEMIS có sẵn một máy chủ Model Context Protocol bản địa, nên bất kỳ client MCP nào cũng có thể nối điện thoại thật vào cuộc trò chuyện. Cấu hình có thể sinh bằng lệnh artemis mcp với tùy chọn generate-config để in ra đoạn TOML hoặc JSON phù hợp cho Codex, Antigravity hoặc Claude Desktop. Bạn cần thay đường dẫn tới repo và trỏ lệnh tới trình thông dịch Python trong môi trường ảo của mình.
Phần đáng giá không kém là bộ quy tắc hành vi dành cho agent, nằm ở tệp rules.md trong thư mục mcp_server. README gọi nó là tư duy kiểm thử di động, nhằm làm cho trợ lý lập trình hành xử như một kỹ sư kiểm thử cao cấp và không tưởng tượng ra các thao tác giao diện. Nội dung gồm khám phá chủ động trước khi viết mã, chiến lược chọn giữa Flash và Pro, bù trừ độ trễ và thời gian, và mẫu định vị ưu tiên động rồi mới dùng tọa độ dự phòng.
Cách gắn quy tắc phụ thuộc vào công cụ. Với Antigravity, thêm nội dung vào Workspace Rules, Global Rules hoặc chỉ dẫn agent. Với Claude Code, lệnh artemis mcp với tùy chọn install claude cài quy tắc vào thư mục rules của người dùng; README dặn chỉ cài vào đúng một nơi, vì Claude Code nạp cả CLAUDE.md lẫn các tệp trong rules nên cài hai lần chỉ tốn ngữ cảnh. Với Cursor, dùng cursorrules hoặc một tệp quy tắc riêng. Với Codex, thêm vào AGENTS.md. Với Windsurf và OpenClaw, thêm vào quy tắc workspace hoặc prompt hệ thống.
Sau khi nối xong, bạn có thể nhắn trong khung chat của IDE một yêu cầu dài. Ví dụ trong README là build bản mới nhất thành APK, cài lên thiết bị đang nối, mở màn hình đăng nhập bằng tài khoản thử, kiểm tra xem sau đăng nhập có cửa sổ bật lên bất ngờ nào không, và trả về ảnh chụp màn hình trang cuối.
Bốn chế độ sử dụng
README liệt kê bốn cách dùng. Thứ nhất là giao diện web kiểm thử trực quan, chạy bằng lệnh artemis ui, có hình chiếu màn hình thời gian thực, bảng điều khiển tương tác, gửi lệnh kiểm thử bằng ngôn ngữ tự nhiên, telemetry suy luận trực tiếp, quỹ đạo hành động và phát lại; bạn có thể khởi động lại, dừng hoặc xem trạng thái máy chủ từ bất kỳ terminal nào.
Thứ hai là máy chủ MCP, nối Antigravity, Claude Code, Windsurf và các client MCP khác với thiết bị thật để tái hiện lỗi và chạy kiểm thử. Thứ ba là CLI cho nhà phát triển, chạy trực tiếp từ terminal cho các ca kiểm thử tự động, kiểm tra độ ổn định theo kiểu khám phá hoặc benchmark AndroidWorld, với đầu ra có cấu trúc. Thứ tư là Python SDK, dùng như một thư viện chuẩn trong các framework kiểm thử như pytest hoặc trong CI/CD, với đầu ra kiểu Pydantic và hỗ trợ assertion.
Python SDK được mô tả là client không phụ thuộc runtime nào, cài trên máy phát triển; ADB, các agent, mô hình và xử lý ảnh vẫn nằm trên máy chủ giữ thiết bị. Cách chia này có lợi khi bạn muốn đặt điện thoại ở một máy riêng và gọi từ máy khác.
Hai profile: Flash và Pro
Flash là profile nhanh và tiết kiệm token. Đó là vòng lặp phản ứng, thường khoảng 3–5s mỗi bước: một mô hình quan sát màn hình thật, suy nghĩ rồi hành động, không có điều phối theo đồ thị. README cho rằng nó phù hợp với các tác vụ giao diện thường ngày và có tính xác định. Vòng lặp mặc định không giới hạn số lượt, vì lịch sử được nén thay vì bị cắt: ảnh chụp cũ được gấp thành bản tóm tắt thị giác và các bước cũ được chia thành từng giai đoạn có thể gọi lại khi cần, và Flash có thể hỏi bản ghi phiên qua công cụ phân tích video. Giao diện thoáng qua như thanh điều khiển tự mờ hoặc toast được xử lý bằng cách nối nhiều lần chạm thành một chuỗi click.
Hạn chế của Flash theo chính README: không có kế hoạch hay ghi chú, không có lớp an toàn trước khi thực thi, không kiểm tra điểm mốc hay báo cáo cuối, và không có ADB shell.
Pro là quy trình lập kế hoạch và kiểm chứng, khoảng 15–40s mỗi bước, xây như một đồ thị nhiều agent. Planner duy trì một kế hoạch dạng Markdown sống với các cột mốc và mục kiểm tra. Operator thực thi kế hoạch với đầy đủ công cụ, gồm Explorer định vị, ghi chú, gọi lại lịch sử, phân tích video và chẩn đoán ADB. Mức của Explorer là cài đặt của người dùng cho từng profile, agent không tự chọn.
Mọi hành động trong Pro đều đi qua một lớp Safety Net kiểm tra trước khi thực thi, ưu tiên XML và dự phòng bằng điểm ảnh, còn các chuỗi hành động nhanh bắn liên tiếp để vượt độ trễ của lượt mô hình trên giao diện thoáng qua. Một hành động bị chặn hoặc lỗi sẽ mở một sự cố thực thi nằm trong ngữ cảnh của Operator cho đến khi có hành động thành công, nên việc phục hồi do chính Operator đảm nhiệm, không có agent sửa lỗi riêng. Một Checker chỉ đọc xác minh các điểm mốc và rà soát cuối so với mục tiêu ban đầu, với mức kiểm chứng từ off, final (mặc định), checkpoints đến strict. Pro xử lý được quy trình dài từ 100 bước trở lên, giám sát liên tục và báo cáo viết tùy chọn.
Kiến trúc và những gì được cài lên điện thoại
Phần kiến trúc nêu ba ý. Một là kiểm tra trước thực thi và chuỗi hành động nhanh: Pro đối chiếu mục tiêu với cây giao diện và điểm ảnh trước khi gửi từng hành động. Hai là định vị phần tử bằng cách kết hợp cây accessibility, OCR và mô hình thị giác cho các giao diện tự vẽ. Ba là nén lịch sử dùng chung giữa Flash và Pro: ảnh chụp cũ được thay bằng tóm tắt thị giác và các bước đã xong được nén thành những khối lịch sử có thể tìm kiếm, với ngưỡng ngữ cảnh quyết định khi nào lượt thô bị thay thế.
README có một mục riêng về thứ ARTEMIS cài lên điện thoại, và đây là chỗ người dùng nên đọc. Lần chạy đầu tiên trên một thiết bị sẽ cài Artemis Accessibility Helper, một dịch vụ trợ năng nhỏ đọc bố cục màn hình mà không chiếm kết nối UiAutomation. Bạn sẽ thấy một thông báo thu gọn nói rằng trình hỗ trợ kiểm thử đang chạy và một mục mới trong phần cài đặt Trợ năng. README khẳng định dịch vụ này chỉ lắng nghe ngay trên điện thoại và không gửi gì ra nơi khác; đó là tuyên bố của tác giả.
Bạn có thể cài trước để tránh độ trễ khoảng 3 s ở tác vụ đầu tiên, kiểm tra bằng lệnh helper status hoặc doctor, gỡ bất cứ lúc nào bằng helper uninstall, chuyển sang UIAutomator2 qua biến môi trường, hoặc tắt hẳn việc cài tự động. Nếu trình hỗ trợ lỗi giữa chừng, ARTEMIS chuyển sang UIAutomator2 và nói rõ điều đó trong dòng thời gian tác vụ, trạng thái quản lý tác vụ và báo cáo cuối.
Benchmark AndroidWorld: đọc con số cho đúng
README nêu ARTEMIS đạt tỉ lệ hoàn thành 99%+ trên AndroidWorld, bộ benchmark của Google Research gồm hơn 20 ứng dụng và hơn 100 tác vụ nhiều bước, và gắn nhãn SOTA cho kết quả này. Mô tả repo cũng nhắc tỉ lệ thành công 99%+. Đây là số liệu do tác giả tự công bố trong README; bài này không có nguồn độc lập nào để kiểm chứng và không tự tính lại.
Khi dùng con số này để ra quyết định, cần nhớ rằng benchmark đo một tập tác vụ cố định, còn ứng dụng của bạn có giao diện và quy trình riêng. README không nêu cấu hình mô hình, chi phí token hay độ biến thiên giữa các lần chạy cho kết quả đó. Cách tốt nhất vẫn là thử với vài luồng quan trọng của chính ứng dụng bạn.
Dùng ARTEMIS trong workflow AI agent
Trường hợp rõ nhất là vòng lặp phát triển ứng dụng di động có agent tham gia: agent sửa mã, build APK, cài lên máy, mở đúng màn hình, kiểm tra hiện tượng bất thường và gửi lại ảnh chụp. Nhờ MCP, toàn bộ vòng này diễn ra trong cùng cuộc trò chuyện với IDE. Trường hợp thứ hai là tái hiện lỗi: bạn mô tả các bước gây lỗi bằng ngôn ngữ tự nhiên và để công cụ chạy lại trên thiết bị thật, thu Logcat đi kèm.
Trường hợp thứ ba là đưa vào pipeline kiểm thử hiện có thông qua Python SDK trong pytest hoặc CI/CD. Ở đây đầu ra có kiểu và assertion giúp kết quả của agent trở thành một bước kiểm tra tự động bình thường. Đây là các kịch bản suy ra từ những chế độ README mô tả, không phải quy trình do tác giả công bố.
Giới hạn và lộ trình
README hiện chỉ nhắm Android: hỗ trợ iOS nằm trong lộ trình dưới dạng việc chưa làm. Các mục lộ trình khác gồm plugin tích hợp Android Studio để gỡ lỗi và ghi kiểm thử ngay trong trình soạn thảo, mô hình thị giác nhẹ chạy trên thiết bị cho tự động hóa độ trễ thấp và ưu tiên riêng tư, và tương tác giọng nói song công theo thời gian thực.
Về vận hành, cần lưu ý Flash không có lớp an toàn trước thực thi, nên với tác vụ có hậu quả như thanh toán hay xóa dữ liệu, Pro phù hợp hơn. README cũng không trình bày chi tiết về việc giữ an toàn cho tài khoản thật khi agent thao tác, hay cách giới hạn quyền của agent trên điện thoại; hãy dùng thiết bị hoặc tài khoản thử. Cuối cùng, vì công cụ cài một dịch vụ trợ năng, hãy cân nhắc chính sách của tổ chức trước khi dùng trên máy dùng chung.
Kết luận: khi nào nên và không nên dùng
ARTEMIS đáng thử nếu bạn phát triển ứng dụng Android và muốn agent lập trình tự kiểm chứng thay đổi trên thiết bị thật, hoặc muốn tạo kiểm thử giao diện bằng ngôn ngữ tự nhiên thay vì viết script định vị phần tử. Nó cũng hợp với đội muốn một giao diện MCP chuẩn cho điện thoại để nhiều agent khác nhau dùng chung.
Chưa nên dùng nếu sản phẩm của bạn chủ yếu trên iOS, nếu bạn cần một cam kết độc lập về độ tin cậy, hoặc nếu chính sách của tổ chức không cho phép cài dịch vụ trợ năng lên thiết bị kiểm thử. Cách bắt đầu hợp lý là dùng máy ảo, chạy profile flash với một tác vụ đơn giản, rồi chuyển sang pro cho các luồng quan trọng.
Bài do AI viết tự động từ README và dữ liệu GitHub API của repo, có kiểm tra tự động nhưng không có người duyệt từng câu. Báo sai sót qua email.