Astra Scout hoạt động thế nào
Xem app macOS, server cục bộ và driver device phối hợp với nhau thế nào trên máy Mac.
Astra Scout gồm bốn phần, tất cả chạy trên máy Mac. Các mục bên dưới trả lời "app có gửi dữ liệu đi đâu không?" và "file log nằm ở đâu?".
- App là cửa sổ đang dùng.
- Server là chương trình chạy ngầm, do app bật. Server giữ kết nối với device, chạy flow và lưu lịch sử.
- Runner bấm và gõ trên device theo từng step của flow.
- AI CLI (Claude Code, Codex hoặc Gemini CLI), khi dùng tính năng AI. AI CLI chỉ đọc, không quyết định kết quả test.
App
App là app macOS native. Cho tới khi mở một workspace, cửa sổ Chào mừng đến với Astra Scout thay cho cửa sổ chính. Cửa sổ chính gồm:
- các navigator bên trái: File, Test run, Cây phần tử và Tìm,
- trợ lý AI, là chế độ thứ hai của cùng thanh bên trái,
- trình soạn thảo code ở giữa, với Runner bên dưới,
- một inspector bên phải có màn hình device.

Cài đặt, Khám phá app, Tracking, Cài đặt dự án và cửa sổ Mirror tách rời là các cửa sổ riêng. Báo bug (Device → Báo bug lên Jira…) mở dưới dạng sheet trên cửa sổ chính. App tự khởi động server đi kèm.

Server
Server là chương trình nền của Astra Scout. Server quản lý kết nối device, chạy flow, lưu lịch sử run, và cho phép AI CLI điều khiển Astra Scout qua MCP.
Muốn xem các AI CLI kết nối tới server thế nào:
- Chọn Astra Scout → Cài đặt… và bấm AI.
- Trong Astra Scout cho CLI, mở Kết nối MCP và Môi trường shell. Hai trang này hiển thị kết nối. Xem Plugin scout.

Có hai loại request phải chờ xác nhận. Báo cáo bug gửi lên Jira và request xoá lịch sử mua hàng của một sandbox tester đều mở hộp thoại xác nhận trong app. Không có gì được gửi cho tới khi người dùng cho phép. Nếu đóng hộp thoại, hoặc sau 10 phút, request được tính là bị từ chối.
Runner
Runner bấm, gõ và vuốt trên device. Với iOS, runner dùng WebDriverAgent (WDA), một app nhỏ chạy bên trong iOS device hoặc simulator để nhận lệnh. Với Android, runner dùng driver DeviceLab. Lần đầu một device iOS kết nối, Astra Scout build WDA. Các lần kết nối sau dùng lại bản build đó.
Mirror màn hình
Mirror hiện màn hình device ngay trong cửa sổ Astra Scout, để nhìn và bấm trực tiếp. Cách màn hình đến app khác nhau theo loại device:
| Device | Màn hình đến app bằng cách nào |
|---|---|
| iOS Simulator | App tự vẽ lại màn hình simulator ngay trong tiến trình của nó (qua SimulatorKit của Xcode) |
| iOS device | Luồng video của Apple (CoreDevice), qua cáp hoặc Wi-Fi |
| Android | Luồng video H.264 (dựa trên scrcpy), dự phòng bằng ảnh chụp màn hình liên tục |
Dữ liệu của bạn nằm ở đâu
| Nội dung | Vị trí |
|---|---|
| Log của server (trống lại mỗi lần mở app) | ~/Library/Logs/Astra Scout/server.log, hoặc Help → Xem log server |
| Dữ liệu app (database, MCP token, Team ID) | ~/Library/Application Support/Astra Scout/data |
| Các bản build WDA | ~/Library/Application Support/Astra Scout/maestro-runner |
| Video của flow | <workspace>/artifacts/runs/ |
| Bản sao plugin dùng cho AI CLI | ~/.astra-scout/plugin |
Astra Scout không có cloud riêng và không có telemetry. Đăng nhập bằng Google để app biết người dùng được phép dùng. Ngoài ra, các kết nối mạng duy nhất ra ngoài máy là:
- AI CLI nói chuyện với nhà cung cấp của nó,
- Jira, khi báo cáo bug được xác nhận,
- Amplitude, khi một project Amplitude được thiết lập cho tracking,
- App Store Connect API, khi dùng sandbox tester,
- việc kiểm tra bản cập nhật của bản release (Cài đặt → Chung → Tự động kiểm tra bản cập nhật).
Kết luận do app tính
AI không bao giờ quyết định một run pass hay không. Astra Scout tính kết luận (verdict) từ các dữ kiện có cấu trúc như kết quả từng step và error của driver. Xem Chạy flow.
Chi tiết kỹ thuật
Sơ đồ các thành phần:
astra-scout-serverlà server Go lắng nghe ở cổng 5050, cung cấp API cục bộ (gồm endpoint cho AI, Jira và tracking) và endpoint MCPhttp://localhost:5050/mcp.- Nếu cổng 5050 đang bận, app khởi động server ở cổng khác và ghi URL thật vào
~/.astra-scout/mcp.json. - Flow chạy qua maestro-runner, bản fork của runner Maestro.
- Trên iOS Simulator, input đi qua
devicehid; cây phần tử đọc quaxcuiax(simulator iOS 27+).
